15/06/2026
Chia sẻ
4119 lượt xem

HAProxy (High Availability Proxy) là phần mềm mã nguồn mở phổ biến hàng đầu thế giới, dùng để cân bằng tải và làm proxy trung gian cho các ứng dụng TCP và HTTP. Nhờ khả năng cải thiện hiệu suất, tốc độ phản hồi và tính sẵn sàng cho các hệ thống website hoặc API, HAProxy đã trở thành giải pháp thường trực trong hạ tầng của nhiều tập đoàn lớn trên toàn cầu.

Trong bài viết dưới đây, hãy cùng Tenten khám phá chi tiết HAProxy là gì và các thuật ngữ, thuật toán cân bằng tải quan trọng cần biết để ứng dụng hiệu quả trong doanh nghiệp nhé! 

HAProxy là gì?

HAProxy (High Availability Proxy) là một phần mềm mã nguồn mở dùng để cân bằng tải (load balancer) và làm proxy trung gian cho các ứng dụng TCP và HTTP. Công nghệ này giúp phân tán lưu lượng truy cập mạng đến nhiều máy chủ, từ đó đảm bảo hệ thống luôn hoạt động ổn định và có tính sẵn sàng cao.

HAProxy hoạt động như một proxy trung gian giữa người dùng và các máy chủ backend, tiếp nhận các yêu cầu rồi phân phối đến các máy chủ phía sau. Phần mềm này hỗ trợ nhiều thuật toán cân bằng tải như Round Robin, Least Connection, Weighted Round Robin hay Source, đồng thời tích hợp các tính năng nâng cao như Health Check, chuyển mạch nội dung (Content Switching), quản trị qua file cấu hình chi tiết.

 HAProxy là phần mềm mã nguồn mở dùng để cân bằng tải và làm proxy ngược

Các tính năng của HAProxy

HAProxy được trang bị nhiều tính năng quan trọng giúp tối ưu hiệu suất, phân phối lưu lượng truy cập và đảm bảo tính sẵn sàng cao cho các hệ thống máy chủ và ứng dụng:

  • Hỗ trợ cân bằng tải (load balancing) ở cả lớp 4 (TCP) và lớp 7 (HTTP)
  • Hỗ trợ các giao thức HTTP, HTTP/2, gRPC và FastCGI
  • Chấm dứt kết nối SSL/TLS và quản lý chứng chỉ SSL động
  • Chuyển đổi nội dung dựa trên đặc điểm của request
  • Kiểm tra nội dung gói tin để định tuyến lưu lượng chính xác hơn
  • Giám sát tình trạng hoạt động của các máy chủ backend
  • Cung cấp cơ chế proxy minh bạch và xác thực HTTP
  • Giới hạn tốc độ và tần suất kết nối nhằm bảo vệ hệ thống
  • Ghi lại nhật ký chi tiết phục vụ công tác quản trị và giám sát
  • Cung cấp giao diện dòng lệnh (CLI) để quản lý nhanh chóng
  • Rewrite URL linh hoạt theo nhu cầu triển khai
  • Xử lý đa luồng để nâng cao hiệu năng hệ thống
  • Quản lý phiên làm việc của người dùng hiệu quả
  • Kiểm tra và lọc truy cập dựa trên nhiều điều kiện khác nhau
  • Tích hợp với các hệ thống backend phức tạp
  • Mở rộng khả năng xử lý lượng lớn kết nối đồng thời

Các thuật ngữ cần nắm trong HAProxy

