[2025] HAProxy là gì? Thuật toán, thuật ngữ cân bằng tải nên nhớ

HAProxy là gì? HAProxy là một phần mềm cân bằng tải mạnh mẽ và linh hoạt, là công cụ không thể thiếu trong việc quản lý và tối ưu hóa lưu lượng truy cập trên các hệ thống máy chủ. Nhờ khả năng điều phối lưu lượng truy cập và chuyển tiếp các yêu cầu HTTP/TCP hiệu quả, HAProxy đã trở thành công cụ quan trọng đối với các hệ thống web lớn và phức tạp. Mời bạn cùng tìm hiểu qua bài viết sau đây của VinaHost.

1. HAProxy là gì?

HAProxy, viết tắt của High Availability Proxy, là một công cụ mã nguồn mở được sử dụng để triển khai giải pháp cân bằng tải cho các giao thức TCP và HTTP.

Với HAProxy, người dùng có thể tối ưu hóa hiệu suất của các trang web và ứng dụng bằng cách phân phối công việc trên nhiều máy chủ, giúp giảm thiểu thời gian phản hồi. Ngoài ra, HAProxy còn là một phần hệ thống của các công ty lớn có lưu lượng truy cập cao như GitHub, Twitter, Reddit, Bitbucket, Stack Overflow và nhiều nền tảng khác.

HAProxy la gi

Cân bằng tải có thể được áp dụng để phân chia khối lượng công việc đối với máy chủ, mạng, ổ cứng hoặc CPU. HAProxy đứng trong số những phần mềm hàng đầu trong lĩnh vực này và được triển khai trên các hệ điều hành như Linux, Solaris và FreeBSD.

Mặc dù HAProxy là một giải pháp mã nguồn mở miễn phí, nhưng cũng có một phiên bản thương mại gọi là HAProxy Enterprise, được phát triển bởi HAProxy Technologies. HAProxy Enterprise cung cấp các tính năng bổ sung, hỗ trợ kỹ thuật chuyên sâu và cải thiện dịch vụ.

Xem thêm: Internet là gì? | [BẬT MÍ] Sự khác biệt giữa Internet và Wifi

2. HAProxy sử dụng để làm gì?

High Availability Proxy, hay HAProxy, được áp dụng cho các mục đích sau đây:

  • Tăng cường hiệu suất và độ tin cậy của các trang web và ứng dụng.
  • Phân tán lưu lượng công việc trên nhiều máy chủ để đảm bảo sự ổn định và hiệu quả.
  • Hỗ trợ giảm thời gian phản hồi, giúp cải thiện trải nghiệm người dùng.

3. Tính năng của HAProxy 

HAProxy có các tính năng sau:

  • Hỗ trợ cân bằng tải ở cả lớp 4 và lớp 7 (TCPHTTP).
  • Hỗ trợ giao thức HTTP, HTTP/2, gRPC, FastCGI.
  • Hỗ trợ kết thúc SSL/TLS.
  • Quản lý chứng chỉ SSL động.
  • Thực hiện chuyển đổi nội dung và kiểm tra.
  • Cung cấp tính năng ủy quyền minh bạch.
  • Ghi nhật ký chi tiết.
  • Hỗ trợ giao diện dòng lệnh (CLI).
  • Xác thực HTTP.
  • Hỗ trợ đa luồng.
  • Cung cấp tính năng rewrite URL.
  • Thực hiện kiểm tra sức khỏe nâng cao.
  • Hạn chế tần suất kết nối.
HAProxy la gi
Tính năng của HAProxy

Xem thêm: Network là gì? | [SO SÁNH] giữa Internet và Network

4. Các thuật toán cân bằng tải

Các thuật toán cân bằng tải (load balancing algorithms) như Round-robin, Leastconn và Source đều được sử dụng để phân phối tải làm việc giữa các máy chủ hoặc nguồn tài nguyên trong một hệ thống phân tán. 

4.1. Round-robin

Round-robin phân phối tải theo cách lần lượt gán yêu cầu truy cập tới các máy chủ theo một chu kỳ vòng tròn.

  • Ưu điểm: Đơn giản, dễ triển khai, không cần theo dõi trạng thái của các máy chủ, cân bằng tải tương đối tốt khi có số lượng lớn máy chủ hoặc yêu cầu.
  • Hạn chế: Không hiệu quả khi có sự chênh lệch về hiệu suất giữa các máy chủ, không xem xét trạng thái thực sự của các máy chủ.

