Các loại Load Balancer bạn nên biết
Qua bài viết này,Bizfly Cloud sẽ giúp bạn hình dung được rõ ràng các loại load balancer và các khái niệm cơ bản có liên quan. Kết hợp các yếu tố này, chắc chắn bạn sẽ sở hữu được các phương pháp phù hợp để tăng hiệu suất và độ tin cậy của môi trường server.
Trường hợp không cân bằng tải
Sơ đồ sau đây sẽ giúp bạn thấy rõ trường hợp không có cân bằng tải load balancer thì hệ thống sẽ như thế nào:
Thông qua biểu đồ trên ta có thể thấy: người dùng kết nối trực tiếp với webserver (chẳng hạn như domain.com) và không có sự hiện diện của cân bằng tải. Điều này có nghĩa là trong trường hợp web server ngoại tuyến vì một số lý do; người dùng cuối sẽ không thể truy cập vào được. Hoặc nếu có số lượng lớn người dùng đang cùng lúc truy cập vào web server khiến web server gặp sự cố trong khi xử lý tải, người dùng cuối sẽ phải trải nghiệm một tốc độ xử lý chậm chạp, thậm chí không kết nối được với server.
Cân bằng tải Layer 4
Cân bằng tải Layer 4 (còn được gọi là cân bằng tải transport layer) được sử dụng phổ biến bởi nó có thể cân bằng tải lưu lượng mạng qua nhiều server một cách dễ dàng. Loại cân bằng tải này hoạt động dựa trên IP range/ domain và port, tức là nếu request của người dùng nhận được domain.com/ blog, lưu lượng truy cập sẽ được gửi đến backend quản lý tất cả các request của người dùng cho domain.com trên port 80.
Hãy xem sơ đồ dưới đây về ví dụ đơn giản của một cân bằng tải Layer 4:
Trong sơ đồ này, trước tiên người dùng kết nối với bộ cân bằng tải và sau đó request người dùng được gửi đến web server. Các web server được lựa chọn sẽ phản hồi trực tiếp request ngay lập tức. Thông thường, tất cả các web server đều chứa các dữ liệu tương tự để tránh gửi lại nội dung không nhất quán cho người dùng. Hãy nhớ rằng, tất cả các web server đều kết nối với server cơ sở dữ liệu tương tự.
Cân bằng tải Layer 7
Hay còn được gọi là cân bằng tải application layer, cân bằng tải layer 7 phức tạp hơn cân bằng tải Layer 4 trong việc cân bằng tải lưu lượng mạng. Cân bằng tải layer 7 hoạt động dựa trên nội dung request của người dùng trong đó cân bằng tải gửi request của người dùng đến web server theo nội dung của một request. Điều này rất hữu ích giúp người dùng có thể chạy nhiều web server trên cùng một domain và port.
Hãy xét sơ đồ đơn giản dưới đây về cân bằng tải Layer 7:
Ví dụ cấu hình Frontend:
frontend http
bind *:80
mode http
acl url_blog path_beg /blog
use_backend blog-backend if url_blog
default_backend web-backend
Cụ thể như sau:
1. "Acl url_blog path_beg / blog" đáp ứng một request nếu đường dẫn request của người dùng bắt đầu bằng /blog.
2. "Use_backend blog-backend nếu url_blog" sử dụng ACL để proxy lưu lượng truy cập đến blog-backend.
3. "Default_backend web-backend" nhận dạng ra tất cả lưu lượng truy cập khác sẽ được chuyển tiếp đến blog-backend.
Các thuật toán sử dụng trong Load Balancing
Thuật toán đóng một vai trò quan trọng trong việc xác định server nào sẽ hoạt động trong quá trình cân bằng tải. HAProxy cung cấp nhiều tùy chọn cho thuật toán. Hơn nữa, các server có thể được cấp cho một weight parameter (thông số trọng lượng) để xử lý tần suất server được chọn so với các server khác.
HAProxy cung cấp nhiều tùy chọn thuật toán, nhưng chúng ta sẽ chỉ đề cập các tùy chọn thuật toán phổ biến nhất sau đây:
- Weight parameter
- Round Robin - là thuật toán mặc định lựa chọn các server theo phương pháp vòng tròn.
- Leastconn - Với thuật toán này, các server được lựa chọn dựa trên số lượng tối thiểu các kết nối. Các phiên dài nên sử dụng thuật toán này. Và tương tự, backend server cũng sẽ hoạt động theo phương pháp vòng tròn.
- Source - Việc lựa chọn server được dựa trên hàm băm của địa chỉ IP nguồn, chẳng hạn như IP của người dùng. Điều này sẽ đảm bảo được rằng người dùng sẽ kết nối với server phù hợp.
Sticky Session
Một số ứng dụng nhất định yêu cầu người dùng tiếp tục kết nối với cùng một backend server. Độ bền này được thực hiện thông qua các sticky session, sử dụng thông số appession trong backend.
Health Check
Health Check giúp kiểm tra xem backend có còn trống hay không trong việc định tuyến các request, điều này có nghĩa là không có sự can thiệp thủ công được sử dụng để loại bỏ backend không khả dụng. Health Check mặc định khởi chạy kết nối TCP để kiểm tra tính khả dụng của các backend server.
Nếu trong trường hợp một máy chủ thất bại trong việc health check, thì máy chủ đó sẽ không thể đáp ứng các request của server, theo mặc định nó sẽ bị vô hiệu hóa trong backend. Điều này tương đương với việc lưu lượng truy cập sẽ không được gửi đến backend server cho đến khi server "khỏe mạnh" trở lại. Nếu xem xét tình huống tồi tệ nhất là tất cả các backend server đều không thành công, thì các dịch vụ sẽ không khả dụng cho đến khi ít nhất một trong các backend server hoạt động trở lại…
Tuy nhiên, health check mặc định vẫn không đáp ứng đủ với một số loại backend, ví dụ như database servers trong những điều kiện nhất định.
High Availability (Tính sẵn sàng cao)
Như đã đề cập ở trên, cân bằng tải layer 4 và cân bằng tải layer 7 hoạt động dựa trên việc sử dụng một cân bằng tải để hướng lưu lượng truy cập đến một trong nhiều backend server. Trong cả hai loại cân bằng tải này đều tồn tại một điểm lỗi, vì vậy nếu cân bằng tải chính gặp sự cố bởi một số lý do hoặc bị quá tải bởi các requests, thì người dùng cuối có nguy cơ phải đối mặt với độ trễ cao hoặc tình trạng downtime của dịch vụ.
Để khắc phục vấn đề này, một cấu hình high availability nên được sử dụng vì nó có thể loại bỏ điểm lỗi duy nhất. Bằng cách thêm dự phòng vào mỗi lớp trong kiến trúc, cấu hình HA có thể ngăn chặn được một điểm lỗi máy chủ duy nhất. Về cơ bản, cân bằng tải cho phép dự phòng cho các backend server, nhưng để đạt được high availability thì cần có các bộ cân bằng tải dự phòng.
Sơ đồ sau đây sẽ giúp bạn hiểu được cách thiết lập high availability cơ bản:
Sơ đồ trên mô tả rõ ràng chức năng của nhiều cân bằng tải. Cụ thể ở đây có 2 cân bằng tải: cân bằng tải thứ nhất đang active, cân bằng tải thứ hai đang trong passive mode (có thể thêm nhiều cân bằng tải trong passive mode) đằng sau một địa chỉ IP tĩnh, hai cân bằng tải này có thể được remap từ server này đến server khác. Với kiểu thiết lập này, nếu một cân bằng tải bị fail, cơ chế chuyển đổi dự phòng ngay lập tức xác định ra và tự động phân bổ lại địa chỉ IP cho một trong các server đang trong passive mode.
Kết luận
Qua bài viết trên đây, Bizfly Cloud đã giúp bạn hình dung được rõ ràng các loại load balancer và các khái niệm cơ bản có liên quan. Kết hợp các yếu tố này, chắc chắn bạn sẽ sở hữu được các phương pháp phù hợp để tăng hiệu suất và độ tin cậy của môi trường server.
Theo Bizfly Cloud chia sẻ
>> Có thể bạn quan tâm: Vì sao Load Balancer lại quan trọng với doanh nghiệp?