Chúng tôi tư vấn hệ thống và phần mềm tiên tiến trong lĩnh vực phân tích dữ liệu khách hàng, xây dựng kịch bản nâng cao trải nghiệm khách hàng đa kênh, giúp bạn chuyển đổi số hiệu quả và tối đa hóa doanh thu bán hàng.
Email
Điện thoại
HAProxy là gì? Các thuật ngữ và ứng dụng cân bằng tải của HAProxy
Bài viết mới
Dịch vụ
Cân bằng tải trong HAProxy là gì? Có mấy loại cân bằng tải? HAProxy và Nginx giống và khác nhau như thế nào?
Cân bằng tải trong HAProxy là gì? Có mấy loại cân bằng tải? HAProxy và Nginx giống và khác nhau như thế nào? Mời bạn cùng theo dõi bài tổng hợp sau để có lời giải cho các vấn đề này nhé.
HAProxy là gì?
HAProxy là từ viết tắt của cụm từ High Availability Proxy. Nó là một công cụ có mã nguồn mở được sử dụng để cân bằng tải TCP/HTTP, và là giải pháp máy chủ Proxy. Công cụ này hoạt động trên các môi trường Linux, FreeBSD, Solaris.
Công dụng của HAProxy là cải thiện hiệu năng, độ tin cậy của hệ thống máy chủ thông qua việc phân phối công việc cho nhiều máy chủ (cụ thể là web, ứng dụng, cơ sở dữ liệu).
Hiện nay, nhiều website lớn như Twitter, GoDaddy, Reddit, Bitbucket, GitHub, Stack Overflow, Speedtest.net, và các sản phẩm do Amazon Web Service cung cấp đều sử dụng HAProxy.
Các thuật ngữ, khái niệm trong HAProxy Trong HAProxy có nhiều thuật ngữ, khái niệm được sử dụng. Tuy nhiên, trong phạm vi bài viết này, chúng tôi chỉ đề cập đến những khái niệm thông dụng.
Access Control List (ACL) ACL được dùng để kiểm tra một vài điều kiện, đồng thời tiến hành các hành động tiếp theo dựa vào kết quả kiểm tra (ví dụ chặn một yêu cầu, lựa chọn một máy chủ). ACL cũng hỗ trợ việc điều tiết linh hoạt lưu lượng mạng dựa vào nhiều yếu tố (ví dụ dựa vào đường dẫn).
Backend Đây là tập hợp các máy chủ nhận các yêu cầu được điều tiết. Các backend này được được định nghĩa khi cấu hình HAProxy.
Có 2 loại cấu hình phổ biến được định nghĩa trong backend:
Backend chứa một hoặc nhiều máy chủ. Khi thêm nhiều máy chủ vào backend sẽ giúp cải thiện tải, hiệu năng cũng như độ tin cậy của dịch vụ. Bên cạnh đó, khi có một máy chủ trong backend xảy ra sự cố thì các máy chủ khác sẽ đảm nhận việc chịu tải cho máy chủ này.
Ví dụ:
backend web-backend
balance roundrobin
server web1 web1.yourdomain.com:80 check
server web2 web2.yourdomain.com:80 check
backend blog-backend
mode http
server blog1 blog1.yourdomain.com:80 check
Trong đó:
Frontend Frontend đóng vai trò định nghĩa cách thức mà các yêu cầu được điều tiết tới backend. Tương tự như backend, frontend cũng có thư mục frontend để định nghĩa các cấu hình frontend.
Cấu hình frontend gồm 3 thành phần sau:
Các backend nhận, xử lý yêu cầu. haproxy Các loại cân bằng tải trong HAProxy Sau đây là 3 loại cân bằng tải trong HAProxy
1. Không có cân bằng tải Đây là một kiến trúc đơn giản nhất của quá trình triển khai web.
Dưới đây là ví dụ mô phỏng kiến trúc này. Theo đó, người dùng được kết nối trực tiếp với máy chủ web thông qua internet mà không dùng đến dịch vụ cân bằng tải. Điều này có nghĩa, khi máy chủ web gặp sự cố, người dùng không thể kết nối với nó được. Ngoài ra, nếu có nhiều người truy cập cùng lúc thì có thể xảy ra tình trạng máy chủ web không đáp ứng được các yêu cầu, gây ảnh hưởng xấu đến trải nghiệm của người dùng.
haproxy
2. Layer 4 Load Balancing Để cân bằng tải các request đến nhiều máy chủ, bạn có thể dùng cân bằng tải layer 4 TCP (Transport layer – Tầng giao vận). Đây là phương pháp đơn giản, giúp điều hướng request bằng cách dựa vào IP, và Port.
Hình minh họa dưới đây là ví dụ về layer 4 load balancing.
Trong ví dụ này, khi request truy cập địa chỉ https://hostingviet.vn/, HAProxy sẽ thực hiện điều hướng đến backend web-backend xử lý.
Lưu ý:
Hai webserver phải có nội dung giống nhau nhằm có thể phản hồi một kết quả thống nhất cho người dùng. Để làm được điều này, bạn ưu tiên dùng chung một cơ sở dữ liệu cho 2 máy chủ web.
3. Layer 7 Load Balancing Đây là một phương pháp tương đối phức tạp vì cân bằng tải tại tầng layer 7 (Application layer – Tầng ứng dụng). Khi dùng cân bằng tải tại layer 7 sẽ giúp điều hướng các request đến nhiều backend khác nhau, bằng cách dựa vào nội dung request.
Chế độ cân bằng tải này cho phép bạn dễ dàng triển khai nhiều máy chủ web server trên cùng một tên miền duy nhất.
Theo ví dụ, khi người dùng gửi yêu cầu truy cập đến https://hostingviet.vn/ thì HAProxy sẽ thực hiện điều hướng request tới web-1-backend. Nếu người dùng gửi yêu cầu truy cập tới https://hostingviet.vn/about/ thì HAProxy sẽ tiến hành điều hướng request đến web-2-backend.
Các thuật toán cân bằng tải được sử dụng trong HAProxy Trong HAProxy, các thuật toán cân bằng tải được dùng là:
roundrobin: Đây là thuật toán mặc định của HAProxy. Nó thực hiện nhiệm vụ chuyển request đến máy chủ theo lượt. leastconn: Thuật toán đóng vai trò chuyển các request đến máy chủ có ít kết nối nhất. source: Thuật toán chuyển các request đến máy chủ dựa vào việc hash IP của người dùng, nhằm đảm bảo họ luôn được kết nối đến một máy chủ. Health Check của HAProxy Health check được dịch vụ cân bằng tải HAProxy sử dụng nhằm mục đích phát hiện những backend server đã sẵn sàng để xử lý các yêu cầu truy cập. Đây là một kỹ thuật giúp tránh việc loại bỏ máy chủ khỏi backend một cách thủ công khi nó chưa sẵn sàng. Bằng cách thiết lập kết nối TCP đến máy chủ, Health check sẽ kiểm tra được tính sẵn sàng xử lý request của backend server.
Khi không thể kết nối tới bất kỳ máy chủ nào, Health check tự động loại bỏ nó khỏi backend, đồng thời tất cả các traffic đều không được chuyển hướng đến máy chủ này cho đến khi nó thực hiện được Health check.
Trong trường hợp, toàn bộ máy chủ thuộc backend xảy ra sự cố, dịch vụ sẽ chuyển trạng thái không khả dụ (HAProxy hiển thị status code 500). Khi có một máy chủ thuộc backend được chuyển từ trạng thái không khả dụ sang sẵn sàng, thì thông báo này không còn hiển thị, và kết nối trở lại bình thường.
So sánh HAProxy vs Nginx Cả HAProxy và Nginx đều là dịch vụ cân bằng tải ổn định, được nhiều người sử dụng. HAProxy được phát triển để phục vụ cho mục đích cân bằng tải. Còn Nginx là một webserver có khả năng hoạt động như bộ cân bằng tải.
Giống nhau:
Hỗ trợ HTTP, HTTPS, websocket. Cân bằng tải HTTP, HTTPS Hoạt động ổn định, và hiệu quả. Có khả năng xử lý kết nối 10k mà không cần điều chỉnh. Cho phép tùy chỉnh định dạng của nhật ký. Khi muốn nhập nhật ký, bạn truy cập Kiban/ Splunk/ Graylog. Khác nhau:
HAProxy:
Có thêm cân bằng tải TCP, TCP-SSL. Tính năng health, điều kiện chuyển đổi dự phòng linh hoạt hơn Nginx. Có bộ nhớ đệm cơ bản. Cho xem chi tiết trạng thái máy chủ, các yêu cầu hoạt động. Có chức năng xuất số liệu, tích hợp các giải pháp giám sát. Hiệu suất hoạt động cao, phù hợp sử dụng để xử lý kết nối 100k, giao diện 40GbE. Là phần mềm miễn phí, có mã nguồn mở. Nhà phát triển thu phí bằng việc bán thiết bị phần cứng có cài đặt sẵn HAProxy. Nginx:
Người dùng phải trả phí để sử dụng dịch vụ cân bằng tải TCP – UDP. Bộ nhớ đệm linh hoạt hơn HAProxy. Cho phép tùy chỉnh định dạng nhật ký. Phiên bản miễn phí không có trang trạng thái. Chức năng xuất số liệu chỉ có trong phiên bản trả phí, nên gây khó khăn cho người dùng bản miễn phí trong việc vận hành bộ cân bằng tải. Phục vụ được các file cục bộ. Có khả năng hỗ trợ các ứng dụng FastCGI. Là một lõi mở, nhiều tính năng hữu dụng chỉ có ở bản tính phí.
Từ khóa tìm kiếm:
|
dịch vụ marketing