NLB là gì?
NLB (Network Load Balancing) chỉ việc sử dụng một thiết bị mạng hoặc phần mềm để quản lý và kiểm soát lưu lượng của người dùng tới các máy chủ web một cách hơp lý nhằm tránh quá tải máy chủ web.
Bạn đã từng đăng ký tín chỉ trên website của các trường đại học bao giờ chưa? Nếu rồi thì chắc chắn bạn đã quá quen với câu nói “web sập rồi” và công cuộc bấm F5 liên tục trong vô vọng.
Hay đơn giản như bạn bán hàng trên một website nhưng một ngày giảm giá đặc biệt. Khách hàng truy cập vào web của bạn tăng đột biến và tự dưng web cũng sập. Lý do cho tất cả việc này là bởi vì máy chủ (server) bị quá tải do không đáp ứng được yêu cầu từ người truy cập.
Máy chủ là nơi lưu trữ toàn bộ trang web và dữ liệu liên quan. Về cơ bản việc bạn truy cập vào một web diễn ra như sau: nhập URL vào trình duyệt => Máy chủ DNS sẽ biến tên Domain thành địa chỉ IP trên mạng Internet để xác định máy chủ lưu trữ => trình duyệt sẽ gửi yêu cầu tới máy chủ => Máy chủ sẽ xử lý và gửi dữ liệu về trình duyệt của bạn.
Khi có quá nhiều người truy cập vào web trong cùng 1 thời điểm. Quá trình gửi yêu cầu diễn ra số lượng lớn khiến máy chủ không thể nào xử lý kịp thời dẫn tới sập web. Network Load Balancing (NLB) xuất hiện để xử lý vấn đề này.
NLB hoạt động tại tầng thứ 4 (Transport) trong mô hình OSI, và nhiệm vụ chính của nó là đảm bảo rằng không có máy chủ nào trong hệ thống bị quá tải, đồng thời tối ưu hóa sự sử dụng các tài nguyên máy chủ.
NLB hoạt động như thế nào?
Cân bằng tải mạng phân phối lưu lượng mạng trên nhiều liên kết WAN, máy ảo hoặc máy chủ để tránh làm quá tải bất kỳ máy chủ nào mà không sử dụng các giao thức định tuyến phức tạp.
Bất kỳ bộ cân bằng tải nào đều nằm phía trước máy chủ và hoạt động như các yêu cầu định tuyến kiểm soát lưu lượng từ máy khách trên các máy chủ. Việc này giúp tăng khả năng một cách tối ưu để tối đa hóa tốc độ và mức sử dụng công suất.
NLB luôn theo dõi lưu lượng truy cập và trạng thái của các máy chủ web. Khi nhận được yêu cầu truy cập từ người dùng nó sẽ dựa trên kết quả theo dõi để đưa ra quyết định phân bổ lưu lượng tới máy chủ web nào.
Nếu một máy chủ web không hoạt động hoặc quá tải nó sẽ chuyển các lưu lượng truy cập tới các máy chủ khác. Sử dụng cân bằng tải mạng cũng là một trong những kỹ thuật để ngăn chặn các vụ tấn công DDoS nhằm vào máy chủ web.
Lợi ích của NLB mang lại
Có một điều bạn cần lưu ý là NLB (cân bằng tải mạng) hoạt động trên OSI Lớp 4. Vì vậy chúng không nhằm mục đích nhận biết ngữ cảnh hoặc xem xét các tín hiệu ở lớp ứng dụng như dữ liệu cookie, loại nội dung, vị trí người dùng, tiêu đề tùy chỉnh hoặc hành vi ứng dụng. Cân bằng tải mạng chỉ xem xét thông tin lớp mạng có bên trong các gói mà chúng gửi trực tiếp.
Cân bằng tải mạng mang lại những lợi ích sau:
- Khả năng mở rộng tới hàng triệu yêu cầu mỗi giây để xử lý khối lượng công việc không ổn định.
- Hỗ trợ địa chỉ IP tĩnh.
- Khả năng chỉ định một địa chỉ IP linh hoạt cho mỗi mạng con được kích hoạt.
- Hỗ trợ đăng ký mục tiêu kể cả mục tiêu ngoài VPC theo địa chỉ IP.
- Hỗ trợ giám sát độc lập tình trạng dịch vụ, với các hoạt động kiểm tra tình trạng được xác định ở cấp nhóm mục tiêu và nhiều số liệu được báo cáo ở đó.
Các thuật toán cân bằng tải
Có nhiều thuật toán cân bằng tải khác nhau được sử dụng để phân phối lưu lượng truy cập đến các máy chủ một cách cân đối và hiệu quả. Mỗi thuật toán có cách hoạt động và ưu điểm riêng. Dưới đây là một số ví dụ về các thuật toán cân bằng tải phổ biến:
- Round Robin (RR): Thuật toán này phân phối lưu lượng truy cập đến các máy chủ theo một lịch trình luân phiên. Mỗi yêu cầu mới sẽ được gửi đến máy chủ tiếp theo trong danh sách. Đây là một thuật toán đơn giản, nhưng có thể không hiệu quả nếu các máy chủ có hiệu suất khác nhau.
- Least Connections (LC) – Cân bằng tải dựa trên số kết nối ít nhất: Thuật toán này chọn máy chủ có ít kết nối hoạt động nhất để gửi yêu cầu mới. Điều này giúp đảm bảo rằng máy chủ không bị quá tải và cân bằng tải hiệu quả.
- IP Hash: Thuật toán này sử dụng địa chỉ IP nguồn của người dùng để xác định máy chủ mục tiêu. Điều này đảm bảo rằng cùng một người dùng sẽ luôn được gửi đến cùng một máy chủ, giúp duy trì trạng thái cho các ứng dụng yêu cầu trạng thái.
- Weighted Round Robin (WRR): Tương tự như Round Robin, nhưng mỗi máy chủ có một trọng số riêng. Máy chủ có trọng số cao sẽ nhận được nhiều yêu cầu hơn. Điều này có thể hữu ích nếu các máy chủ có hiệu suất khác nhau.
- Weighted Least Connections (WLC) – Cân bằng tải dựa trên số kết nối và trọng số: Kết hợp cả trọng số và số kết nối để xác định máy chủ mục tiêu. Máy chủ với trọng số cao và ít kết nối sẽ được ưu tiên.
- Least Response Time: Thuật toán này dựa vào thời gian phản hồi từ các máy chủ để quyết định máy chủ mục tiêu. Máy chủ có thời gian phản hồi ngắn nhất sẽ được chọn để xử lý yêu cầu.
- Random: Thuật toán đơn giản, chọn một máy chủ ngẫu nhiên từ danh sách máy chủ có sẵn. Tuy nhiên, không đảm bảo cân bằng tải chính xác.
- Source IP Affinity (Sticky Session): Thuật toán này giữ cho cùng một người dùng được kết nối vào cùng một máy chủ trong khoảng thời gian nhất định. Điều này đảm bảo rằng trạng thái phiên của người dùng được duy trì.