- vừa được xem lúc

System Design: Load Balancer Là Gì? Các Giải Pháp Load Balancing Phổ Biến

0 0 1

Người đăng: Anh Tuan

Theo Viblo Asia

Trong thế giới hiện đại, nơi mà hiệu suất, độ sẵn sàng và khả năng mở rộng là tiêu chí sống còn cho mọi hệ thống, Load Balancer (bộ cân bằng tải) đã trở thành một khối xây dựng nền tảng trong kiến trúc phần mềm. Từ các hệ thống microservices nhỏ đến nền tảng cloud toàn cầu, load balancer đóng vai trò trung gian quan trọng giúp đảm bảo hệ thống không bị quá tải, vẫn đáp ứng tốt khi có sự cố và hoạt động mượt mà cho hàng triệu người dùng đồng thời.

Bài viết này sẽ cung cấp cho bạn cái nhìn toàn diện về Load Balancing – từ nguyên lý hoạt động cơ bản đến các hình thức triển khai hiện đại như GSLB (Global Server Load Balancing). Chúng ta sẽ cùng phân tích các đặc tính kỹ thuật, ưu nhược điểm, và các giải pháp mã nguồn mở cũng như cloud phổ biến.

1. Load Balancer Là Gì? Vì Sao Cần?

Load Balancer là thành phần đóng vai trò trung gian giữa client và backend, giúp phân phối lưu lượng một cách thông minh đến nhiều server khác nhau trong một nhóm (cluster).

Lợi ích cốt lõi:

  • Ẩn topology backend khỏi client.

  • Tăng khả năng mở rộng ngang (horizontal scalability).

  • Giảm thiểu downtime khi bảo trì.

  • Phân phối đồng đều tải, tránh bottleneck.

Khi không có load balancer, client phải biết chính xác danh sách địa chỉ IP backend → làm tăng coupling và khó mở rộng/dàn trải traffic linh hoạt.

2. Các Thuộc Tính Chất Lượng Cốt Lõi của Load Balancer

Một bộ cân bằng tải không chỉ đơn thuần phân phối lưu lượng – nó còn mang lại nhiều thuộc tính chất lượng quan trọng cho hệ thống. Dưới đây là các đặc điểm chính:

🔄 Scalability (Khả năng mở rộng) Load balancer cho phép hệ thống dễ dàng mở rộng theo chiều ngang bằng cách thêm hoặc gỡ bỏ các node backend theo nhu cầu thực tế, đặc biệt hữu ích trong môi trường cloud với autoscaling.

✅ Availability (Tính sẵn sàng cao) Thông qua cơ chế kiểm tra sức khỏe (health check), load balancer có thể tự động loại bỏ các node không phản hồi khỏi vòng quay, đảm bảo người dùng luôn được phục vụ bởi các máy chủ hoạt động ổn định.

🛠️ Maintainability (Khả năng bảo trì) Cho phép thực hiện nâng cấp hoặc thay thế từng máy chủ riêng lẻ mà không gây gián đoạn dịch vụ – một yếu tố quan trọng trong quy trình rolling update hoặc triển khai không downtime.

📈 Throughput (Thông lượng cao) Bằng cách phân chia tải đồng đều giữa nhiều máy chủ, hệ thống có thể xử lý nhiều yêu cầu hơn trong cùng một đơn vị thời gian – từ đó cải thiện năng lực phục vụ tổng thể.

🧱 Fault Isolation (Cô lập sự cố) Khi một node gặp lỗi, load balancer có thể định tuyến lưu lượng tránh xa node đó, giúp ngăn sự cố lan rộng và giữ ổn định cho phần còn lại của hệ thống.

3. Các Giải Pháp Load Balancing Phổ Biến

Trong thiết kế hệ thống phân tán hiện đại, việc lựa chọn giải pháp load balancing phù hợp đóng vai trò then chốt để đảm bảo hiệu năng, tính sẵn sàng và khả năng mở rộng. Dưới đây là ba nhóm giải pháp phổ biến:

3.1. Cân Bằng Tải Dựa Trên DNS

Mô hình hoạt động: DNS trả về một danh sách địa chỉ IP tương ứng với nhiều instance backend. Thứ tự trả về có thể thay đổi luân phiên (round-robin) giúp phân phối tải.

Ưu điểm:

Dễ triển khai, chi phí gần như bằng không.