Để cấu hình và quản trị HAProxy hiệu quả, trước tiên bạn cần hiểu rõ một số thuật ngữ quan trọng về HAProxy:

  • Access Control List (ACL): Danh sách kiểm soát truy cập dùng để kiểm tra các điều kiện của request như IP, URL, phương thức HTTP hoặc header, từ đó thực hiện các hành động như chuyển hướng, chọn backend hoặc chặn truy cập.
  • Global: Khối cấu hình tổng quát chứa các thiết lập áp dụng cho toàn bộ  HAProxy như số lượng kết nối tối đa, ghi log, quản lý tiến trình và các thông số liên quan đến hiệu năng hệ thống.
  • Defaults: Khối cấu hình mặc định giúp thiết lập các tham số dùng chung cho frontend và backend như mode, timeout, log hay maxconn, giúp giảm việc lặp lại cấu hình.
  • Frontend: Điểm tiếp nhận kết nối từ client, nơi định nghĩa địa chỉ IP, cổng lắng nghe và các quy tắc xử lý hoặc điều hướng request đến backend phù hợp.
  • Backend: Nhóm máy chủ phía sau chịu trách nhiệm xử lý request được chuyển tiếp từ frontend, đồng thời cho phép cấu hình thuật toán cân bằng tải, health check và nhiều tùy chọn nâng cao khác.
  • Listen: Khối cấu hình kết hợp chức năng của frontend và backend trong cùng một section, thường được sử dụng cho các dịch vụ đơn giản hoặc không yêu cầu phân tách riêng từng thành phần.
  • Stats: Công cụ thống kê cho phép hiển thị thông tin về hiệu suất, trạng thái máy chủ backend, số lượng kết nối và các chỉ số vận hành của  HAProxy theo thời gian thực.

Một số thuật ngữ cần nắm trong HAProxy bao gồm ACL, Global, Defaults, Frontend, Backend

Các thuật toán cân bằng tải phổ biến

HAProxy hỗ trợ nhiều thuật toán cân bằng tải khác nhau nhằm đáp ứng nhu cầu phân phối lưu lượng cho các hệ thống website và ứng dụng:

  • Round Robin: Phân phối các request theo thứ tự lần lượt đến từng backend server, giúp chia tải đồng đều và phù hợp với các hệ thống có máy chủ sở hữu cấu hình tương đương nhau.
  • Weighted Round Robin: Phân phối request dựa trên trọng số được gán cho từng server, cho phép các máy chủ có năng lực xử lý cao nhận nhiều lưu lượng hơn so với các máy chủ còn lại.
  • Least Connection: Chuyển các kết nối mới đến server đang có ít kết nối hoạt động nhất, giúp cân bằng tải hiệu quả trong các hệ thống mà thời gian xử lý request giữa các server có sự chênh lệch.
  • Source (IP Hash): Định tuyến request dựa trên địa chỉ IP nguồn của client, đảm bảo các yêu cầu từ cùng một người dùng luôn được chuyển đến cùng một backend server để duy trì tính liên tục của phiên làm việc (session).

Thuật toán cân bằng tải phổ biến gồm Round Robin, Weighted Round Robin, Least Connection, IP Hash

File cấu hình HAProxy gồm những thành phần nào?

File cấu hình của HAProxy thường có thành 4 thành phần chính, bao gồm global, defaults, frontend và backend. Các thành phần này quyết định cách HAProxy tiếp nhận kết nối từ client, xử lý request, lựa chọn backend phù hợp và chuyển tiếp lưu lượng đến máy chủ đích.

Global

Global là phần cấu hình tổng quát nằm ở đầu file HAProxy.cfg, chứa các thiết lập áp dụng cho toàn bộ tiến trình HAProxy. Đây là nơi quản trị viên cấu hình các thông số liên quan đến hiệu năng, bảo mật và quản lý hệ thống.

Một số tham số quan trọng thường được khai báo trong phần Global bao gồm:

  • maxconn: Thiết lập số lượng kết nối tối đa mà  HAProxy có thể xử lý đồng thời.
  • log: Chỉ định vị trí lưu trữ hoặc máy chủ nhận log.
  • nbproc/nbthread: Cấu hình số tiến trình hoặc luồng xử lý của  HAProxy.
  • user, group: Xác định tài khoản và nhóm người dùng được phép chạy dịch vụ.

Defaults

Defaults là khối cấu hình mặc định dùng chung cho các phần frontend và backend. Các tham số được khai báo tại đây sẽ tự động được kế thừa bởi các section phía dưới, giúp giảm việc lặp lại cấu hình và đơn giản hóa quá trình quản trị.

