Giống như một lễ tân khách sạn chào đón khách, kiểm tra giấy tờ của họ, và hướng dẫn họ đến các phòng cụ thể, bộ cân bằng tải quản lý luồng dữ liệu trong hệ thống nhằm đảm bảo hệ thống có khả năng mở rộng theo chiều ngang.
Bằng cách phân phối hiệu quả khối lượng công việc qua nhiều máy chủ, bộ cân bằng tải giúp duy trì hiệu suất của hệ thống ngay cả trong những thời điểm sử dụng cao điểm.
Lợi ích của Cân Bằng Tải
Bộ cân bằng tải mang lại nhiều lợi ích:
Giảm Độ Trễ: Bộ cân bằng tải giúp giảm thiểu thời gian phản hồi cho các yêu cầu của người dùng. Việc giảm độ trễ này đồng nghĩa với trải nghiệm người dùng tốt hơn.
Giảm Thời Gian Gián Đoạn: Bộ cân bằng tải có thể phát hiện và chuyển hướng lưu lượng truy cập tránh khỏi các máy chủ không hoạt động hoặc gặp sự cố.
Khả Năng Mở Rộng: Bộ cân bằng tải là chìa khóa để mở rộng theo chiều ngang. Khi nhu cầu lưu lượng tăng lên, có thể thêm nhiều máy chủ, và bộ cân bằng tải sẽ tự động phân phối khối lượng công việc qua cơ sở hạ tầng mở rộng.
Bộ cân bằng tải trông có vẻ đơn giản, và đó là một điều tốt. Các nhà phát triển phần mềm chỉ cần tích hợp nó vào ngăn xếp ứng dụng của họ và mong đợi nó hoạt động như mong muốn. Tuy nhiên, có một số khía cạnh của bộ cân bằng tải mà các nhà phát triển phải hiểu rõ để sử dụng chúng hiệu quả trong việc mở rộng quy mô ứng dụng.
Tại sao cần Cân Bằng Tải?
Trong lĩnh vực các ứng dụng có lượng truy cập cao, khả năng xử lý một số lượng lớn các yêu cầu đồng thời là rất quan trọng để duy trì hiệu suất tối ưu và sự hài lòng của người dùng. Dựa vào một máy duy nhất trở nên không khả thi và không đủ. Đây là lúc hai khía cạnh quan trọng của khả năng mở rộng hệ thống cần được xem xét: phân phối khối lượng công việc và tính dự phòng.
1. Phân Phối Khối Lượng Công Việc
Khi xây dựng một ứng dụng có lượng truy cập cao cần phục vụ hàng nghìn yêu cầu đồng thời, dựa vào một máy duy nhất là không khả thi. Để đảm bảo hệ thống có thể xử lý khối lượng công việc tăng lên, mở rộng theo chiều ngang trở nên cần thiết.
Mở rộng theo chiều ngang, còn được gọi là mở rộng ra ngoài, là một kỹ thuật bao gồm việc thêm nhiều máy vào hệ thống để tăng dung lượng của nó. Bằng cách phân phối khối lượng công việc qua nhiều máy, ứng dụng có thể xử lý số lượng yêu cầu lớn hơn và duy trì hiệu suất tối ưu.
Bộ cân bằng tải đóng vai trò quan trọng trong việc tạo điều kiện cho phân phối khối lượng công việc này. Chúng hoạt động như điểm đầu vào cho các yêu cầu đến và định tuyến chúng một cách thông minh đến các máy có sẵn dựa trên nhiều thuật toán và chính sách khác nhau, ngăn chặn bất kỳ máy nào bị quá tải.
2. Tính Dự Phòng
Tính khả dụng là một chỉ số quan trọng đo lường khả năng của hệ thống duy trì hoạt động và có thể truy cập được đối với người dùng. Tính khả dụng cao nâng cao khái niệm này lên một mức cao hơn, nhắm đến thời gian hoạt động liên tục gần như không gián đoạn. Thông thường, một máy chủ phải có thời gian hoạt động 99,999% để được coi là có tính khả dụng cao.
Để đạt được mức độ khả dụng cao như vậy, cần loại bỏ mọi điểm thất bại duy nhất (SPOF) trong lớp hạ tầng hoặc phần mềm. Bộ cân bằng tải đóng góp vào mục tiêu này bằng cách cung cấp tính dự phòng và khả năng chuyển đổi dự phòng.
Hãy xem xét một kịch bản trong đó một dịch vụ backend chịu trách nhiệm xử lý các yêu cầu. Để làm cho dịch vụ này có tính khả dụng cao, nhiều phiên bản của dịch vụ được triển khai. Tuy nhiên, một số phiên bản có thể trở nên không hoạt động, dẫn đến tình trạng không khả dụng nếu các yêu cầu được định tuyến đến chúng. Bộ cân bằng tải liên tục giám sát trạng thái của các phiên bản backend và chỉ định tuyến các yêu cầu đến những phiên bản còn hoạt động tốt.
Các loại Bộ Cân Bằng Tải
Có hai loại chính của bộ cân bằng tải mà các nhà phát triển có thể lựa chọn:
1. Bộ Cân Bằng Tải Lớp 4
Bộ cân bằng tải lớp 4 hoạt động ở tầng truyền tải của mô hình OSI (Open Systems Interconnection), đưa ra quyết định định tuyến chỉ dựa trên thông tin có sẵn tại tầng này, chẳng hạn như địa chỉ IP và số cổng.
Một đặc điểm chính của bộ cân bằng tải lớp 4 là chúng không kiểm tra nội dung của các gói dữ liệu. Chúng tập trung vào thông tin mức mạng và không nhìn thấy thông điệp thực tế hoặc tải trọng được mang theo bởi các gói.
Ưu Điểm của Bộ Cân Bằng Tải Lớp 4:
Đơn Giản: Bộ cân bằng tải lớp 4 dễ vận hành và duy trì hơn so với các bộ cân bằng tải ở tầng cao hơn. Vì chúng hoạt động ở tầng truyền tải, chúng đòi hỏi ít cấu hình và quản lý hơn.
Hiệu Suất Tốt Hơn: Bằng cách tránh việc kiểm tra nội dung của các gói dữ liệu, bộ cân bằng tải lớp 4 có thể đạt hiệu suất tốt hơn. Chúng không thực hiện tra cứu dữ liệu hoặc kiểm tra gói sâu, dẫn đến các quyết định định tuyến nhanh hơn và giảm độ trễ.
Tăng Cường Bảo Mật: Bộ cân bằng tải lớp 4 không cần giải mã dữ liệu TLS (Transport Layer Security) vì chúng hoạt động dưới tầng ứng dụng. Điều này tăng cường bảo mật bằng cách duy trì tính bảo mật của lưu lượng mã hóa và giảm bề mặt tấn công.
Xử Lý Kết Nối Hiệu Quả: Bộ cân bằng tải lớp 4 thường chỉ thiết lập một kết nối TCP giữa khách hàng và máy chủ được chọn. Điều này giảm thiểu chi phí quản lý nhiều kết nối và cải thiện hiệu quả tổng thể.
Nhược Điểm của Bộ Cân Bằng Tải Lớp 4:
Thiếu Khả Năng Cân Bằng Tải Thông Minh: Bộ cân bằng tải lớp 4 không thể đưa ra quyết định định tuyến thông minh dựa trên nội dung của các gói dữ liệu. Chúng chỉ dựa vào thông tin mức mạng, điều này có thể không luôn luôn dẫn đến phân phối tải tối ưu.
Khả Năng Định Tuyến Hạn Chế: Bộ cân bằng tải lớp 4 không thể định tuyến lưu lượng đến các loại dịch vụ khác nhau hoặc thực hiện định tuyến dựa trên nội dung. Chúng chỉ giới hạn trong việc định tuyến dựa trên địa chỉ IP và số cổng, có thể không cung cấp đủ tính linh hoạt cho các kiến trúc ứng dụng phức tạp.
Không Có Khả Năng Lưu Trữ (Caching): Vì bộ cân bằng tải lớp 4 không thể nhìn thấy nội dung của các gói dữ liệu, chúng không thể thực hiện việc lưu trữ. Việc lưu trữ ở mức bộ cân bằng tải có thể cải thiện hiệu suất đáng kể bằng cách phục vụ nội dung được yêu cầu thường xuyên trực tiếp từ bộ nhớ cache của bộ cân bằng tải.
Xem thêm: Giới thiệu Bộ Cân Bằng Tải Lớp 4
2. Bộ Cân Bằng Tải Lớp 7
Trái ngược với bộ cân bằng tải lớp 4, bộ cân bằng tải lớp 7 hoạt động ở tầng ứng dụng của mô hình OSI. Chúng xử lý các giao thức lớp 7 như HTTP(S), WebSocket, FTP và SMTP.
Điểm khác biệt chính giữa bộ cân bằng tải lớp 4 và lớp 7 nằm ở khả năng kiểm tra nội dung của các gói dữ liệu. Trong khi bộ cân bằng tải lớp 4 đưa ra quyết định định tuyến chỉ dựa trên thông tin mức mạng, bộ cân bằng tải lớp 7 có thể kiểm tra dữ liệu thực tế trong các gói và đưa ra quyết định định tuyến dựa trên thông tin đó.
Ưu Điểm của Bộ Cân Bằng Tải Lớp 7:
Cân Bằng Tải Thông Minh Hơn: Bộ cân bằng tải lớp 7 có thể đưa ra quyết định định tuyến thông minh dựa trên nội dung của các gói dữ liệu. Chúng có thể kiểm tra tiêu đề, URL, cookie và thông tin ứng dụng khác để định tuyến yêu cầu đến các phiên bản máy chủ phù hợp nhất. Điều này cho phép các chiến lược cân bằng tải tiên tiến hơn và tối ưu hóa sử dụng tài nguyên.
Khả Năng Lưu Trữ (Caching): Bộ cân bằng tải lớp 7 có thể lưu trữ nội dung được yêu cầu thường xuyên, giảm tải cho các máy chủ backend và cải thiện thời gian phản hồi. Bằng cách phục vụ nội dung đã lưu trữ trực tiếp từ bộ cân bằng tải, độ trễ mạng được giảm thiểu và hiệu suất ứng dụng được cải thiện.
Chức Năng Reverse Proxy: Bộ cân bằng tải lớp 7 có thể hoạt động như một reverse proxy, cung cấp các tính năng bổ sung như kết thúc SSL, viết lại URL và sửa đổi yêu cầu/phản hồi. Điều này cho phép tối ưu hóa bảo mật, hiệu suất và đơn giản hóa kiến trúc ứng dụng.
Nhược Điểm của Bộ Cân Bằng Tải Lớp 7:
Chi Phí Cao Hơn: Bộ cân bằng tải lớp 7 phức tạp hơn và yêu cầu tài nguyên nhiều hơn so với bộ cân bằng tải lớp 4. Chúng cần nhiều sức mạnh xử lý và bộ nhớ để kiểm tra và thao tác dữ liệu ở mức ứng dụng, dẫn đến chi phí vận hành và bảo trì cao hơn.
Giải Mã Dữ Liệu: Để kiểm tra nội dung của lưu lượng mã hóa (HTTPS), bộ cân bằng tải lớp 7 cần giải mã các gói dữ liệu. Quá trình xử lý bổ sung này có thể ảnh hưởng đến hiệu suất và giới thiệu các vấn đề bảo mật, vì bộ cân bằng tải cần truy cập vào khóa mã hóa.
Nhiều Kết Nối TCP: Bộ cân bằng tải lớp 7 thường duy trì hai kết nối TCP: một giữa khách hàng và bộ cân bằng tải, và một giữa bộ cân bằng tải và máy chủ backend. Điều này có thể dẫn đến tăng sử dụng tài nguyên và tiềm năng gây quá tải hiệu suất so với bộ cân bằng tải lớp 4.
Mặc dù có một số nhược điểm, nhưng bộ cân bằng tải lớp 7 đã trở nên phổ biến hơn rất nhiều trong những năm qua. Phần lớn thời gian, tốt hơn là nên chọn bộ cân bằng tải lớp 7 trừ khi có yêu cầu mạnh mẽ đối với bộ cân bằng tải lớp 4.
Xem thêm: Giới thiệu Bộ cân bằng tải lớp 7
Thuật toán Cân Bằng Tải
Hiệu quả của việc cân bằng tải phụ thuộc rất nhiều vào thuật toán được sử dụng để xác định yêu cầu nào sẽ được định tuyến đến máy chủ nào.
Thuật toán cân bằng tải có thể được chia thành hai loại chính: tĩnh và động.
Thuật Toán Cân Bằng Tải Tĩnh
Thuật toán cân bằng tải tĩnh phân phối lưu lượng giữa các máy chủ dựa trên các quy tắc được xác định trước hoặc cấu hình cố định. Các thuật toán này không thích ứng với khối lượng công việc của máy chủ thay đổi và dựa vào các tiêu chí được xác định trước để phân phối yêu cầu.
Round Robin: Trong thuật toán round-robin, các yêu cầu được phân phối tuần tự qua một nhóm các máy chủ. Mỗi máy chủ lần lượt xử lý các yêu cầu đến một cách tuần hoàn. Giả định chính là dịch vụ không có trạng thái, vì không có đảm bảo rằng các yêu cầu tiếp theo từ cùng một người dùng sẽ đến cùng một phiên bản máy chủ.
Sticky Round Robin: Sticky round robin là một sự cải tiến của thuật toán round-robin cơ bản. Nó đảm bảo rằng các yêu cầu tiếp theo từ cùng một người dùng sẽ được định tuyến đến cùng một phiên bản máy chủ. Điều này có thể phù hợp trong một số trường hợp sử dụng mà việc duy trì tính đồng bộ phiên làm việc là quan trọng.
Weighted Round Robin: Thuật toán round-robin có trọng số gán một giá trị trọng số cụ thể cho mỗi phiên bản máy chủ. Trọng số xác định tỷ lệ lưu lượng sẽ được chuyển đến một máy chủ cụ thể. Các máy chủ có trọng số cao hơn nhận được phần lớn lưu lượng, trong khi các máy chủ có trọng số thấp hơn nhận được phần lưu lượng ít hơn.
Hash-Based: Thuật toán dựa trên hàm băm phân phối các yêu cầu dựa trên giá trị hàm băm của một khóa cụ thể, chẳng hạn như kết hợp địa chỉ IP nguồn và đích. Hàm băm xác định phiên bản máy chủ nào sẽ xử lý yêu cầu. Thuật toán này đảm bảo rằng các yêu cầu có cùng giá trị hàm băm được định tuyến liên tục đến cùng một phiên bản máy chủ.
Thuật Toán Cân Bằng Tải Động
Thuật toán cân bằng tải động xem xét các yếu tố thời gian thực thay đổi động để đưa ra quyết định định tuyến. Các thuật toán này thích ứng với trạng thái hiện tại của các máy chủ và phân phối lưu lượng tương ứng.
Least Connections: Thuật toán least connections gán một yêu cầu mới cho phiên bản máy chủ có ít kết nối hoạt động nhất. Số lượng kết nối được xác định dựa trên khả năng tính toán tương đối của mỗi máy chủ. Phiên bản máy chủ với nhiều tài nguyên hơn có thể hỗ trợ một số lượng kết nối cao hơn so với các phiên bản có ít tài nguyên hơn. Thuật toán này phân phối tải đều qua các máy chủ dựa trên số lượng kết nối hiện tại.
Lowest Response Time: Trong thuật toán lowest response time, bộ cân bằng tải gán các yêu cầu đến máy chủ có thời gian phản hồi thấp nhất. Mục tiêu là giảm thiểu thời gian phản hồi tổng thể của hệ thống bằng cách định tuyến các yêu cầu đến máy chủ có thể cung cấp phản hồi nhanh nhất.
Mở rộng Bộ Cân Bằng Tải
Trong khi bộ cân bằng tải giúp mở rộng ứng dụng, điều quan trọng là đảm bảo rằng chúng không trở thành nút thắt cổ chai cho khả năng mở rộng. Dưới đây là một số kỹ thuật chính để mở rộng bộ cân bằng tải:
DNS Round Robin: Là một kỹ thuật đơn giản để mở rộng bộ cân bằng tải. Nhiều bộ cân bằng tải được cấu hình với các địa chỉ IP khác nhau nhưng chia sẻ cùng một tên miền. Khi một khách hàng gửi một truy vấn DNS cho tên miền, máy chủ DNS phản hồi với một trong các địa chỉ IP từ tập hợp cấu hình.
Clustered Configuration with HAProxy or Nginx: Các giải pháp cân bằng tải phần mềm như HAProxy hoặc NGINX Plus cung cấp một sự thay thế cho việc clustering dựa trên phần cứng để phân phối lưu lượng qua nhiều máy chủ. Trong một thiết lập cân bằng tải phần mềm, nhiều phiên bản của phần mềm cân bằng tải được cài đặt trên các máy chủ hoặc máy ảo riêng biệt. Những phiên bản này làm việc cùng nhau trong một cấu hình clustered để phân phối lưu lượng đến các máy chủ backend.
Global Server Load Balancing (GSLB): GSLB là một kỹ thuật mở rộng khái niệm cân bằng tải vượt ra ngoài một trung tâm dữ liệu hoặc vị trí địa lý duy nhất. Trong một thiết lập GSLB, nhiều trung tâm dữ liệu hoặc cụm máy chủ được triển khai ở các vị trí địa lý khác nhau. Mỗi trung tâm dữ liệu lưu trữ một bản sao của ứng dụng và các tài nguyên liên quan của nó.
Active-Passive Load Balancing: Là một chiến lược triển khai đảm bảo tính khả dụng cao bằng cách cung cấp một cơ chế chuyển đổi dự phòng đơn giản. Trong cấu hình cân bằng tải active-passive, hai bộ cân bằng tải được triển khai dự phòng. Bộ cân bằng tải chính, được gọi là active load balancer, chịu trách nhiệm phân phối lưu lượng đến các máy chủ backend. Bộ cân bằng tải thứ hai, được gọi là passive hoặc standby load balancer, ở trạng thái nhàn rỗi và không tham gia tích cực vào phân phối lưu lượng. Nó liên tục giám sát trạng thái và tình trạng của active load balancer. Trong trường hợp xảy ra sự cố hoặc ngừng hoạt động của active load balancer, passive load balancer phát hiện sự cố và tự động tiếp quản trách nhiệm xử lý lưu lượng.
Elastic Load Balancing with Cloud: Các bộ cân bằng tải tự động mở rộng quy mô là một tính năng mạnh mẽ được cung cấp bởi các nhà cung cấp đám mây, tự động điều chỉnh số lượng các phiên bản bộ cân bằng tải dựa trên lưu lượng đến. Trong một thiết lập bộ cân bằng tải tự động mở rộng quy mô, nhà cung cấp đám mây liên tục giám sát mô hình lưu lượng và việc sử dụng tài nguyên của các bộ cân bằng tải. Khi lưu lượng tăng lên, cơ chế tự động mở rộng quy mô tự động cung cấp thêm các phiên bản bộ cân bằng tải để xử lý tải tăng. Ngược lại, khi lưu lượng giảm, cơ chế tự động mở rộng quy mô loại bỏ các phiên bản bộ cân bằng tải dư thừa để tối ưu hóa việc sử dụng tài nguyên và chi phí.
Anycast Load Balancing: Là một kỹ thuật liên quan đến nhiều bộ cân bằng tải chia sẻ cùng một địa chỉ IP trên các vị trí địa lý khác nhau. Trong một thiết lập anycast load balancing, nhiều bộ cân bằng tải được triển khai ở nhiều vị trí khác nhau, như các trung tâm dữ liệu hoặc các vùng. Mỗi bộ cân bằng tải được gán cùng một địa chỉ IP, được gọi là địa chỉ anycast. Khi một khách hàng gửi một yêu cầu đến địa chỉ anycast, yêu cầu được định tuyến đến bộ cân bằng tải gần nhất có sẵn dựa trên cấu trúc mạng và các giao thức định tuyến.
Tóm lược
Trong bài viết này, chúng ta đã tìm hiểu rất nhiều về bộ cân bằng tải, cách chúng giúp mở rộng quy mô một ứng dụng, và cách để đảm bảo bộ cân bằng tải có thể mở rộng và có tính khả dụng cao.
Tóm tắt những điều đã học:
Bằng cách phân phối hiệu quả khối lượng công việc qua nhiều máy chủ, bộ cân bằng tải giúp duy trì hiệu suất hệ thống, ngay cả trong thời gian cao điểm.
Hai lý do chính để sử dụng bộ cân bằng tải là phân phối khối lượng công việc và tính dự phòng.
Có hai loại chính của bộ cân bằng tải - lớp 4 và lớp 7.
Bộ cân bằng tải lớp 4 đưa ra quyết định định tuyến chỉ dựa trên thông tin có sẵn ở lớp 4, chẳng hạn như địa chỉ IP và số cổng.
Bộ cân bằng tải lớp 7 có thể kiểm tra dữ liệu thực tế trong các gói và đưa ra quyết định định tuyến dựa trên thông tin đó.
Hiệu quả của việc cân bằng tải phụ thuộc rất nhiều vào thuật toán được sử dụng để xác định yêu cầu nào sẽ được định tuyến đến máy chủ nào. Có hai loại chính của thuật toán cân bằng tải - tĩnh và động.
Thuật toán cân bằng tải tĩnh phân phối lưu lượng giữa các máy chủ dựa trên các quy tắc được xác định trước hoặc cấu hình cố định. Các ví dụ bao gồm Round Robin, Sticky Round Robin, Weighted Round Robin, và Hash-based.
Thuật toán cân bằng tải động xem xét các yếu tố thời gian thực thay đổi động để đưa ra quyết định định tuyến. Các ví dụ bao gồm Least Connections và Lowest Response Time.
Trong khi bộ cân bằng tải giúp với khả năng mở rộng theo chiều ngang, cũng quan trọng để giữ cho bộ cân bằng tải có thể mở rộng và có tính khả dụng. Một vài kỹ thuật để mở rộng bộ cân bằng tải bao gồm DNS Round Robin, Cluster Configuration, GSLB, Active-Passive Load Balancing, Elastic Load Balancing với Cloud, Anycast Load Balancing, v.v.
Hy vọng rằng bài viết này đã cung cấp cho bạn một cái nhìn toàn diện về bộ cân bằng tải và cách chúng hỗ trợ trong việc mở rộng quy mô hệ thống.