#

Load Balancing là gì? Giải thích các thuật toán cân bằng tải

 29/04/2022 - 15:33 Trịnh Duy Thanh

Trong lĩnh vực công nghệ thông tin nói chung hay lĩnh vực mạng máy tính nói riêng, thì Load Balancing là một tính năng rất quan trọng và không thể thiếu trong quá trình phát triển phần mềm. Nó góp phần quyết định chất lượng sản phẩm cũng như trải nghiệm người dùng. Vậy Load Balancing là gì? Cùng BKHOST tìm hiểu tất cả các kiến thức cơ bản nhất về Load Balancing.

Load Balancing là gì?

Load Balancing là gì?

Load Balancing được dịch là “Cân Bằng Tải”, là một trong các tính năng rất quan trọng đối với nhà phát triển phần mềm hay lập trình mạng. Nó giúp tối ưu hóa thông lượng, giảm thời gian đáp ứng và giảm thiểu tối đa tình trạng quá tải ở máy chủ nhờ vào quá trình phân phối lưu lượng tải hiệu quả trên nhiều máy chủ. 

Tìm hiểu về Load Balancing
Tìm hiểu về Load Balancing

Để dễ hình dung hơn bạn có thể xem ví dụ dưới đây:

Trong quá trình tham gia giao thông, vào các giờ cao điểm khối lượng phương tiện đổ xô vào các tuyến đường huyết mạch rất đông từ đó gây ra tình trạng tắt đường. Xe sẽ lưu thông với tốc độ chậm hơn và mất khá nhiều thời gian hơn. Lúc này ta sẽ cần Cảnh sát giao thông để điều tiết giao thông, giảm tình trạng ùn ứ phương tiện. Và vai trò của Cảnh sát giao thông gần giống như Load Balancer vậy, cụ thể ta có thể thấy như sau:

  • Nhiệm vụ của Cảnh sát giao thông là điều tiết các phương tiện giao thông, tương ứng với nhiệm vụ của Load Balancer là điều tiết các request trên nhiều server một cách tối ưu nhất.
  • Cảnh sát giao thông sẽ đảm bảo đường sẽ không bị ùn tắc giao thông, tương ứng với việc Load Balancing đảm bảo các server không bị quá tải.
  • Vào các thời điểm có thể gây ùn, Cảnh sát giao thông sẽ điều hướng cho các phương tiện đi đường khác để tránh tình trạng kẹt xe. Load Balancing cũng vậy, nó sẽ giúp chuyển hướng đến các server khác khi một server có dấu hiệu sắp quá tải hoặc bị hỏng.

Load Balancer có thể xử lý các loại giao thức nào?

Đứng ở vai trò Quản trị Load Balancing, bạn có thể tạo quy định chuyển tiếp với bốn loại giao thức chính như sau:

  1. HTTP: Load Balancing HTTP là giao thức được thực hiện dựa trên cơ chế của HTTP chuẩn. Bộ cân bằng tải sẽ đặt tiêu đề X-Forwarded-For, X-Forwarded-Proto và X-Forwarded-Port với mục đích cung cấp thông tin về các yêu cầu ban đầu đến hệ thống Backend.
  2. HTTPs: Load Balancing HTTPs có cơ chế hoạt động tương tự như Load Balancing HTTP nhưng bổ sung thêm phần mã hóa. Tại đây, việc mã hóa có hai cách sử dụng như sau: một là sử dụng passthrough SSL để mã hóa và duy trì mã hóa từ đầu đến cuối, hai là đặt bộ giải mã cho Load balancing chứ không mã hóa từ đầu đến cuối mà chỉ gửi lưu lượng đã được mã hóa đến Backend.
  3. TCP: Trong trường hợp các ứng dụng không sử dụng giao thức HTTP hay HTTPs thì lưu lượng TCP cũng có thể được cân bằng. Điển hình như lưu lượng truy cập vào một cụm cơ sở dữ liệu hoàn toàn có thể được điều hướng đến tất cả các máy chủ. 
  4. UDP: Trong thời gian gần đây, một số hệ thống Load Balancing đã cho phép thực hiện cân bằng tải cho giao thức cốt lõi là DNS và sys log có sử dụng UDP.

Với những nguyên tắt chuyển tiếp bạn sẽ xác định được các giao thức và cổng vào cân bằng tải, dựa vào bản đồ đi đến các giao thức bạn có thể định tuyến được lưu lượng trên Backend. 

Load Balancer chọn Backend Server như thế nào?

Có hai yếu tố để hệ thống Load Balancing chọn server để thực hiện yêu cầu chuyển tiếp. Yếu tố đầu tiên là tất cả các server mà họ chọn luôn đảm bảo có thể đáp ứng các yêu cầu bất kỳ một cách thích hợp. Yếu tố thứ hai là dựa vào các quy tắt đã được cấu hình trước đó trước đó để lựa chọn ra một server thích phù hợp trong số các server khác.

Health check

Health check được hiểu đơn giản là quá trình kiểm tra xem tình trạng của Backend Server có đang ổn định hay không nhờ vào các giao thức và cổng đã được định nghĩa trước đó. Health check chịu trách nhiệm đảm bảo rằng các Backend server hoạt động tốt và có thể sử dụng. 

