Thứ ba, 14/02/2017 | 00:00 GMT+7

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

Cân bằng tải là một thành phần quan trọng của cơ sở hạ tầng sẵn có cao thường được sử dụng để cải thiện hiệu suất và độ tin cậy của các trang web, ứng dụng, database và các dịch vụ khác bằng cách phân phối dung lượng công việc trên nhiều server .

Cơ sở hạ tầng web không có cân bằng tải có thể trông giống như sau:

 web server

Trong ví dụ này, user kết nối trực tiếp với web server , tại yourdomain.com . Nếu web server duy nhất này gặp sự cố, user sẽ không thể truy cập trang web nữa. Ngoài ra, nếu nhiều user cố gắng truy cập server đồng thời và nó không thể xử lý tải, họ có thể gặp phải thời gian tải chậm hoặc có thể không thể kết nối được.

Điểm lỗi duy nhất này có thể được giảm thiểu bằng cách giới thiệu một bộ cân bằng tải và ít nhất một web server bổ sung trên phần backend . Thông thường, tất cả các server backend sẽ cung cấp nội dung giống hệt nhau để user nhận được nội dung nhất quán dù server nào phản hồi.

Sơ đồ 01: Cân bằng tải / Từ trên xuống dưới

Trong ví dụ minh họa ở trên, user truy cập bộ cân bằng tải, bộ cân bằng tải này sẽ chuyển tiếp yêu cầu của user đến server backend , sau đó sẽ trả lời trực tiếp yêu cầu của user . Trong trường hợp này, điểm duy nhất của lỗi bây giờ là chính bộ cân bằng tải. Điều này có thể được giảm thiểu bằng cách giới thiệu bộ cân bằng tải thứ hai, nhưng trước khi thảo luận về điều đó, hãy cùng khám phá cách hoạt động của bộ cân bằng tải.

Bộ cân bằng tải có thể xử lý loại lưu lượng nào?

Administrator cân bằng tải tạo luật chuyển tiếp cho bốn loại lưu lượng chính:

  • HTTP - Cân bằng HTTP tiêu chuẩn định hướng các yêu cầu dựa trên cơ chế HTTP tiêu chuẩn. Load Balancer đặt các tiêu đề X-Forwarded-For , X-Forwarded-ProtoX-Forwarded-Port để cung cấp thông tin backend về yêu cầu ban đầu.
  • HTTPS - Cân bằng HTTPS có chức năng giống như cân bằng HTTP, với việc bổ sung mã hóa. Mã hóa được xử lý theo một trong hai cách: hoặc với SSL passthrough duy trì mã hóa đến tận phần backend hoặc kết thúc SSL đặt gánh nặng giải mã lên bộ cân bằng tải nhưng lại gửi lưu lượng không được mã hóa đến back end.
  • TCP - Đối với các ứng dụng không sử dụng HTTP hoặc HTTPS, lưu lượng TCP cũng có thể được cân bằng. Ví dụ, lưu lượng truy cập vào một cụm database có thể được trải rộng trên tất cả các server .
  • UDP - Gần đây, một số trình cân bằng tải đã thêm hỗ trợ cho các giao thức internet lõi cân bằng tải như DNS và syslogd sử dụng UDP.

Các luật chuyển tiếp này sẽ xác định giao thức và cổng trên chính bộ cân bằng tải và ánh xạ chúng tới giao thức và cổng mà bộ cân bằng tải sẽ sử dụng để định tuyến lưu lượng truy cập trên backend .

Trình cân bằng tải chọn server backend như thế nào?

Bộ cân bằng tải chọn server nào để chuyển tiếp yêu cầu dựa trên sự kết hợp của hai yếu tố. Trước tiên, họ sẽ đảm bảo bất kỳ server nào họ có thể chọn đang thực sự đáp ứng các yêu cầu một cách thích hợp và sau đó sử dụng luật được cấu hình trước để chọn trong số group lành mạnh đó.

Kiểm tra sức khỏe

Bộ cân bằng tải chỉ nên chuyển tiếp lưu lượng truy cập đến các server backend "lành mạnh". Để theo dõi tình trạng của server backend , kiểm tra tình trạng thường xuyên cố gắng kết nối với server backend bằng cách sử dụng giao thức và cổng được xác định bởi các luật chuyển tiếp đảm bảo rằng các server đang lắng nghe.Nếu một server không kiểm tra được tình trạng và do đó không thể phục vụ các yêu cầu, nó sẽ tự động bị xóa khỏi group và lưu lượng truy cập sẽ không được chuyển tiếp đến nó cho đến khi nó phản hồi lại kiểm tra tình trạng.

Các thuật toán cân bằng tải

Thuật toán cân bằng tải được sử dụng xác định server khỏe mạnh nào trên phần backend sẽ được chọn. Một số thuật toán thường được sử dụng là:

Round Robin - Round Robin nghĩa là các server sẽ được chọn tuần tự. Bộ cân bằng tải sẽ chọn server đầu tiên trong danh sách của nó cho yêu cầu đầu tiên, sau đó di chuyển danh sách xuống theo thứ tự, bắt đầu lại từ đầu khi đến cuối.

Kết nối ít nhất - Kết nối ít nhất nghĩa là bộ cân bằng tải sẽ chọn server có ít kết nối nhất và được khuyến khích khi lưu lượng dẫn đến các phiên dài hơn.

Nguồn - Với thuật toán Nguồn, bộ cân bằng tải sẽ chọn server nào sẽ sử dụng dựa trên băm của IP nguồn của yêu cầu, chẳng hạn như địa chỉ IP của khách truy cập. Phương pháp này đảm bảo một user cụ thể sẽ kết nối nhất quán với cùng một server .

Các thuật toán có sẵn cho administrator khác nhau tùy thuộc vào công nghệ cân bằng tải cụ thể được sử dụng.

Làm thế nào để bộ cân bằng tải xử lý trạng thái?

Một số ứng dụng yêu cầu user tiếp tục kết nối với cùng một server backend . Thuật toán Nguồn tạo mối quan hệ dựa trên thông tin IP của khách hàng. Một cách khác để đạt được điều này ở cấp ứng dụng web là thông qua các phiên cố định , trong đó bộ cân bằng tải đặt cookie và tất cả các yêu cầu từ phiên đó đều được chuyển hướng đến cùng một server vật lý.

Cân bằng tải dự phòng

Để loại bỏ bộ cân bằng tải như một điểm lỗi duy nhất, bộ cân bằng tải thứ hai có thể được kết nối với bộ cân bằng tải thứ nhất để tạo thành một cụm, trong đó mỗi bộ theo dõi sức khỏe của các bộ khác. Mỗi cái đều có khả năng phát hiện và khôi phục lỗi như nhau.

Sơ đồ 02: Cụm / Phân tán

Trong trường hợp bộ cân bằng tải chính không thành công, DNS phải đưa user đến bộ cân bằng tải thứ hai. Bởi vì các thay đổi DNS có thể mất một khoảng thời gian đáng kể để được phổ biến trên Internet và để thực hiện việc chuyển đổi dự phòng này tự động, nhiều administrator sẽ sử dụng các hệ thống cho phép ánh xạ lại địa chỉ IP linh hoạt, chẳng hạn như IP nổi . Việc ánh xạ lại địa chỉ IP theo yêu cầu giúp loại bỏ các vấn đề về lan truyền và bộ nhớ đệm vốn có trong các thay đổi DNS bằng cách cung cấp địa chỉ IP tĩnh có thể dễ dàng ánh xạ lại khi cần thiết. Tên domain có thể vẫn được liên kết với cùng một địa chỉ IP, trong khi bản thân địa chỉ IP được di chuyển giữa các server .

Đây là cách một cơ sở hạ tầng khả dụng cao sử dụng IP nổi có thể trông như sau:

Sơ đồ 03: Các IP nổi

Kết luận

Trong bài viết này, ta đã đưa ra một cái nhìn tổng quan về các khái niệm cân bằng tải và cách chúng hoạt động nói chung. Để tìm hiểu thêm về các công nghệ cân bằng tải cụ thể, bạn có thể cần xem:

Dịch vụ cân bằng tải của DigitalOcean

HAProxy

Nginx


Tags:

Các tin liên quan