Trong các hệ thống website, ứng dụng web hoặc API có lượng truy cập lớn, việc đảm bảo tốc độ truy cập nhanh và hệ thống luôn ổn định là điều rất quan trọng. Đây chính là lúc HAProxy trở thành một giải pháp cực kỳ mạnh mẽ.
HAProxy là viết tắt của High Availability Proxy, một phần mềm mã nguồn mở chuyên dùng cho load balancing (cân bằng tải) và reverse proxy.
Nói đơn giản, HAProxy đứng ở giữa người dùng và các máy chủ backend, sau đó phân phối request đến từng server sao cho hợp lý nhất. (DigitalOcean)
Ví dụ:
Người dùng truy cập:
https://domain.com
Thay vì request đi thẳng vào một server duy nhất, HAProxy sẽ tiếp nhận request trước rồi chuyển tiếp đến:
web01
web02
web03
Điều này giúp hệ thống:
-
tăng tốc độ xử lý
-
tránh quá tải một server
-
tăng tính sẵn sàng (high availability)
-
giảm downtime
-
dễ mở rộng hệ thống
HAProxy có thể làm những gì?
HAProxy không chỉ đơn thuần là cân bằng tải mà còn hỗ trợ rất nhiều tính năng mạnh.
1. Load Balancing (Cân bằng tải)
Đây là chức năng quan trọng nhất.
HAProxy sẽ chia đều request đến nhiều server backend.
Ví dụ:
1000 request / phút
Nếu có 4 server, HAProxy có thể chia đều:
250 request / server
giúp tránh tình trạng nghẽn server.
2. Reverse Proxy
HAProxy hoạt động như một reverse proxy.
Người dùng chỉ nhìn thấy IP hoặc domain của HAProxy, còn backend server sẽ được ẩn phía sau.
Điều này giúp:
-
tăng bảo mật
-
che IP server thật
-
dễ quản lý SSL
-
dễ routing domain/subdomain
3. SSL Offloading / SSL Termination
HAProxy có thể xử lý SSL/TLS thay cho backend.
Ví dụ:
HTTPS -> HAProxy -> HTTP backend
Điều này giúp giảm tải CPU cho web server.
4. Health Check
HAProxy tự động kiểm tra backend server còn sống hay không.
Ví dụ:
server web1 10.0.0.10:80 check
Nếu server lỗi hoặc timeout, HAProxy sẽ tự động loại khỏi hệ thống.
5. Failover / High Availability
Nếu một server bị lỗi, request sẽ tự động chuyển sang server khác.
Ví dụ:
web1 down -> chuyển sang web2
Điều này giúp website luôn online.
Các mô hình Balance của HAProxy và ý nghĩa
1. Round Robin
Đây là mô hình phổ biến nhất.
HAProxy chia request theo vòng lặp tuần tự.
Ví dụ có 3 server:
web1
web2
web3
Request sẽ đi như sau:
req1 -> web1
req2 -> web2
req3 -> web3
req4 -> web1
Ý nghĩa:
-
chia đều request
-
đơn giản
-
phù hợp khi server cấu hình giống nhau
Ví dụ config:
balance roundrobin
2. Least Connection
Request sẽ được gửi đến server có ít kết nối nhất.
Ví dụ:
web1 = 120 connections
web2 = 40 connections
Request mới sẽ vào:
web2
Ý nghĩa:
-
tối ưu cho hệ thống traffic động
-
phù hợp website nhiều user online cùng lúc
-
tốt hơn round robin trong thực tế
Config:
balance leastconn
3. Source / IP Hash
HAProxy dựa vào IP client để quyết định server.
Ví dụ:
192.168.1.10 -> web1
192.168.1.10 -> luôn web1
Ý nghĩa:
-
giữ phiên đăng nhập ổn định
-
sticky session
-
phù hợp web login, giỏ hàng
Config:
balance source
4. URI Hash
Dựa vào URL hoặc đường dẫn.
Ví dụ:
/images/logo.png -> web1
/css/style.css -> web2
Ý nghĩa:
-
tối ưu cache
-
phù hợp static content
-
CDN cache
5. Random
Chọn server ngẫu nhiên.
balance random
Ý nghĩa:
-
chia tải ngẫu nhiên
-
ít dùng hơn round robin
Nên dùng mô hình nào?
Anh gợi ý thực tế:
-
website thường → roundrobin
-
website traffic lớn → leastconn
-
web login / session → source
-
cache / static file → uri hash
Kết luận
HAProxy là một giải pháp cực kỳ mạnh cho:
-
load balancing
-
reverse proxy
-
SSL termination
-
health check
-
high availability
Đây là công cụ gần như bắt buộc khi triển khai hệ thống web chuyên nghiệp hoặc cụm nhiều VPS. (LogicMonitor)
Chúc các bạn thành công