Đối với các Backend Server bị hỏng hoặc không ổn định, nó sẽ bị Health check lượt bỏ ra khỏi danh sách và các requests sẽ không được chuyển đến Server này nữa. Lúc này Load Balancing có thể chuyển lưu lượng từ Backend Server đã bị hỏng đến các Backend Server khác đang hoạt động tốt nhằm giải quyết các tác vụ của người dùng.

Thuật toán Load Balancing

Tùy vào các loại công nghệ của Load Balancing mà có các thuật toán để xác định tình trạng của Backend Server khác nhau. Sau đây là một số thuật toán Load Balancing phổ biến là:

  • Round Robin: Là thuật toán lựa chọn máy chủ theo trình tự vòng tròn. Cụ thể, các máy chủ sẽ được sắp xếp theo dạng vòng quay và được xem một cách ngang hàng, các requests sẽ được Load Balancing gửi tới các máy chủ theo thứ tự từ máy chủ đầu tiên trong danh sách và tiếp tục di chuyển xuống các máy chủ tiếp theo cho tới máy chủ cuối cùng và bắt đầu lại ở đầu trang. 
  • Least connections: Thuật toán này hỗ trợ đưa các request đến các server có số lượng kết nối ít nhất trong danh sách các server. Là một thuật toán động bởi nó có khả năng đếm số lượng kết nối đang hoạt động của server. Nhờ vào thuật toán này, giúp cho hệ thống hoạt động tốt tránh tình trạng quá tải cũng như khắc phục được những nhược điểm của thuật toán Round Robin.
  • Source: Dựa vào thuật toán Source, Load Balancing có thể chọn một máy chủ phù hợp để sử dụng nhờ một hash IP của request, điển hình là địa chỉ IP của người truy cập dịch vụ. Thuật toán này giúp cho người dùng đảm bảo rằng mình luôn được kết nối với cùng một máy chủ.

Tùy vào từng công nghệ Load Balancing mà có các Quản lý thuật toán khác nhau.

Load Balancer xử lý trạng thái như thế nào?

Ở một số trường hợp, một số ứng dụng yêu cầu người dùng phải tiếp tục kết nối đến cùng một Backend server. Dựa trên thông tin IP của khách hàng mà một thuật toán mã nguồn có thể lấy thông tin đó để tạo ra các mối quan hệ. Đối với các ứng dụng web, có một cách để tạo ra mối quan hệ là sử dụng stick session, đây là nơi mà Load Balancing sẽ đặt một cookie để có thể ghi nhớ thông tin và tất cả các request và session điều hướng đến một server vật lý.

Load Balancing dự phòng là gì?

Để hạn chế việc chỉ có một Load Balancing là một điểm truy cập duy nhất, việc cần làm là chúng ta phải tạo ra một Load balancing thứ hai để dự phòng. Load Balancing thứ hai sẽ được kết nối với Load Balancing thứ nhất để tạo thành một cụm. Tại đây các Load Balancing đều có tính năng phát hiện lỗi và phục hồi  như nhau. 

Load Balancing dự phòng
Load Balancing dự phòng

Sẽ có một số trường hợp Load Balancing chính sẽ bị lỗi, lúc này bắt buộc Load Balancing thứ hai sẽ nhận trách nhiệm chứ lưu lượng được di chuyển từ Load Balancing chính, quá trình duy chuyển này dựa vào DNS. Tuy nhiên, quá trình duy chuyển DNS chắc chắn sẽ tốn rất nhiều thời gian trên internet, đồng thời để việc chuyển đổi dự phòng được diễn ra một cách tự động đòi hỏi các quản trị viên phải cho phép  linh hoạt các địa chỉ IP Remapping, trong trường hợp này là Floating Ips. 

Nhờ vào IP Remapping, chúng ta có thể dễ dàng loại bỏ bộ nhớ đệm từ những lần thay đổi trong DNS. Tại đây, IP Remapping cung cấp cho người dùng một IP tĩnh, cho phép ánh xạ các thông tin khi cần thiết. Đối với tên miền, bạn vẫn có thể duy trì liên kết với IP, tuy nhiên IP của chính nó lại có thể di chuyển giữa nhiều máy chủ khác nhau. 

Bạn có thể tham khảo hệ thống của Floating Ips dưới đây:

hệ thống của Floating Ips

Tổng kết về Load Balancing

Qua bài viết này, hi vọng bạn đã có thể nắm được các thông tin liên quan đến Load Balancing và hiểu hơn về tầm quan trọng của hệ thống này trong việc quản lý hiệu suất của sản phẩm. Nó là một cơ sở hạ tầng rất quan trọng trong ngành Mạng máy tính, giúp cải thiện hiệu suất sản phẩm cũng như mang đến trải nghiệm tốt nhất cho người dùng. Nếu bạn có bất kỳ thắc mắc nào, hãy để lại ở phần bình luận bên dưới. Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về quản trị mạng, website, domain, hosting, vps, server, email,… Chúc các bạn thành công!


Bạn đang tìm kiếm tên miền đê thực hiện kế hoạch kinh doanh hoàn hảo.

Nhanh tay đăng ký tên miền .BIZ tại BKHOST ngay hôm nay! 

BKHOST đang giảm giá shock nhiều loại domain. Đừng để đối thủ sở hữu thương hiệu của bạn trên internet.


Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger