Thông báo “server không thể phản hồi” là tình trạng khiến các chủ website đau đầu, khách hàng thì thất vọng và có thể không quay lại website của bạn nữa. Thông báo này có nghĩa là máy chủ đã quá tải nên nó không thể xử lý các yêu cầu đến nữa. Tình trạng này không chỉ xảy ra với các máy chủ web mà còn với các máy chủ nội bộ có số lượng người dùng đáng kể. Load Balancing (Cân bằng tải) là một trong các giải pháp có thể giúp bạn xử lý hoặc ngăn ngừa tình trạng này xảy ra. Cùng Puramu tìm hiểu “Load Balancing là gì?” dưới đây nhé!
Load Balancing (cân bằng tải) là gì?
Load Balancing (cân bằng tải) là phương pháp phân phối các truy vấn của người dùng đồng đều, hiệu quả trên hai hay nhiều máy chủ. Nhờ có cân bằng tải, các máy chủ được hoạt động đồng bộ và hiệu quả hơn. Đặc biệt, không có máy chủ nào phải hoạt động quá mức khiến máy chủ bị giảm hiệu suất.
Mục đích của phương pháp này là sử dụng tối ưu các nguồn lực, tài nguyên, tối đa hoá thông lượng, tối ưu hoá hiệu suất, tăng độ ổn định của website, ứng dụng, cơ sở dữ liệu và các dịch vụ khác.
Cân bằng tải có thể chạy trên nhiều hệ điều hành khác nhau như: Windows, Unix, Linux,… Tuỳ thuộc vào loại cân bằng tải mà bạn sử dụng. Do đó, bạn có thể lựa chọn cân bằng tải phù hợp nhất với hệ thống của bạn.
Load Balancing đặc biệt quan trọng đối với các trang web có lượng truy cập lớn. Sử dụng Load Balancing đảm bảo tất cả các yêu cầu đều được xử lý hiệu quả và kịp thời. Trang web luôn trong trạng thái hoạt động ổn định và sẵn sàng phục vụ người dùng.
Cân bằng tải đóng vai trò quan trọng trong cơ sở hạ tầng mạng và với các nhà phát triển, lập trình mạng. Nó cũng là một trong những yếu tố rất cần thiết khi bạn cần đưa ra quyết định lựa chọn thuê Hosting và thuê Server.
Sự khác nhau giữa website dùng Load Balancing và website không dùng Load Balancing là gì?
Website không sử dụng Load Balancing thường chỉ hoạt động trên một máy chủ duy nhất. Đến một lúc máy chủ sẽ bắt đầu xử lý yêu cầu chậm đi hoặc không thể đáp ứng nhiều yêu cầu hơn. Chẳng hạn như: Vào các đợt khuyến mãi lớn như 7/7, 15/7, 25/7, các sàn thương mại điện tử sẽ có lượt truy cập cao đột biến so với các ngày còn lại. Ngay lúc này, nếu không sử dụng Load Balancing, website sẽ dễ rơi vào tình trạng quá tải, load chậm. Quá nhiều người truy cập vào trang web cùng một lúc trong khi chỉ có một máy chủ. Kết quả là máy chủ không thể kham nổi dẫn đến việc gặp lỗi. Khi đó, người dùng sẽ không thể truy cập vào website nữa.
Khi thêm hệ thống cân bằng tải, chúng ta cũng sẽ bổ sung thêm ít nhất một máy chủ web hỗ trợ trên backend. Puramu sẽ bàn về nguyên lý hoạt động của nó sau nhé. Khi máy chủ gặp sự cố sẽ có máy chủ khác thay thế. Tất cả các yêu cầu của người dùng vẫn được giải quyết. Bạn không phải lo về việc khách hàng không vào được web của bạn. Khi có nhiều lượt truy cập cùng một lúc vào website, hệ thống sẽ phân phối các lượt truy cập đều vào các máy chủ hiện có. Nhờ vậy mà tránh được tình trạng máy chủ quá tải, ngưng hoạt động. Tốc độ tải trang chậm sẽ rất hiếm xảy ra trên trang web của bạn. Người dùng cũng sẽ hài lòng hơn về dịch vụ mạng của bạn.
Lợi ích khi sử dụng cân bằng tải là gì?
Tăng hiệu suất
Tính năng của bộ cân bằng tải là phân bổ đồng đều giữa nhiều máy chủ và tài nguyên tính toán nên thời gian phản hồi sẽ nhanh, ổn định và giảm độ trễ mạng. Ngoài ra, hạn chế trường hợp máy chủ bất kỳ bị quá tải hoặc gián đoạn hoạt động. Điều này giúp đẩy thời gian uptime của hệ thống lên cao nhất và cải thiện hiệu suất hoạt động tổng thể.
Cân bằng tải có thể phân phối tải cho các máy chủ ở nhiều vị trí địa lý khác nhau. Các yêu cầu từ người dùng sẽ được định tuyến đến máy chủ gần với vị trí của họ nhất. Nếu không may máy chủ đó bị lỗi, cân bằng tải sẽ chuyển yêu cầu đó đến các máy chủ còn lại thay thế. Việc này giúp giảm độ trễ và tối ưu hoá thời gian phản hồi.
Tăng tính sẵn sàng
Khách hàng sẽ không truy cập được vào trang web của bạn khi máy chủ gặp lỗi. Bộ cân bằng tải có tính năng kiểm tra sức khoẻ các máy chủ liên tục để ngăn chặn các vấn đề dẫn đến tình trạng downtime. Nhờ vậy mà nó có thể tự động phát hiện các sự cố máy chủ và tự động khôi phục dữ liệu sau thảm hoạ. Các lưu lượng truy cập từ máy chủ lỗi sẽ được điều phối sang các máy chủ khả dụng còn lại. Điều này đảm bảo người dùng không bị gián đoạn truy cập khi xảy ra sự cố tại một điểm máy chủ. Từ đó, tăng độ tin cậy và tăng khả năng dự phòng cho hệ thống.
Tính linh hoạt cao
Trang web của bạn sẽ trong trạng thái không khả dụng khi đang trong trạng thái bảo trì. Với hệ thống cân bằng tải, bạn có thể thực hiện bảo trì hoặc nâng cấp mà không hề xảy ra downtime. Đơn giản chỉ là thao tác bật chế độ passive cho cân bằng tải. Lúc này, tất cả traffic sẽ được hướng đến một máy chủ nhất định. Chỉ cần có ít nhất một máy chủ tiếp tục hoạt động, website của bạn sẽ luôn trong trạng thái hoạt động trong suốt khoảng thời gian bảo trì. Khi quá trình bảo trì hoàn tất, bạn đặt lại chế độ active cho cân bằng tải là được.
Khả năng linh hoạt điều phối giữa các máy chủ là một ưu điểm của bộ cân bằng tải. Máy chủ đáp ứng tốt, xử lý các yêu cầu mà không làm gián đoạn các hoạt động chung của hệ thống.
Tăng tính bảo mật cho hệ thống
Khi sử dụng load balancing, toàn bộ máy chủ ứng dụng và cơ sở dữ liệu được nằm trong vùng DMZ (DeMilitary Zone). Vùng này như một mạng private cô lập, không public. Khi người dùng gửi yêu cầu đến hệ thống, yêu cầu đó sẽ được bộ cân bằng tải tiếp nhận. Sau đó, bộ cân bằng tải sẽ định tuyến từng yêu cầu đến máy chủ phù hợp nhất xử lý. Nó cũng khiêm luôn nhiệm vụ phản hồi kết quả cho người dùng. Vì thế sẽ ngăn người dùng giao tiếp trực tiếp với máy chủ, ẩn các thông tin và cấu trúc mạng nội bộ, ngăn ngừa các truy cập trái phép.
Ngoài ra, bộ cân bằng tải còn được tích hợp tính năng bảo mật để đối phó với các cuộc tấn công từ chối dịch vụ phân tán. Những việc nó có thể làm:
- Theo dõi lưu lượng truy cập và chặn nội dung độc hại.
- Tự động chuyển hướng lưu lượng tấn công đến nhiều máy chủ phụ trợ để giảm thiểu tác động.
- Định tuyến lưu lượng thông qua tường lửa để tăng cường bảo mật.
Dễ dàng mở rộng hệ thống
Lượng truy cập tăng đột ngột gây ảnh hưởng rất lớn đến hiệu suất server. Khi lượng truy cập vào website phát triển, bạn có thể lắp đặt thêm một máy chủ mới. Cân bằng tải sẽ tự động gửi yêu cầu đến máy chủ mới đó. Ngoài ra, bạn có thể loại bỏ bớt máy chủ khi lưu lượng truy cập giảm đi mà không gây ra gián đoạn cho người dùng.
Trên thực tế, những tổn thất khi trang web ngừng hoạt động rất lớn và không thể lường trước được. Không có gì đảm bảo cho việc một server sẽ luôn hoạt động trơn tru và hoàn hảo mãi mãi. Việc luôn có một server dự phòng và hệ thống cân bằng tải điều phối chúng là một phương án mà bất cứ website nào cũng nên có.
Load Balancing dự phòng
Nếu cân bằng tải gặp trục trặc có thể ảnh hưởng đến website của bạn. Rất may, điều này có thể khắc phục bằng cách thêm hệ thống cân bằng tải thứ hai để dự phòng. Mỗi bộ cân bằng tải đều có thể phát hiện lỗi và phục hồi. Một hoặc nhiều máy chủ dự phòng luôn trong trạng thái sẵn sàng nhận yêu cầu khi máy chủ chính không hoạt động.
Khi bộ cân bằng tải chính bị lỗi, DNS sẽ chuyển yêu cầu của người dùng đến bộ cân bằng tải dự phòng. Tuy nhiên, quá trình thay đổi DNS có thể phải chờ khá lâu mới thông báo được lên Internet. Để chuyển đổi dự phòng được tự động và tiết kiệm thời gian thì nhiều quản trị viên sẽ sử dụng hệ thống cho phép linh hoạt thay đổi IP Remapping, chẳng hạn như Floating IP. Nó sẽ cung cấp một địa chỉ IP tĩnh tùy chỉnh được khi cần thiết. Các vấn đề về mất thời gian thông báo lên Internet và lưu bộ nhớ đệm khi thay đổi DNS được loại bỏ. Tên miền có thể duy trì liên kết với cùng một địa chỉ IP. Trong khi địa chỉ IP này được di chuyển giữa các cloud server.
Các loại Load Balancing
Bộ cân bằng tải là một thiết bị nằm giữa người dùng và cụm máy chủ. Nó hoạt động như một người hỗ trợ vô hình đảm bảo rằng tất cả các tài nguyên máy chủ đều được sử dụng như nhau. Bộ cân bằng tải sẽ tồn tại dưới hai loại: Cân bằng tải phần cứng và phần mềm.
Cân bằng tải phần cứng
Cân bằng tải phần cứng sử dụng thiết bị vật lý có cấu hình sẵn để thực hiện cân bằng tải các máy chủ trong hệ thống. Nó có thể xử lý và chuyển hướng một lượng lớn lưu lượng truy cập đến hàng trăm máy chủ khác nhau. Bạn có thể lưu trữ nó trong trung tâm dữ liệu và sử dụng ảo hóa tích hợp để tạo nhiều bộ cân bằng tải kỹ thuật số hoặc ảo. Thông thường, các nhà cung cấp sẽ tải phần mềm độc quyền lên phần cứng chuyên dụng. Người dùng sẽ mua nó dưới dạng thiết bị độc lập.
Ưu điểm
Cân bằng tải phần cứng thường có hiệu suất cao. Nó phù hợp để xử lý tải lưu lượng truy cập cao điểm nên tốc độ cao và hiệu suất tốt hơn so với cân bằng tải phần mềm. Nó còn khả năng bảo mật tốt và tối ưu hóa mạng nâng cao vì được xử lý bởi tổ chức chứ không phải bởi bất kỳ bên thứ ba nào.
Nhược điểm
- Khi số kết nối đạt đến giới hạn, các kết nối mới sẽ bị từ chối, bị rớt hoặc xuống cấp. Cách duy nhất để khắc phục điều này là mua và cài đặt các máy bổ sung. Tuy nhiên, bạn lại không thể mở rộng quy mô ngay lập tức.
- Khó quản lý và mở rộng. Đôi khi, bạn sẽ phải cần thuê chuyên gia tư vấn để quản lý nó.
- Phải có chuyên môn để cấu hình và lập trình nó.
- Chi phí mua và bảo trì cao nên đắt hơn cân bằng tải phần mềm.
Cân bằng tải phần mềm
Cân bằng tải phần mềm sử dụng phần mềm hoặc ứng dụng để thực hiện cân bằng tải các máy chủ trong hệ thống. Thường nó sẽ chạy trên máy ảo hoặc server hộp trắng. Bạn có thể cài đặt nó trên bất kỳ máy chủ nào hoặc truy cập dưới dạng dịch vụ của bên thứ ba.
Cân bằng tải phần mềm tích hợp trên điện toán đám mây sẽ có mức độ linh hoạt cao hơn. Nó cho phép người dùng tự động tăng hoặc giảm quy mô khi lưu lượng truy cập tăng hoặc giảm đột biến.
Một số cân bằng tải phần mềm phổ biến: Nginx, HAProxy, AWS Elastic Load Balancer,…
Ưu điểm
- Linh hoạt và dễ dàng tuỳ chỉnh: Bạn có thể linh hoạt tùy biến, mở rộng và quản lý tải dễ dàng hơn so với cân bằng tải phần cứng. Hơn thế nữa, còn có nhiều phiên bản phần mềm cho bạn lựa chọn khi có nhu cầu mở rộng quy mô vượt quá khả năng ban đầu.
- Chi phí rẻ hơn so với cân bằng tải phần cứng.
Nhược điểm
Khi mở rộng quy mô vượt quá dung lượng có thể gây ra độ trễ ban đầu. Điều này thường xảy ra khi phần mềm cân bằng tải đang được cấu hình, phải xử lý thêm dữ liệu tại phần mềm.
Cân bằng tải phần mềm có thể yêu cầu nhiều tài nguyên hệ thống và có thể không đủ mạnh để xử lý lượng lớn yêu cầu trong một số trường hợp.
Nên chọn Load Balancing nào?
Chọn loại cân bằng tải nào còn tùy thuộc vào nhu cầu và mục đích sử dụng của bạn.
Cân bằng tải phần cứng xử lý được lượng lớn lưu lượng truy cập. Tuy nhiên, bạn phải tốn chi phí đầu tư ban đầu, cấu hình và bảo trì liên tục. Nếu chỉ dùng cân bằng tải vào các đợt cao điểm có thể bạn sẽ không sử dụng nó hết công suất. Tuy nhiên, nếu lưu lượng truy cập tăng vượt khả năng của các máy chủ hiện tại thì ảnh hưởng đến quá trình truy cập của khách hàng. Việc này sẽ cải thiện khi bạn bổ sung thêm một bộ cân bằng tải mới.
Cân bằng tải phần mềm linh hoạt hơn. Bạn có thể tăng hoặc giảm số lượng dễ dàng. Nó cũng tương thích hơn với môi trường điện toán đám mây hiện đại. Thêm vào đó, sử dụng cân bằng tải phần mềm giúp bạn tiết kiệm chi phí thiết lập, quản lý và sử dụng theo thời gian.
Các thuật toán Load Balancing
Hệ thống Load Balancing sẽ chọn server backend để chuyển tiếp yêu cầu dựa trên sự kết hợp của các tiêu chí và thuật toán. Các tiêu chí gồm:
- Tình trạng hiện tại của server
- Số lượng yêu cầu mà server đang xử lý
Cân bằng tải sẽ dùng các thuật toán như các quy tắc để xác định máy chủ tốt nhất phục vụ cho yêu cầu của khách truy cập. Các thuật toán ấy bao gồm:
Round Robin
Đây là thuật toán cân bằng tải đơn giản nhất. Các yêu cầu sẽ được phân phối theo tuần tự từ danh sách các máy chủ theo thứ tự. Bộ cân bằng tải sẽ gửi yêu cầu đầu tiên cho server đầu tiên trong danh sách. Sau đó đến server tiếp theo theo thứ tự trong danh sách. Quy trình này sẽ được bắt đầu lại từ đầu khi hết danh sách. Thuật toán này đảm bảo việc phân chia công bằng giữa các server. Tuy nhiên, không phản ánh được tình trạng hiện tại của các máy chủ.
Weighted Round Robin
Thuật toán này cho phép quản trị viên chỉ định các trọng số khác nhau cho mỗi máy chủ. Việc chỉ định này có thể dựa trên mức độ ưu tiên hoặc dung lượng của máy chủ. Trọng số sẽ được cấu hình trong bản ghi DNS. Với thuật toán này, máy chủ có trọng số lớn hơn sẽ nhận được nhiều lưu lượng đến hơn.
IP Hash
Thuật toán này sẽ dựa vào địa chỉ IP của người truy cập để quyết định máy chủ nào sẽ xử lý yêu cầu. Nó giúp duy trì phiên người dùng nhất quán, lưu trữ thông tin trạng thái của người dùng như giỏ hàng,… Điều này cũng đồng nghĩa với việc: người dùng cụ thể sẽ luôn kết nối với cùng một server. Tuy nhiên, có thể dẫn đến mất cân bằng nếu một số IP nguồn hoặc đích đặc biệt tập trung nhiều yêu cầu hơn.
Least Connections
Bộ cân bằng tải sẽ gửi yêu cầu cho server tại thời điểm đó có ít kết nối với máy khách nhất. Vì phải đếm số kết nối đang hoạt động của máy chủ nên Least Connections được gọi là thuật toán động. Thuật toán này được khuyên dùng khi tốc độ truy cập bị chậm. Nó đảm bảo rằng không có máy chủ nào bị quá tải hay ở chế độ rảnh.
Least Response Time
Bộ cân bằng tải sẽ gửi yêu cầu cho server có thời gian phản hồi nhanh nhất và ít kết nối hoạt động nhất. Do đó, khách truy cập sẽ nhận được phản hồi ngay lập tức khi sử dụng thuật toán này.
Resource-based
Bộ cân bằng tải phân phối lưu lượng bằng cách phân tích tải của máy chủ hiện tại. Mục đích là để xem xét tính khả dụng của tài nguyên trên mỗi máy chủ tại thời điểm đó. Trước khi phân phối lưu lượng, nó truy vấn một phần mềm chuyên dụng được gọi là tác nhân. Tác nhân sẽ chạy trên mỗi máy chủ. Bộ cân bằng tải sẽ đo lường tính khả dụng của bộ xử lý và bộ nhớ trung tâm. Sau đó, Load Balancing kiểm tra tác nhân để có đủ tài nguyên trống trước khi phân phối lưu lượng truy cập đến máy chủ đó.
Source
Load Balancing sẽ gửi yêu cầu cho server dựa trên một chuỗi các IP gốc của yêu cầu như IP của khách. Với phương thức này, người dùng cụ thể sẽ luôn kết nối với cùng một server.
Các thuật toán được cung cấp cho quản trị viên sẽ tuỳ thuộc vào công nghệ mà Load Balancing của bạn đang sử dụng. Mỗi thuật toán sẽ phù hợp với các hoàn cảnh khác nhau. Việc lựa chọn thuật toán phù hợp sẽ giúp tối ưu hiệu suất và độ tin cậy cho hệ thống.
Các loại giao thức mà Load Balancing có thể xử lý là gì?
Hệ thống cân bằng tải có thể tạo quy định chuyển tiếp với 4 loại giao thức chính:
- HTTP: Bộ cân bằng HTTP trực tiếp đưa yêu cầu dựa trên cơ chế HTTP chuẩn. Bộ cân bằng tải đặt các tiêu đề X-Forwarded-For, X-Forwarded-Proto và X-Forwarded-Port. Mục đích là để cung cấp các thông tin về các yêu cầu gốc tới hệ thống backend.
- HTTPS: Cân bằng HTTPS hoạt động tương tự như HTTP. HTTPS bổ sung mã hóa, HTTP thì không. Có hai cách để làm việc với mã hoá:
- Cách 1: Cho phép SSL đi từ đầu đến cuối hệ thống để duy trì mã hoá.
- Cách 2: Đặt bộ giải mã trên Load Balancing và gửi dữ liệu không mã hoá đến cuối hệ thống.
- TCP: TCP là giải pháp trong trường hợp không dùng giao thức HTTP và HTTPS. Nó giúp lượng truy cập vào một cụm cơ sở dữ liệu có thể được mở rộng trên toàn server.
- UDP: Gần đây, một số hệ thống đã hỗ trợ cân bằng tải cho giao thức Internet cốt lõi như DNS và syslogd sử dụng UDP.
Các quy định chuyển tiếp này sẽ xác định giao thức và cổng vào trên bộ cân bằng tải. Sau đó sẽ được bản đồ hóa giao thức và cổng mà Load Balancing dùng để chuyển dữ liệu đến hệ thống backend.
Cơ chế kiểm tra “sức khoẻ” (Health Check) các server
Hệ thống cân bằng tải chỉ chuyển tiếp dữ liệu đến các server backend hoạt động tốt. Do đó, nó được đánh giá cao về tính khả dụng và độ tin cậy cao. Hệ thống sẽ gửi các yêu cầu kiểm tra đến backend server để kiểm tra backend đó có hoạt động tốt hay không. Backend server phản hồi lại đúng cách nghĩa là server đó “khoẻ mạnh” và ngược lại. Server nào “không khoẻ mạnh” sẽ bị loại ra khỏi danh sách các server được phân phối tải. Cho đến khi sự cố được khắc phục và server có thể phản hồi khi hệ thống kiểm tra “sức khoẻ” thì nó mới có thể gia nhập lại hệ thống và thực hiện các nhiệm vụ.
Cơ chế này giúp phát hiện lỗi từ server kịp thời, tránh gián đoạn hệ thống ảnh hưởng đến người truy cập. Tùy thuộc vào load balancer sử dụng phần mềm hay phần cứng mà bạn có thể quy định tần suất gửi health check đến server backend.
Trên đây là tất tần tật các khái niệm về “Load Balancing (cân bằng tải) là gì?”. Hy vọng sẽ giúp ích được cho bạn trong quá trình xây dựng hệ thống backend của bạn.