Load Balancing là gì? Lợi ích và Cơ chế hoạt động của Load Balancing

Load balancing (cân bằng tải) không còn là một thuật ngữ xa lạ trong lĩnh vực System.Bài viết này sẽ hệ thống lại một số điểm đặc trưng và cơ bản của load balancing. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.

I. Khái niệm

Trong bối cảnh các hệ thống lớn phải xử lý hàng trăm, hàng ngàn…lượt truy cập đồng thời từ phía người dùng, sau đó phản hồi lại kết quả (text, hình ảnh, video…) một cách chính xác nhất, việc mở rộng hệ thống bằng cách triển khai thêm server là điều thường thấy. Điều này kéo theo việc phải có một phương pháp giúp phân phối lượng truy cập trên tới tất cả các server một cách hợp lý để tối ưu hóa tốc độ xử lý, cũng như không để một server bất kỳ bị quá tải dẫn đến giảm performance của toàn hệ thống => Load balancing ra đời

Load balancing là một phương pháp dùng để phân phối traffic đầu vào một cách hiệu quả đến các server đầu cuối (backend), và nhóm các backend này được gọi là server farm hoặc server pool.

Khi một server bất kỳ trong pool bị tèo, load balancer sẽ có nhiệm vụ chuyển hướng traffic đến các backend còn sống khác trong pool. Tương tự, khi có một backend mới được thêm vào pool, load balancer sẽ tự động đẩy traffic tới backend đó.

Cần phân biệt một số khái niệm sau:

_ Load balancing: là concept, là phương pháp.

_ Load balancer: là đối tượng thực hiện việc cân bằng tải, có thể là một server, một thiết bị chuyên dụng…không có chức năng xử lý request, chỉ có nhiệm vụ phân phối request tới các backend.

_ Backend server: là server đầu cuối, nơi sẽ xử lý các request đi vào.

_ Server farm / server pool: tập hợp nhiều backend.

II. Lợi ích của Load balancing

_ Phân phối request của người dùng một cách hiệu quả đến nhiều backend, từ đó giúp giảm tải lượng công việc phải thực hiện trên mỗi backend.

_ Đảm bảo tính sẵn sàng cao (high availability) và độ tin cậy (reliability) bằng việc chỉ gửi request tới các backend đang online. Từ đó giảm thiểu downtime khi một backend gặp sự cố.

_ Tăng tính linh hoạt của toàn hệ thống khi có thể thêm hoặc bớt backend bất cứ lúc nào.

_ Tăng tính bảo mật của hệ thống vì các backend lúc này thường sẽ nằm trong vùng DMZ (DeMilitary Zone – tạm hiểu là không được public), người dùng khi kết nối đến hệ thống là chỉ đang kết nối đến load balancer thay vì trực tiếp đến các backend.

III. Cơ chế hoạt động

Khi một request được gửi đến hệ thống, request đó sẽ đến load balancer, tùy vào thuật toán đang được cấu hình trên load balancer mà request đó sẽ được chuyển đến các backend phù hợp để được xử lý. Sau khi được xử lý hoàn tất, response từ backend sẽ trả ngược về load balancer và về tới người dùng.

Load balancer xác định một backend có đang online hay không bằng một thao tác gọi là Health check. Sau một khoảng thời gian nhất định, load balancer sẽ gửi tín hiệu tới các backend để kiểm tra xem backend có còn đang hoạt động hay không. Nếu backend không phản hồi thì load balancer sẽ loại bỏ backend đó ra khỏi pool. Tùy vào phần mềm / phần cứng dùng làm load balancer mà ta có thể quy định tần suất gửi health check đến backend.

Một số thuật toán load balancing phổ biến:

  • Round robin: là thuật toán luân chuyển theo vòng. Các backend sẽ có độ ưu tiên ngang nhau, request sẽ được chia đều cho tất cả backend theo vòng.
  • Weighted round robin: giống với round robin nhưng mỗi backend sẽ có thêm trọng lượng (weight), quy định độ ưu tiên để nhận request. Ví dụ: có 03 backend A, B, C với weight lần lượt là 4 – 4 – 2. Vậy với 10 request đi vào thì backend A nhận 4 request, B nhận 4 request, C chỉ nhận 2 request. Việc xác định weight thường phụ thuộc vào cấu hình tài nguyên của mỗi backend, backend có tài nguyên lớn hơn, được sử dụng thường xuyên hơn thì sẽ có weight lớn hơn.
  • Least Connection: là thuật toán dựa vào lượng truy cập hiện có trên mỗi backend. Load balancer sẽ lựa chọn  backend đang xử lý ít request nhất để đẩy traffic về.
  • IP hash (một số ứng dụng khác còn có tên là Source): là thuật toán dựa vào IP nguồn (IP phía người dùng) để phân phối traffic tới backend. Ví dụ dễ hiểu là IP nguồn có octet cuối là số lẻ thì về backend lẻ, chẵn thì về backend chẵn…
  • Và nhiều thuật toán khác…

IV. Một số phần mềm load balancing

Linux:

  • Haproxy: http://www.haproxy.org/
  • Nginx: https://www.nginx.com/
  • LVS: http://www.linuxvirtualserver.org/

Windows:

  • Network load balancing: https://docs.microsoft.com/en-us/windows-server/networking/technologies/network-load-balancing

Bên trên là các phần mềm thông dụng có thể dùng trong phần lớn các yêu cầu triển khai load balancing. Anh em nếu rảnh thì đọc qua, không rảnh cũng đọc qua để biết thêm và làm quen nhé.

Was this article helpful?