Một số thiết lập phổ biến trong Defaults gồm:

  • mode: Xác định  HAProxy hoạt động ở chế độ TCP Proxy hay HTTP Proxy.
  • maxconn: Quy định số lượng kết nối tối đa cho từng frontend hoặc backend.
  • timeout connect: Thiết lập thời gian chờ khi kết nối đến backend server.
  • timeout client: Thiết lập thời gian chờ cho kết nối từ client.
  • timeout server: Thiết lập thời gian chờ phản hồi từ backend server.
  • log: Cấu hình cơ chế ghi nhật ký mặc định.

Frontend

Frontend là thành phần tiếp nhận các kết nối từ phía client. Tại đây, quản trị viên có thể cấu hình địa chỉ IP, cổng lắng nghe và các quy tắc xử lý request trước khi chuyển đến backend phù hợp.

Một số tham số thường gặp trong Frontend gồm:

  • bind: Xác định địa chỉ IP và cổng mà  HAProxy sẽ lắng nghe kết nối.
  • http-request redirect: Thực hiện chuyển hướng request, chẳng hạn từ HTTP sang HTTPS.
  • use_backend: Chỉ định backend xử lý request khi thỏa mãn một điều kiện nhất định, thường được kết hợp với ACL.
  • default_backend: Xác định backend mặc định sẽ nhận request nếu không có quy tắc điều hướng nào được áp dụng.

Backend

Backend là nơi khai báo danh sách các máy chủ thực tế sẽ nhận request từ  HAProxy. Đây cũng là thành phần chịu trách nhiệm phân phối lưu lượng và giám sát trạng thái hoạt động của các server.

Một số tham số quan trọng trong Backend gồm:

  • balance: Lựa chọn thuật toán cân bằng tải như Round Robin, Least Connection hoặc Source.
  • cookie: Thiết lập cơ chế Sticky Session dựa trên cookie để duy trì kết nối của người dùng với cùng một backend server.
  • option httpchk: Kích hoạt cơ chế Health Check ở lớp HTTP nhằm kiểm tra khả năng phản hồi của backend server.
  • default-server: Thiết lập các cấu hình mặc định áp dụng cho toàn bộ server trong backend.
  • server: Khai báo thông tin từng máy chủ backend bao gồm tên, địa chỉ IP hoặc domain và cổng dịch vụ.

Listen

Listen là khối cấu hình tích hợp đồng thời chức năng của cả frontend và backend trong cùng một section. Listen có thể được sử dụng thay thế cho việc khai báo riêng biệt hai khối Frontend và Backend trong các cấu hình đơn giản.

Một số tham số quan trọng thường được sử dụng trong Listen gồm:

  • inter: Quy định khoảng thời gian giữa hai lần kiểm tra trạng thái backend server liên tiếp.
  • rise: Số lần kiểm tra thành công liên tiếp trước khi  HAProxy đánh dấu server đã hoạt động bình thường và cho phép nhận lại lưu lượng truy cập.
  • fall: Số lần kiểm tra thất bại liên tiếp trước khi  HAProxy đánh dấu server gặp sự cố và loại khỏi vòng cân bằng tải.

File cấu hình của HAProxy gồm 4 phần chính, đó là global, defaults, frontend và backend

Các loại cân bằng tải phổ biến

Có 3 loại cân bằng tải phổ biến, bao gồm: không có cân bằng tải, cân bằng tải tầng 4 và cân bằng tải tầng 7. Bảng dưới đây sẽ giúp bạn có cái nhìn tổng quan về 3 loại cân bằng tải này:

Một số loại cân bằng tải

Mô tả

Ưu điểm

Nhược điểm

Không có cân bằng tải

Mọi lưu lượng truy cập đều được gửi trực tiếp đến một máy chủ duy nhất.

Đơn giản, cài đặt và cấu hình đơn giản.

Khả năng mở rộng thấp, không có khả năng chịu lỗi, hiệu suất thấp khi lưu lượng truy cập cao.

Cân bằng tải 4 (Layer 4 – Transport)

Cân bằng tải dựa trên địa chỉ IP và cổng TCP/UDP.