4.2. Leastconn

Leastconn sẽ chọn máy chủ có số kết nối ít nhất hiện tại để gửi yêu cầu mới.

  • Ưu điểm: Phân chia tải dựa trên tình trạng thực tế của các máy chủ, giúp giảm bớt quá tải cho các máy chủ đang hoạt động nhiều.
  • Hạn chế: Cần theo dõi trạng thái của các máy chủ, đòi hỏi chi phí tính toán để tìm ra máy chủ có số kết nối ít nhất.

4.3. Source

Thuật toán này dựa trên địa chỉ IP nguồn của yêu cầu để quyết định máy chủ nào sẽ được gán.

  • Ưu điểm: Đảm bảo cùng một nguồn gửi yêu cầu sẽ luôn được chuyển đến cùng một máy chủ, hữu ích cho các ứng dụng đòi hỏi trạng thái.
  • Hạn chế: Không cân bằng tải dựa trên tình trạng thực tế của máy chủ, có thể dẫn đến tình trạng quá tải cho các máy chủ nhận nhiều yêu cầu từ các nguồn gửi đến giống nhau.
HAProxy la gi
Lịch sử của HAProxy

Xem thêm: [Tìm hiểu] Giao thức RTP là gì? Tổng quan về giao thức RTP

5. Các thuật ngữ cân bằng tải

5.1. Access Control List (ACL)

ACL (Danh sách Kiểm soát Truy cập) là một danh sách các quy tắc được áp dụng để kiểm soát quyền truy cập vào tài nguyên mạng. Các quy tắc này định nghĩa những người dùng, máy chủ hoặc dịch vụ có quyền truy cập vào tài nguyên nào, và cách họ được phép hoặc không được phép sử dụng tài nguyên đó.

Ví dụ, một ACL có thể được cấu hình trên một bộ định tuyến (router) để kiểm soát quyền truy cập vào mạng, cho phép hoặc từ chối các gói tin dựa trên các tiêu chí như địa chỉ IP nguồn, địa chỉ IP đích, cổng, giao thức, và nhiều thuộc tính khác.

5.2. Backend

Backend thường được sử dụng để chỉ các máy chủ đang được cân bằng tải. Để cấu hình một backend, người dùng có thể chỉ định:

  • Thuật toán cân bằng tải (round-robin, least-connection,…)
  • Danh sách các máy chủ và cổng mà HAProxy có thể gửi yêu cầu tới.

Một backend có thể bao gồm một hoặc nhiều máy chủ. Việc có nhiều máy chủ trong backend tăng khả năng chịu tải và hiệu suất của hệ thống. HAProxy cũng hỗ trợ máy chủ dự phòng, được kích hoạt khi các máy chủ chính offline.

Ví dụ về cấu hình backend:

backend web-backend

    balance leastconn

    mode http

    server backend-1 web-backend-1.example.com check

    server backend-2 web-backend-2.example.com check

    server backend-3 backup-backend.example.com check backup

    

backend forum

    balance leastconn

    server forum-1 forum-1.example.com check

    server forum-2 forum-2.example.com check

    server forum-3 backup-forum.example.com check backup

Trong đó:

  • Dòng balance leastconn chỉ định rằng thuật toán cân bằng tải sẽ ưu tiên chọn các máy chủ có ít kết nối nhất.
  • Dòng mode http chỉ ra rằng các proxy chỉ sẽ cân bằng cho các kết nối ở tầng 7 của lớp Internet.

5.3. Frontend

Frontend được dùng để xác định cách mà các yêu cầu được điều hướng tới backend, và nó được định nghĩa trong phần frontend của cấu hình HAProxy. Các thiết lập cho frontend bao gồm:

  • Một địa chỉ IP và cổng.
  • Các ACL được người dùng xác định.
  • Backend được sử dụng để nhận các yêu cầu.

Ví dụ về cấu hình frontend:

frontend web

  bind 0.0.0.0

  default_backend web-backend

 

frontend forum

  bind 0.0.0.0:8080

  default_backend forum

6. Phân loại cân bằng tải (Load Balancing)

6.1. No Load Balancing (Không có cân bằng tải)

