Khi hệ thống có quá nhiều người sử dụng, một server đơn lẻ không đáp ứng được lượng requests khổng lồ được gửi đến cùng lúc. Bạn cần chia sẻ công việc của server hiện tại với các server khác nữa. Khi này, việc tải dữ liệu từ server nào sẽ do bộ cân bằng tải quyết định. Vậy cân bằng tải ( load balancing) là gì? chúng ta cùng tìm hiểu về nó nhé

Cân bằng tải là gì?

Load balancing (Cân bằng tải) là việc phân phối hiệu quả lưu lượng truy cập đến trên một nhóm backend servers, hay còn được gọi là server farm hoặc server pool.

Các website hiện đại có lưu lượng truy cập cao phải phục vụ hàng trăm nghìn, thậm chí hàng triệu các requests đồng thời từ người dùng hoặc khách hàng, đồng thời phải phản hồi chính xác lại các văn bản, hình ảnh, video hoặc dữ liệu ứng dụng, tất cả đều được thực hiện rất nhanh chóng và đáng tin cậy. Để đáp ứng hiệu quả khối lượng lớn các yêu cầu và phản hồi một cách tiết kiệm nhất, best practice tốt nhất thường sẽ là sử dụng thêm servers.

Một load balancer (Cân bằng tải) hoạt động như "traffic cop" (cảnh sát giao thông) ở phía trước server và routing các request của client trên tất cả các servers có khả năng thực hiện các request đó, sao cho tối ưu về tốc độ và hiệu suất nhất và đảm bảo rằng không có server nào phải hoạt động quá mức. Nếu một server đơn lẻ bị hỏng, cân bằng tải (load balancer) sẽ chuyển hướng lưu lượng truy cập đến các server trực tuyến còn lại. Khi một server mới được thêm vào nhóm máy chủ, bộ cân bằng tải sẽ tự động bắt đầu gửi yêu cầu đến máy chủ mới thêm này.

Chức năng chính của load balancer

  • Phân phối các client requests hoặc network load một cách hiệu quả trên nhiều servers.

  • Đảm bảo tính khả dụng và độ tin cậy cao bằng cách chỉ gửi các yêu cầu đến các máy chủ trực tuyến.

  • Thêm vào hoặc loại bớt các servers theo yêu cầu một cách linh hoạt và dễ dàng.

Session Persistence

Thông tin về phiên của người dùng thường được lưu trữ cục bộ trong trình duyệt.

Cân bằng tải ( load balancing) là gì? image 1 Session Persistence

Ví dụ: trong ứng dụng shopping cart, các sản phẩm trong giỏ hàng của người dùng có thể được lưu trữ ở cấp trình duyệt cho đến khi người dùng sẵn sàng mua chúng. Thay đổi server nào nhận được request từ khách hàng ở giữa phiên mua sắm có thể gây ra các vấn đề về hiệu suất hoặc gây lỗi giao dịch. Trong những trường hợp như vậy, điều quan trọng là tất cả các request từ một khách hàng phải được gửi đến cùng một server trong suốt thời gian của phiên. Điều này được gọi là Session Persistence.

Các cân bằng tải tốt nhất có thể xử lý Session Persistence khi cần thiết. Một trường hợp khác của Session Persistence đó là khi một upstream server lưu trữ thông tin được yêu cầu bởi người dùng trong bộ nhớ đệm của nó để tăng hiệu suất. Việc chuyển đổi các servers sẽ khiến thông tin đó được tìm nạp lần thứ hai, gây ảnh hưởng đến hiệu suất.

Các loại Load balancer và thuật toán sử dụng

Load balancer (cân bằng tải) thường được nhóm thành 2 loại: Layer 4 và Layer 7.

  • Cân bằng tải Layer 4 hoạt động dựa trên dữ liệu tìm thấy trong các giao thức mạng và giao vận layer (IP, TCP, FTP, UDP).

  • Các bộ cân bằng tải Layer 7 phân phối các yêu cầu dựa trên dữ liệu được tìm thấy trong các giao thức layer ứng dụng như HTTP.

  • Bộ cân bằng tải Layer 7 (Load balancer Layer 7) có thể phân phối thêm các requests dựa trên dữ liệu cụ thể của ứng dụng như HTTP header, cookies hoặc dữ liệu trong chính thông báo ứng dụng, chẳng hạn như giá trị của một thông số cụ thể.

Yêu cầu (request) được nhận bởi cả 2 loại Load balancer (cân bằng tải) và chúng được phân phối đến một server cụ thể dựa trên một thuật toán được cấu hình.

Một số thuật toán được sử dụng trong các hệ thống cân bằng tải là:

  • 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 quay. 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.

  • Weighted round robin: Tương tự như kỹ thuật Round Robin nhưng WRR còn có khả năng xử lý theo cấu hình của từng server đích. 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.

  • 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.

Cân bằng tải ( load balancing) là gì? image 1 Least connections

  • Least response time: Đây là thuật toán dựa trên tính toán thời gian đáp ứng của mỗi server (response time), thuật toán này sẽ chọn server nào có thời gian đáp ứng nhanh nhất. Thời gian đáp ứng được xác định bởi khoảng thời gian giữa thời điểm gửi một gói tin đến server và thời điểm nhận được gói tin trả lời.

  • IP Hash: 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 trực tiếp đến một server backend.

Các lợi ích của Cân Bằng Tải

1. Tối đa hoá Uptime

Cân Bằng Tải giúp dàn trải lưu lượng truy cập và truy xuất giữa hai hoặc nhiều máy chủ. Trong trường hợp lỗi sự cố xảy ra tại một điểm máy chủ, Cân Bằng Tải sẽ phát hiện vấn đề và di chuyển lưu lượng truy cập đến các máy chủ online còn lại, dịch vụ cho người dùng sẽ không bị gián đoạn.

2. Giúp Datacenter linh hoạt trong mở rộng

Khi khách hàng có nhu cầu mở rộng hệ thống Datacenter, Cân Bằng Tải sẽ tự động điều phối giữa các máy chủ cũ và mới để xử lý các yêu cầu dịch vụ mà không làm gián đoạn quá trình hoạt động, xử lý.

Cân bằng tải ( load balancing) là gì? image 2

3. Tăng tính bảo mật cho Datacenter

Thông thường khi người dùng gửi yêu cầu dịch vụ lên hệ thống sẽ được Cân Bằng Tải tiếp nhận rồi mới phân chia cho các máy chủ bên trong xử lý. Quá trình phản hồi yêu cầu cũng thông qua thành phần Cân Bằng Tải. Bằng cách đó có thể ngăn chặn người dùng giao tiếp trực tiếp với các máy chủ, ẩn đi các thông tin và cấu trúc mạng nội bộ, ngăn ngừa luôn các cuộc tấn công trên mạng hoặc truy cập trái phép.

Viết câu trả lời

Drop Images

0 Bình luận