Hiệu suất cao, khả năng mở rộng tốt, dễ cài đặt và cấu hình.

Không có khả năng phân biệt các ứng dụng khác nhau trên cùng một máy chủ, không có khả năng xử lý các yêu cầu HTTP phức tạp.

Cân bằng tải tầng 7 (Layer 7 – Application)

Cân bằng tải dựa trên nội dung yêu cầu HTTP, bao gồm URL, cookie, header và các thông tin khác.

Có khả năng phân biệt các ứng dụng khác nhau trên cùng một máy chủ và xử lý các yêu cầu HTTP phức tạp.

Phức tạp hơn trong triển khai và cấu hình, hiệu suất có thể thấp hơn so với Layer 4 Load Balancing.

Không có cân bằng tải

Đây là mô hình cân bằng tải cơ bản nhất, khi mọi yêu cầu từ người dùng đều được chuyển trực tiếp tới một máy chủ web duy nhất để xử lý, thay vì thông qua hệ thống cân bằng tải. 

Ví dụ: Người dùng truy cập trực tiếp vào website yourdomain.com và mọi request đều được xử lý bởi một máy chủ duy nhất. Nếu máy chủ này gặp sự cố, website có thể ngừng hoạt động, phản hồi chậm hoặc không thể kết nối được.

Ví dụ về mô hình không có cân bằng tải

Cân bằng tải tầng 4 (Layer 4 Load Balancing)

Đây là phương thức cân bằng tải hoạt động ở tầng vận chuyển của mô hình OSI, dựa trên các giao thức TCP hoặc UDP. HAProxy sẽ đọc header TCP/UDP để điều hướng các kết nối đến các máy chủ backend phù hợp mà không cần kiểm tra nội dung gói tin ứng dụng.

Ví dụ: Khi người dùng sẽ truy cập vào bộ cân bằng tải tại địa chỉ http://yourdomain.com/, bộ cân bằng tải sẽ chuyển request đến nhóm máy chủ backend có tên là web-backend. Cả hai máy chủ web đều kết nối tới cùng một máy chủ cơ sở dữ liệu (database) nên sẽ phản hồi các nội dung giống nhau.

Ví dụ về mô hình cân bằng tải tầng 4

Cân bằng tải tầng 7 (Layer 7 Load Balancing)

Cân bằng tải ở tầng 7 (tầng ứng dụng) cho phép HAProxy phân tích nội dung HTTP/HTTPS hoặc các giao thức ứng dụng khác như gRPC hay FastCGI. Bằng cách xử lý các rule phức tạp như chuyển hướng, phân nhánh lưu lượng dựa vào URL, host, cookie, path, header, HAProxy ở tầng này có thể điều phối request đến backend phù hợp. 

Ví dụ: Khi người dùng truy cập yourdomain.com/blog, bộ cân bằng tải sẽ định tuyến request đến cụm máy chủ blog-backend chuyên xử lý ứng dụng blog. Các yêu cầu khác sẽ được chuyển đến web-backend, nơi đang vận hành một ứng dụng khác. Cả hai backend này đều sử dụng chung một máy chủ cơ sở dữ liệu (database) để đảm bảo tính nhất quán của nội dung.

Ví dụ về mô hình cân bằng tải tầng 7

Bảo mật trong HAProxy hoạt động như thế nào?