Phù hợp với hệ thống nhỏ hoặc các nhu cầu phân phối đơn giản.

Hạn chế:

Không theo dõi trạng thái của server → vẫn gửi request đến máy đã "chết".

Không hỗ trợ cân bằng tải dựa trên hiệu suất thực tế (load, latency).

Phơi bày IP thật của backend → rủi ro bảo mật.

Bị ảnh hưởng bởi cache DNS và TTL → phản ứng chậm với thay đổi.

3.2. Cân Bằng Tải Phần Mềm & Phần Cứng

✅ Load Balancer Phần Cứng Thiết bị chuyên dụng (ví dụ: F5, Cisco, Citrix NetScaler), được tối ưu hoá về mặt hiệu năng để xử lý lưu lượng lớn với độ trễ thấp.

✅ Load Balancer Phần Mềm Chạy trên máy chủ phổ thông, linh hoạt và dễ triển khai (VD: NGINX, HAProxy, Envoy, Traefik).

Ưu điểm chung:

Giấu toàn bộ topology backend khỏi client → tăng bảo mật.

Hỗ trợ health checks → loại bỏ server lỗi khỏi vòng quay.

Có thể định tuyến dựa trên CPU, session, latency, request count,...

Dễ tích hợp vào các nền tảng như Kubernetes hoặc hệ thống autoscaling.

Ứng dụng điển hình:

Là reverse proxy cho các web service.

Phân phối request đến backend API hoặc các microservice.

Là lớp trung gian giao tiếp giữa các dịch vụ nội bộ.

3.3. Cân Bằng Tải Toàn Cầu (GSLB – Global Server Load Balancer)

GSLB là sự kết hợp giữa DNS thông minh và load balancing phân tán theo địa lý, thường được dùng trong hệ thống đa vùng (multi-region / multi-cloud).

Cách hoạt động:

GSLB trả về IP của data center gần nhất hoặc có hiệu năng tốt nhất.

Định tuyến dựa trên IP client, độ trễ, tình trạng trung tâm dữ liệu,...

Ưu điểm:

Tối ưu trải nghiệm người dùng toàn cầu.

Tăng tính sẵn sàng, hỗ trợ disaster recovery.

Cho phép cấu hình routing phức tạp: geo-based, latency-based, weighted,...

Ứng dụng điển hình:

Các hệ thống global như CDN, mạng xã hội, e-commerce toàn cầu.

Kiến trúc hybrid/multi-cloud.

So sánh

4. Các Giải Pháp Cân Bằng Tải Mã Nguồn Mở & AWS

Trong môi trường hiện đại, doanh nghiệp có thể lựa chọn triển khai giải pháp cân bằng tải theo hai hướng: mã nguồn mở để kiểm soát linh hoạt hạ tầng và chi phí, hoặc dịch vụ đám mây như AWS Elastic Load Balancing để tối ưu vận hành và tự động hoá. Dưới đây là phân tích cụ thể từng loại:

4.1. Giải Pháp Mã Nguồn Mở

🔹 HAProxy (High Availability Proxy)

Loại: Load balancer tầng TCP & HTTP

Tính năng nổi bật:

Hỗ trợ cân bằng tải theo round-robin, least connections, và weighted.

Health check chủ động, hỗ trợ SSL termination.

Phân tích chi tiết lưu lượng với metrics, log nâng cao.

Ưu điểm:

Cực kỳ ổn định và hiệu suất cao.

Được sử dụng bởi nhiều hệ thống có lượng truy cập lớn (Stack Overflow, Reddit, GitHub).

Nhược điểm:

Cần cấu hình tay, có thể phức tạp với người mới.

Use case: Làm proxy frontend hoặc API Gateway, phù hợp cho microservices và hệ thống tự quản lý.

🔹 NGINX

Loại: Reverse proxy HTTP + TCP/UDP Load Balancer

Tính năng nổi bật:

Cân bằng tải tầng 4 & 7, hỗ trợ static file, SSL, gzip...

Dễ dàng tích hợp với dịch vụ web, hỗ trợ HTTP2, WebSocket.

Có phiên bản NGINX Plus thương mại với nhiều tính năng nâng cao (dynamic config, monitoring).

Ưu điểm:

Dễ dùng, cấu hình đơn giản.

Hiệu suất cao, phổ biến rộng rãi.

Nhược điểm:

Phiên bản OSS thiếu một số tính năng như dashboard, autoscaling động.