Đây là một mô hình cơ bản nhất cho một ứng dụng web, thường được áp dụng trong môi trường có số lượng người dùng ít hoặc không có, sử dụng cho mục đích thử nghiệm hoặc phát triển.

HAProxy la gi
No Load Balancing (Không có cân bằng tải)

Với mô hình này, người dùng sẽ kết nối trực tiếp với máy chủ web tại (yourdomain.com) mà không sử dụng cân bằng tải. Nếu máy chủ web gặp sự cố hoặc có trục trặc, người dùng sẽ không thể kết nối được đến ứng dụng web.

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

Sử dụng cân bằng tải ở tầng 4 (Layer 4 Load Balancing) giúp phân phối tải đều đến nhiều máy chủ. Trong trường hợp này, các yêu cầu được điều hướng dựa trên địa chỉ IP và cổng. Ví dụ, một yêu cầu đến http://example.com/something sẽ được chuyển tiếp tới backend được ánh xạ cho tên miền example.com với cổng 80.

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

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

Đây là một cơ chế cân bằng tải phức tạp nhất với nhiều tùy chọn tùy biến. Bằng cách sử dụng cân bằng tải tại tầng 7, bạn có thể điều hướng các yêu cầu dựa trên thông tin và nội dung của chúng. Cân bằng tải tầng 7 với nhiều backend có thể sử dụng một domain và cổng duy nhất.

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

Ví dụ, khi có một yêu cầu được gửi tới example.com/something, yêu cầu đó sẽ được điều hướng đến backend được xác định cho something.

7. Bảo mật trong HAProxy

HAProxy được coi là một giải pháp an toàn với ít lỗ hổng được phát hiện trong suốt nhiều năm qua. Nó tích hợp các tính năng có khả năng hạn chế tấn công, như cách nó tự cô lập trong môi trường sử dụng chroot, từ chối quyền của người dùng/nhóm người dùng ngay khi khởi động và tránh truy cập vào ổ đĩa khi khởi động.

HAProxy cũng có thể được sử dụng để cung cấp bảo mật cho các hệ thống khác. Ví dụ, nó có thể theo dõi luồng truy cập và giám sát hành vi của khách hàng thông qua các yêu cầu, và sau đó có thể chặn các khách hàng có hành vi nghi ngờ. Người dùng có thể cấu hình ACL để xác định các chính sách kiểm tra dữ liệu của các truy cập. Ngoài ra, nó cũng có khả năng giới hạn tốc độ và quản lý danh sách IP Blacklist/Whitelist

8. Sticky Sessions

Sticky Sessions trong cân bằng tải (hay còn gọi là session affinity hoặc session persistence) là một cơ chế cho phép gán một yêu cầu từ một khách hàng cụ thể với một máy chủ nhất định và duy trì kết nối đó trong một khoảng thời gian nhất định.

Khi một yêu cầu từ cùng một khách hàng được nhận, sticky sessions đảm bảo rằng yêu cầu đó sẽ được chuyển tiếp đến cùng một máy chủ mà yêu cầu trước đó đã được gửi đến, thay vì phân phối nó đến một máy chủ ngẫu nhiên trong pool. Điều này có ích đối với ứng dụng yêu cầu trạng thái (stateful), ví dụ như lưu trữ thông tin phiên của người dùng trên một máy chủ cụ thể và yêu cầu sau cần phải được gửi đến cùng máy chủ đó để tiếp tục phiên làm việc.

HAProxy la gi
Sticky sessions đảm bảo rằng yêu cầu đó sẽ được chuyển tiếp đến cùng một máy chủ mà yêu cầu trước đó đã được gửi đến

9. Health Check

Health check là một tính năng mà dịch vụ cân bằng tải HAProxy sử dụng để phát hiện các máy chủ backend đã sẵn sàng để xử lý các yêu cầu truy cập. Phương pháp này giúp tránh việc phải loại bỏ máy chủ khỏi backend thủ công khi chúng chưa sẵn sàng. Bằng cách thiết lập kết nối TCP đến các máy chủ, health check kiểm tra tính sẵn sàng của các máy chủ backend để xử lý các yêu cầu.

Khi không thể kết nối đến một máy chủ, Health check sẽ tự động loại bỏ máy chủ đó khỏi backend, đồng thời lưu lượng truy cập sẽ không được chuyển hướng đến máy chủ này cho đến khi nó vượt qua được Health check.