HAProxy cung cấp nhiều cơ chế bảo mật giúp bảo vệ hệ thống trước các mối đe dọa phổ biến, đồng thời kiểm soát hiệu quả lưu lượng truy cập đến ứng dụng:

  • Hỗ trợ mã hóa SSL/TLS: Mã hóa dữ liệu truyền tải giữa client và server nhằm ngăn chặn nguy cơ nghe lén, đánh cắp hoặc can thiệp vào thông tin trong quá trình truyền nhận.
  • Xác thực và ủy quyền: Hỗ trợ nhiều phương thức xác thực như HTTP Auth, LDAP và PAM để kiểm soát quyền truy cập của người dùng vào hệ thống và ứng dụng.
  • Kiểm soát truy cập dựa trên IP: Cho phép thiết lập danh sách IP được phép hoặc bị chặn truy cập, giúp hạn chế các kết nối trái phép và giảm nguy cơ tấn công từ bên ngoài.
  • Giới hạn tốc độ và số lượng kết nối: Áp dụng cơ chế Rate Limiting để kiểm soát số lượng request hoặc kết nối trong một thời gian nhất định, góp phần giảm thiểu các cuộc tấn công DDoS và spam.
  • Cô lập tiến trình và giảm quyền truy cập: Sử dụng các cơ chế như chroot và giới hạn quyền user/group nhằm giảm bề mặt tấn công và hạn chế rủi ro khi hệ thống bị khai thác.
  • Theo dõi và giám sát lưu lượng: Ghi log chi tiết các hoạt động truy cập, kết hợp ACL để phát hiện và kiểm soát các request bất thường, từ đó nâng cao khả năng giám sát và phản ứng với các sự cố bảo mật.

Các tính năng hỗ trợ khác của HAProxy

Bên cạnh khả năng cân bằng tải, HAProxy còn hỗ trợ nhiều tính năng giúp nâng cao tính ổn định của hệ thống:

  • Health Check: Tự động kiểm tra định kỳ trạng thái hoạt động của các backend server. Khi phát hiện một máy chủ gặp sự cố hoặc không phản hồi đúng cách,  HAProxy sẽ tạm thời loại bỏ server đó khỏi vòng cân bằng tải và chỉ chuyển request đến các máy chủ đang hoạt động bình thường.
  • Sticky Sessions: Duy trì kết nối của một người dùng đến cùng một backend server trong suốt phiên làm việc. Tính năng này có thể được triển khai dựa trên cookie hoặc địa chỉ IP, giúp đảm bảo tính liên tục của phiên đăng nhập và dữ liệu tạm thời trên các ứng dụng web.
  • HAProxy Stats: Cung cấp giao diện giám sát trực quan theo thời gian thực, cho phép quản trị viên theo dõi trạng thái frontend, backend, số lượng kết nối, lưu lượng truy cập và tình trạng hoạt động của từng máy chủ. Nhờ đó, việc phát hiện sự cố và quản lý hệ thống trở nên nhanh chóng, hiệu quả hơn.

HAProxy hỗ trợ nhiều tính năng khác như Health Check, Sticky Sessions, HAProxy Stats

HAProxy và Nginx có giống nhau không

HAProxy và Nginx đều là những giải pháp phổ biến trong việc triển khai hệ thống cân bằng tải và máy chủ web. Mỗi nền tảng đều sở hữu ưu điểm nổi bật riêng. Dưới đây là phần so sánh giúp bạn hiểu rõ những điểm tương đồng và khác biệt giữa HAProxy và Nginx:

 

Tiêu chí so sánh

HAProxy

Nginx

Giống nhau

  • Đều hỗ trợ cân bằng tải (Load Balancing) để phân phối lưu lượng đến nhiều backend server.
  • Đều có thể hoạt động như Proxy Server và Reverse Proxy.
  • Đều hỗ trợ các giao thức HTTP và HTTPS, đáp ứng yêu cầu bảo mật của hệ thống hiện đại.
  • Đều cung cấp khả năng ghi log và giám sát lưu lượng, giúp quản trị viên theo dõi hiệu suất và phát hiện sự cố.

Khác nhau

Mục đích thiết kế

Chuyên biệt cho cân bằng tải và proxy TCP/HTTP

Ban đầu được phát triển như một web server, sau đó mở rộng thêm tính năng reverse proxy và cân bằng tải

Hiệu suất cân bằng tải

Tối ưu cho các hệ thống có lưu lượng truy cập lớn, yêu cầu cân bằng tải chuyên sâu

Hoạt động hiệu quả trong vai trò web server và reverse proxy, đồng thời hỗ trợ cân bằng tải HTTP tốt

Cấu hình và Syntax

Cú pháp đơn giản, tập trung vào các chức năng cân bằng tải và định tuyến lưu lượng.

Linh hoạt với nhiều directive và module, nhưng có thể phức tạp hơn đối với người mới.

