Kiến trúc hệ thốngBộ cân bằng tải (Load Balancer)

Bộ cân bằng tải (Load Balancer)

Nội dung bài

Bộ cân bằng tải (Load Balancer)

Chủ đề13 phút đọcThe System Design Primer - mục "Load balancer"

Mục lục
  1. Nội dung gốc
  2. Ghi chú của người dịch

Bộ cân bằng tải (Load Balancer)

Nội dung gốc

Sơ đồ bộ cân bằng tải phân phối request tới nhiều máy chủ
Nguồn: Scalable system design patterns

Bộ cân bằng tải (load balancer) phân phối các request đến từ client tới các tài nguyên tính toán như máy chủ ứng dụng và cơ sở dữ liệu. Trong mỗi trường hợp, bộ cân bằng tải trả phản hồi từ tài nguyên tính toán về đúng client. Bộ cân bằng tải hiệu quả trong việc:

Load balancer loại máy chủ không khỏe khỏi vòng chia tải LB Server 1 Server 2 (tạm nghỉ) Server 3 request health check lỗi → loại tạm thời
Health check định kỳ dò từng máy chủ; máy không trả lời đúng bị tạm loại khỏi vòng chia tải cho tới khi khỏe lại.

Bộ cân bằng tải có thể được hiện thực bằng phần cứng (đắt đỏ) hoặc bằng phần mềm như HAProxy.

Các lợi ích bổ sung gồm:

Để phòng sự cố, người ta thường dựng nhiều bộ cân bằng tải, theo chế độ chủ động - bị động (active-passive) hoặc chủ động - chủ động (active-active).

Bộ cân bằng tải có thể định tuyến lưu lượng dựa trên nhiều tiêu chí, gồm:

Cân bằng tải tầng 4 (Layer 4 load balancing)

Bộ cân bằng tải tầng 4 xem thông tin ở tầng giao vận (transport layer) để quyết định cách phân phối request. Thông thường, việc này dựa trên địa chỉ IP nguồn, IP đích và các cổng (port) trong phần đầu (header), chứ không dựa trên nội dung của gói tin. Bộ cân bằng tải tầng 4 chuyển tiếp các gói tin mạng tới và từ máy chủ upstream, thực hiện biên dịch địa chỉ mạng (Network Address Translation - NAT).

Cân bằng tải tầng 7 (Layer 7 load balancing)

Bộ cân bằng tải tầng 7 xem xét tầng ứng dụng (application layer) để quyết định cách phân phối request. Việc này có thể liên quan tới nội dung của header, thông điệp và cookie. Bộ cân bằng tải tầng 7 kết thúc (terminate) lưu lượng mạng, đọc thông điệp, đưa ra quyết định cân bằng tải, rồi mở một kết nối tới máy chủ được chọn. Ví dụ, một bộ cân bằng tải tầng 7 có thể chuyển lưu lượng video tới các máy chủ lưu trữ video, trong khi chuyển lưu lượng thanh toán nhạy cảm của người dùng tới các máy chủ đã được gia cố bảo mật.

Phải hy sinh sự linh hoạt, nhưng bù lại cân bằng tải tầng 4 tốn ít thời gian và tài nguyên tính toán hơn tầng 7, dù ảnh hưởng về hiệu năng có thể rất nhỏ trên phần cứng phổ thông hiện đại.

Tầng 4 chuyển cả kết nối, tầng 7 định tuyến theo URL Tầng 4 Client LB Server chỉ xem IP + cổng → chuyển nguyên kết nối Tầng 7 Client LB Server A Server B /api /img
Tầng 4 chỉ thấy IP/cổng nên chuyển cả kết nối tới một máy chủ; tầng 7 đọc được URL/header nên định tuyến từng request theo nội dung.

Mở rộng theo chiều ngang (Horizontal scaling)

Bộ cân bằng tải cũng hỗ trợ mở rộng theo chiều ngang, cải thiện hiệu năng và tính sẵn sàng. Mở rộng ra (scale out) bằng các máy phổ thông tiết kiệm chi phí hơn và cho tính sẵn sàng cao hơn so với nâng cấp (scale up) một máy chủ duy nhất lên phần cứng đắt tiền hơn, gọi là mở rộng theo chiều dọc (vertical scaling). Tuyển người làm việc với phần cứng phổ thông cũng dễ hơn so với các hệ thống doanh nghiệp chuyên dụng.

Nhược điểm: mở rộng theo chiều ngang

Nhược điểm: bộ cân bằng tải

Nguồn và đọc thêm


Nguồn: The System Design Primer - mục "Load balancer" — Donne Martin và cộng đồng đóng góp

Giấy phép: CC BY 4.0 (nguyên bản: Donne Martin, The System Design Primer)

Xem bản gốc

Bài tiếp theoProxy ngược (Reverse Proxy - máy chủ web)