Trong trường hợp cả backend gặp sự cố, dịch vụ sẽ chuyển sang trạng thái không khả dụng (HAProxy hiển thị status code 500). Khi một máy chủ trong backend chuyển từ trạng thái không khả dụng sang trạng thái sẵn sàng, thông báo này sẽ không còn xuất hiện và kết nối sẽ được phục hồi bình thường.

Xem thêm: Giao thức Point to Point là gì? Các bước để thiết lập PPP

10. So sánh điểm khác và giống nhau giữa HAProxy vs Nginx

HAProxy và Nginx là hai phần mềm phổ biến được sử dụng để cân bằng tải và làm web server. Dưới đây là một so sánh về điểm khác biệt và tương đồng giữa chúng:

Điểm giống

  • Cân bằng tải: Cả HAProxy và Nginx đều có khả năng cân bằng tải giữa nhiều máy chủ backend để phân phối lưu lượng truy cập một cách hiệu quả.
  • Proxying và Reverse Proxying: Cả hai đều có khả năng hoạt động như một proxy server hoặc reverse proxy server, cho phép xử lý yêu cầu từ client và chuyển tiếp đến máy chủ khác.
  • HTTP và HTTPS Support: Cả HAProxy và Nginx đều hỗ trợ cả HTTP và HTTPS, cho phép xử lý cả các yêu cầu không bảo mật và bảo mật từ các client.
  • Logging và Monitoring: Cả hai đều cung cấp các công cụ để ghi lại và giám sát lưu lượng truy cập, cho phép người quản trị theo dõi hiệu suất hệ thống.

Khác biệt

HAProxyNginx
Kiến trúc và mục tiêu sử dụngHAProxy được thiết kế chủ yếu để cân bằng tải.Nginx được phát triển ban đầu là một web server nhưng sau đó được mở rộng để hỗ trợ cân bằng tải và các tính năng khác như proxy server.
Hiệu suấtHAProxy thường được coi là hiệu suất hơn trong việc cân bằng tải cho các ứng dụng web.Nginx thường được ưa chuộng hơn cho việc làm web server và reverse proxy.
Cấu hình và SyntaxHAProxy có cú pháp cấu hình riêng biệt và khá đơn giản.Nginx sử dụng một cú pháp cấu hình linh hoạt nhưng phức tạp hơn.
Tính năng bổ sungÍt tính năng bổ sung hơn NginxNginx có nhiều tính năng bổ sung hơn ngoài cân bằng tải, bao gồm hỗ trợ cho các ứng dụng web phức tạp, xử lý tĩnh và động, bảo mật, và nhiều hơn nữa.

Mặc dù cả HAProxy và Nginx đều có thể được sử dụng để cân bằng tải và làm web server, nhưng mỗi công cụ có những ưu điểm và ứng dụng riêng biệt. Việc lựa chọn thường phụ thuộc vào nhu cầu cụ thể của dự án và sở thích cá nhân của người quản trị hệ thống.

Xem thêm: NGINX là gì? | Cách Cài đặt, Cấu hình & Sử dụng NGINX

11. Tổng kết

Qua những chia sẻ trong bài viết này, hy vọng rằng bạn đã hiểu được HAProxy là gì. Nhìn chung, HAProxy là một phần mềm cân bằng tải, được sử dụng rộng rãi trong việc phân phối lưu lượng truy cập và cải thiện hiệu suất hệ thống. Với khả năng điều hướng yêu cầu đến các máy chủ backend một cách hiệu quả, HAProxy giúp tăng cường sự ổn định và khả năng mở rộng của ứng dụng web. 

Bạn cũng có thể tìm hiểu thêm các bài viết khác của VinaHost TẠI ĐÂY hoặc liên hệ với VinaHost để được hỗ trợ tư vấn:

Xem thêm một số bài viết 

[Bật Mí] Apache là gì? | Tổng hợp kiến thức [A-Z] về Apache

IIS Là Gì? Hướng Dẫn Cài Đặt và Cấu Hình IIS Server Chi Tiết

Docker là gì? | Hướng dẫn Cài đặt & Sử dụng Docker A-Z

AppServ là gì? Hướng dẫn cài đặt và sử dụng AppServ

Đánh giá
5/5 - (5 bình chọn)
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận
    Tổng lượt truy cập: lượt xem