Tính năng chính

Tập trung vào Load Balancing, Health Check, ACL và quản lý kết nối

Ngoài cân bằng tải còn hỗ trợ web server, reverse proxy, cache, bảo mật và nhiều ứng dụng web khác

Phục vụ nội dung tĩnh

Không hỗ trợ trực tiếp.

Hỗ trợ phục vụ nội dung tĩnh rất hiệu quả

Xử lý nội dung động

Không trực tiếp xử lý ứng dụng động

Hỗ trợ tốt các ứng dụng web động thông qua FastCGI, uWSGI hoặc proxy backend

Giám sát và thống kê

Có giao diện Stats tích hợp sẵn, dễ theo dõi trạng thái hệ thống

Chủ yếu dựa vào log hoặc các công cụ giám sát bên ngoài; Nginx Plus cung cấp nhiều tính năng nâng cao hơn.

Health Check backend

Hỗ trợ Health Check nâng cao với nhiều tùy chọn cấu hình

Hỗ trợ cơ bản; các tính năng nâng cao có trong Nginx Plus

Reload cấu hình

Hỗ trợ reload gần như không gián đoạn dịch vụ (Zero Downtime)

Có thể xuất hiện gián đoạn rất ngắn khi tải lại cấu hìn

Tính năng bảo mật

Hỗ trợ SSL/TLS, ACL, giới hạn kết nối, kiểm soát truy cập và Rate Limiting mạnh mẽ

Hỗ trợ SSL/TLS cùng nhiều module bảo mật mở rộng và khả năng tùy biến cao

Câu hỏi thường gặp

HAProxy là bộ cân bằng tải (Load Balancer) hay Proxy ngược (Reverse Proxy)

HAProxy là cả hai. Đây là một phần mềm mã nguồn mở thực hiện cả hai chức năng: Proxy ngược (Reverse Proxy) và Bộ cân bằng tải (Load Balancer) cho các ứng dụng TCP và HTTP.

HAProxy có thể tự xử lý SSL/TLS không?

Có. Thay vì để các máy chủ backend (web server) làm việc này, HAProxy sẽ tiếp nhận kết nối HTTPS từ người dùng, tự giải mã và chuyển tiếp yêu cầu dưới dạng HTTP thông thường, giúp giảm tải đáng kể cho hệ thống

HAProxy có miễn phí cho doanh nghiệp không?

Có.  HAProxy là một phần mềm mã nguồn mở và hoàn toàn miễn phí để sử dụng, ngay cả trong các môi trường doanh nghiệp.

Cân bằng tải Lớp 4 và Lớp 7 có gì khác nhau?

Cân bằng tải lớp 4 hoạt động ở tầng vận chuyển, chỉ xem xét thông tin IP và port, nhanh hơn Lớp 7 nhưng không thông minh bằng. Trong khi đó, cân bằng tải lớp 7 hoạt động ở tầng ứng dụng, có thể đọc và hiểu nội dung của yêu cầu, cho phép định tuyến phức tạp hơn nhưng tốn nhiều tài nguyên hơn.

Nên đặt HAProxy ở đâu trong kiến trúc hệ thống?

Vị trí tốt nhất để đặt  HAProxy là ở Edge Layer (biên hệ thống) làm Reverse Proxy và Load Balancer. Nó đóng vai trò là điểm tiếp xúc đầu tiên nhận lưu lượng truy cập từ người dùng và phân phối an toàn đến các máy chủ bên trong (Web/App Server)

HAProxy là một trong những giải pháp cân bằng tải và proxy ngược phổ biến nhất hiện nay, giúp tối ưu hiệu suất, tăng khả năng mở rộng và đảm bảo tính sẵn sàng cho hệ thống. Qua bài viết, hy vọng bạn đã hiểu rõ các tính năng nổi bật, những thuật ngữ và thuật toán cân bằng tải liên quan đến HAProxy. Để cập nhật thêm nhiều kiến thức chuyên sâu về máy chủ, mạng, bảo mật và các công nghệ hạ tầng hiện đại, đừng quên theo dõi các bài viết mới nhất trên Tenten.