Các concept, thuật ngữ của dịch vụ Load Balancer#

Để sử dụng dịch vụ Load Balancer, người dùng cần hiểu rõ các thuật ngữ sau:

Member và group#

Member là khái niệm để chỉ các máy chủ (Virtual Machine). Group Member là chỉ một nhóm gồm nhiều máy chủ, Load Balancer sẽ sử dụng các thuật toán phân phối tải để quyết định cách phân chia lưu lượng truy cập giữa các member giúp tránh tình trạng quá tải cho một máy chủ cụ thể và tăng khả năng mở rộng của hệ thống.

Các Group Member thường được cấu hình với các thông số trọng số (weight) để xác định mức độ ưu tiên nhận tải của mỗi thành viên trong quá trình phân phối , và một số thông số health monitor (health check) để đảm bảo rằng chỉ những member đang hoạt động bình thường sẽ nhận được lưu lượng.

“Weight” là trọng số cho thấy khả năng xử lý lượng request của mỗi member. Mỗi máy chủ được đánh giá bằng một số nguyên (giá trị trọng số Weight – mặc định giá trị là 1). Một server có khả năng xử lý gấp đôi server khác sẽ được đánh số lớn hơn và nhận được số request gấp đôi từ bộ cân bằng tải. Ví dụ: Server 1 có khả năng xử lý gấp 5 lần Server 2. Chúng ta sẽ đánh “Weight = 5” cho server 1 và “Weight = 1” cho server 2

Thuật toán#

Các thuật toán về “Cân bằng tải” là tính năng chính của dịch vụ Load Balancer. Nó là một quá trình nhận request từ các listener và phân phối chúng cho các member theo các thuật toán đã được thiết lập.

Hiện tại, Load Balancer của Sunteco hỗ trợ các thuật toán cân bằng tải như sau:

Round robin: Là thuật toán điều phối vòng tròn, các máy chủ sẽ được xem ngang hàng và sắp xếp theo một vòng tròn. Các truy vấn dịch vụ sẽ lần lượt được gửi tới các máy chủ theo thứ tự sắp xếp.

Least connections: Các requests sẽ được chuyển vào server có ít kết nối nhất trong hệ thống. Thuật toán này được coi như thuật toán động, vì nó phải đếm số kết nối đang hoạt động của server.

Source IP: Thuật toán xác định kết nối chính xác từ một IP của máy khách sẽ được kết nối server trước đó. Thuật toán này cho phép các kết nối có ràng buộc giữa client và server(ví dụ cookies hoặc session) có thể hoạt động ổn định.

Listener#

Trong hệ thống cân bằng tải, một listener là một thành phần quan trọng để “lắng nghe, nhận diện” các yêu cầu đến từ client và chuyển tiếp chúng đến các máy chủ back-end (các member) để đảm bảo phân phối lưu lượng truy cập hiệu quả. Khi một yêu cầu đến từ khách hàng, listener nhận nó thông qua một cổng (port) cụ thể và giao thức tương ứng, chẳng hạn như HTTP (cổng 80) hoặc HTTPS (cổng 443).

Các thông số để cài đặt cho Listener bao gồm:

  • Name: Tên của listener để người dùng phân biệt được listener này với listener khác. Khi tạo listener, hệ thống đã default tên của listener là: “default-listener”, người dùng có thể edit lại tên này.

  • Description: Mô tả lại listener theo ý muốn của người dùng

  • Protocol: Tập hợp các quy tắc được thiết lập nhằm xác định cách để định dạng, truyền và nhận dữ liệu sao cho các thiết bị mạng máy tính các thiết bị mạng máy tính - từ server và router tới endpoint - Có thể giao tiếp với nhau. Hiện tại, Sunteco hỗ trợ các protocol như sau: http, https, tcp.

  • Port: Người dùng chọn protocol nào, hệ thống sẽ tự động default giá trị port tương ứng, người dùng có thể sửa lại thông số này.

Các chức năng quan trọng của một listener trong hệ thống cân bằng tải bao gồm:

  1. Nghe các yêu cầu từ khách hàng thông qua các cổng và giao thức đã được cấu hình.

  2. Xác định loại yêu cầu và thông tin liên quan để đưa ra quyết định về cách xử lý yêu cầu.

  3. Chuyển tiếp yêu cầu đến các máy chủ back-end hoặc các máy chủ ứng dụng phù hợp dựa trên thuật toán cân bằng tải được cấu hình.

  4. Nhận phản hồi từ máy chủ back-end và chuyển tiếp phản hồi đó trở lại cho khách hàng gửi yêu cầu ban đầu.

Load Balancer Topology#

Load Balancer Topology (cấu trúc hay mô hình cân bằng tải) là một thuật ngữ được sử dụng để chỉ các kiểu kiến trúc và tổ chức của Load Balancer. Nó mô tả cách mà các thành phần của hệ thống cân bằng tải được kết nối và tương tác với nhau để phân phối lưu lượng truy cập.

Có một số kiểu cơ bản trong Load Balancer Topology, bao gồm:

  • Single: Trong mô hình này, chỉ có một Load Balancer duy nhất được triển khai. Nó nhận các yêu cầu từ các khách hàng và phân phối chúng đến các máy chủ back-end (các member). Mô hình này đơn giản và dễ triển khai, nhưng đồng thời cũng có hạn chế về khả năng mở rộng và độ tin cậy.

  • Active-Standby : Mô hình này có hai Load Balancer hoạt động song song: một làm việc chính (active), và một làm việc dự phòng (standby). Load Balancer active nhận các yêu cầu từ khách hàng và phân phối chúng, trong khi Load Balancer standby duy trì một bản sao đồng bộ và sẵn sàng tiếp quản nếu Load Balancer active gặp sự cố. Hai Load Balancer này sẽ được kết nối với nhau mục đích để mỗi Load Balancer đều có khả năng phát hiện lỗi và phục hồi hoặc khi Load Balancer chính bị lỗi, Load Balancer thứ hai sẽ đảm nhận trách nhiệm thay thế. Mô hình này cung cấp độ tin cậy cao hơn và khả năng dự phòng, nhưng vẫn có một hạn chế về khả năng mở rộng.