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:
Ngăn request đi tới các máy chủ không khỏe (unhealthy)
Ngăn tài nguyên bị quá tải
Giúp loại bỏ điểm lỗi đơn (single point of failure)
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:
Kết thúc SSL (SSL termination) - Giải mã request đến và mã hóa phản hồi của máy chủ, để các máy chủ phía sau (backend) không phải thực hiện những thao tác có thể tốn kém này
Duy trì phiên (session persistence) - Cấp cookie và định tuyến các request của một client cụ thể tới cùng một instance, nếu ứng dụng web không tự theo dõi phiên
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 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
Mở rộng theo chiều ngang làm tăng độ phức tạp và đòi hỏi nhân bản (clone) máy chủ
Máy chủ nên không trạng thái (stateless): không chứa bất kỳ dữ liệu nào liên quan tới người dùng như phiên (session) hay ảnh đại diện
Phiên có thể được lưu trong một kho dữ liệu tập trung như cơ sở dữ liệu (SQL, NoSQL) hoặc một cache bền vững (Redis, Memcached)
Các máy chủ phía dưới (downstream) như cache và cơ sở dữ liệu phải xử lý nhiều kết nối đồng thời hơn khi các máy chủ phía trên (upstream) mở rộng ra
Nhược điểm: bộ cân bằng tải
Bộ cân bằng tải có thể trở thành nút thắt cổ chai về hiệu năng nếu không đủ tài nguyên hoặc không được cấu hình đúng.
Việc thêm bộ cân bằng tải để giúp loại bỏ điểm lỗi đơn lại làm tăng độ phức tạp.
Một bộ cân bằng tải duy nhất chính là một điểm lỗi đơn; cấu hình nhiều bộ cân bằng tải lại càng tăng thêm độ phức tạp.