Use case: Reverse proxy cho web/app server, CDN edge, microservice ingress.

🔹 Envoy Proxy

Loại: Layer 7 proxy hiện đại, được dùng bởi Istio, Consul...

Ưu điểm:

Native support cho service mesh, metrics, tracing.

Dynamic routing, TLS, retries, rate limiting.

Use case: Hệ thống cần observability cao, service discovery động.

4.2. AWS Elastic Load Balancing (ELB)

Nếu bạn sử dụng AWS, Elastic Load Balancing là lựa chọn tích hợp chặt chẽ, mạnh mẽ và hỗ trợ mở rộng tự động. AWS ELB cung cấp nhiều loại để đáp ứng các lớp hạ tầng khác nhau:

🔸 Application Load Balancer (ALB) – Layer 7

Routing thông minh theo path, host, header, query string.

Hỗ trợ container (ECS, EKS), SSL offloading, WebSocket.

Tích hợp với WAF, CloudWatch, Auto Scaling.

Use case: Ứng dụng web, microservices, REST API, GraphQL.

🔸 Network Load Balancer (NLB) – Layer 4

Tối ưu TCP/UDP, latency cực thấp, throughput cao.

Hỗ trợ IP target, TLS, static IP.

Use case: Dịch vụ backend, game server, VPN gateway.

🔸 Gateway Load Balancer (GWLB)

Chuyên dùng để triển khai network appliances (firewall, IDS).

Hỗ trợ inline traffic inspection.

🔸 Classic Load Balancer (CLB)

Phiên bản cũ hỗ trợ layer 4 & 7 nhưng không còn được khuyến nghị cho hệ thống mới.

So sánh nhanh

5. Khi Nào Chọn Giải Pháp Mã Nguồn Mở?

Bạn muốn tối ưu chi phí hạ tầng, không phụ thuộc vendor.

Cần custom theo yêu cầu riêng.

Có đội DevOps vận hành tốt.

6. Khi Nào Dùng ELB?

Đang dùng hệ sinh thái AWS.

Ưu tiên tính ổn định, bảo trì thấp.

Cần autoscaling, bảo mật tích hợp sẵn (WAF, IAM).

✅ Kết Luận

Cân bằng tải (Load Balancing) là một trong những thành phần thiết yếu và không thể thiếu trong kiến trúc hệ thống quy mô lớn. Dù hệ thống của bạn triển khai on-premises, hybrid hay thuần đám mây, load balancer luôn đóng vai trò là "cửa ngõ thông minh", đảm bảo:

Phân phối tải hiệu quả giữa nhiều máy chủ,

Tăng khả năng mở rộng và tính sẵn sàng cao (High Availability),

Cô lập và xử lý lỗi nhanh chóng,

Tăng cường khả năng bảo trì và thay thế linh hoạt, mà không ảnh hưởng đến người dùng cuối.

Bài viết đã đi qua:

Các thuộc tính chất lượng quan trọng mà load balancer mang lại,

Phân loại DNS-based, phần mềm, phần cứng, và GSLB,

Các công cụ mã nguồn mở như HAProxy, NGINX, Envoy,

Và giải pháp chuyên nghiệp từ AWS Elastic Load Balancing.

Việc chọn giải pháp nào phụ thuộc vào ngữ cảnh hệ thống, đội ngũ vận hành, ngân sách, và mức độ tự động hóa mong muốn. Với kiến thức và công cụ phù hợp, load balancer không chỉ là bộ phân phối lưu lượng mà còn là trụ cột đảm bảo hiệu năng, độ tin cậy và khả năng thích ứng linh hoạt cho mọi kiến trúc hiện đại.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Một số thuật toán sắp xếp trong c++

Đứa em mình mới đi phỏng vấn và được hỏi về một số thuật toán sắp xếp và có một một số thuật toán em mình không nhớ, nên là mình làm bài viết này để viết bài về thuật toán sắp xếp để mình cũng ôn lại

0 0 27

- vừa được xem lúc

Unlock bộ đồ nghề của anh em lên +8 với SQL Window Functions (#1)

Trong làn gió của mùa hè năm nay, chúng ta lại một lần nữa được chứng kiến sức mạnh của sự đoàn kết và sự phát triển của cộng đồng VIBLO. Với lòng nhiệt huyết và sự hỗ trợ không ngừng từ nhà tài trợ u

0 0 14