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:
- Thuật toán cân bằng tải (bao gồm Round Robin, Least Connection, và IP Hash).
- Danh sách máy chủ, Cổng (đảm nhận việc Nhận, và xử lý các yêu cầu).
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
balance roundrobin
mode http
server blog1 blog1.yourdomain.com:80 check
server blog1 blog1.yourdomain.com:80 check
Trong đó:
- balance roundrobin: Là thuật toán cân bằng tải, các yêu cầu sẽ được phân phối đến các máy chủ. Đây chính là phương pháp sử dụng mặc định.
- mode http: Là chỉ định proxy layer 7
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:
- Tập các địa chỉ IP và Cổng (VD: 10.10.10.86:80, *:443).
- Các ACL.
- Các backend nhận, xử lý yêu cầu.
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.
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://cdn.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.
Hình minh họa sau đây là một ví dụ về cân bằng tải Layer 7.
Theo ví dụ, khi người dùng gửi yêu cầu truy cập đến https://cdn.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://cdn.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.
>>Xem thêm: HAProxy with SSL Pass-Through
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í.
>>Xem thêm: [ Proxy Là Gì ] Tính Năng Và Hướng Dẫn Cài Đặt Proxy Server
Nhà cung cấp Tên Miền - Hosting - VPS tốt nhất Việt Nam
Là đơn vị thuộc top 3 lĩnh vực dịch vụ lưu trữ website tại Việt Nam, Hosting Việt được đánh giá là nhà cung cấp tên miền giá rẻ và Hosting giá rẻ cũng như luôn nhận được nhiều lời giới thiệu từ diễn đàn tin học về nơi mua Hosting ở đâu tốt . Chỉ từ 50.000đ/tháng, người dùng đã có ngay cho mình một Hosting để thỏa sức học tập, nghiên cứu hoặc chạy demo website… Bên cạnh đó, Hosting Việt còn là đơn vị luôn tiên phong trong công nghệ điện toán đám mây (Cloud Hosting),gói thuê server với băng thông khủng không giới hạn.
Hosting Việt có đa dạng gói dịch vụ, bên cạnh những gói giá siêu rẻ 50.000đ/tháng, nhà cung cấp còn có những Vps giá rẻ chất lượng dành cho nhiều nhóm doanh nghiệp khác nhau. Các gói này luôn đáp ứng đủ nhu cầu lưu trữ, truy cập hàng chục nghìn người mỗi ngày.
Ngoài ra, với dịch vụ chăm sóc khách hàng chuyên nghiệp, đội ngũ kỹ thuật viên có chuyên môn cao sẽ nhanh chóng hỗ trợ, xử lý các vấn đề phát sinh. Từ đó, giúp người dùng có được sự trải nghiệp mượt mà, thú vị.
Qua bài viết trên Hosting Việt đã giúp bạn có thêm nhiều thông tin bổ ích! Hi vọng bạn sẽ có thể trang bị thêm thật nhiều kiến thức khác mà chúng tôi đã chia sẻ! Nếu thấy bài viết này hữu ích hãy subscribe để theo dõi những thông tin mới nhất từ Hosting Việt nhé.
Chúc các bạn thành công!