Khi nhắc đến một hệ thống cân bằng tải, chắc hẳn bạn đã nghe nói đến HAProxy. Vậy HAProxy là gì? Làm thế nào các tính năng HAProxy có thể giúp hệ thống của chúng tôi? Tất cả các câu trả lời có thể được tìm thấy trong bài viết của BKNS dưới đây.
Tóm Tắt Bài Viết
Tìm hiểu HAProxy là gì?
HAProxy (High Availability Proxy) là một ứng dụng mã nguồn mở cho các giải pháp cân bằng tải TCP và HTTPS. Người dùng có thể sử dụng HAProxy để cải thiện hiệu suất của các trang web và ứng dụng bằng cách phân phối khối lượng công việc của họ trên nhiều máy chủ.
HAProxy là gì?
HAProxy giúp cải thiện hiệu suất bao gồm giảm thời gian phản hồi và tăng hiệu suất. Nó cũng được sử dụng trong các hệ thống lớn có lượng truy cập cao như GitHub, Twitter, Reddit, Bitbucket, Stack Overflow, v.v.
Mặc dù HAProxy là một phần mềm mã nguồn mở miễn phí sử dụng nhưng nó cũng có một phần mềm thương mại có tên là HAProxy Enterprise dựa trên HAProxy Technologies. HAProxy Enterprise bao gồm các tiện ích bổ sung, hỗ trợ toàn diện và các dịch vụ nâng cao.
Xem thêm: HTML5 là gì? Phát triển và thiết kế web vượt trội với HTML5
Tính năng của HAProxy
Một số tính năng của HAProxy có thể kể đến như:
+ Hỗ trợ cân bằng tải Lớp 4 và Lớp 7 (tương ứng là TCP và HTTP).
+ Hỗ trợ giao thức HTTP, HTTP/2, gRPC, FastCGI.
+ Thiết bị đầu cuối SSL/TLS.
+ Chứng chỉ SSL động.
+ Chuyển đổi nội dung và thử nghiệm.
+ Ủy quyền minh bạch.
+ Ghi nhật ký chi tiết.
+ CLI.
+ Xác thực HTTP.
+ Đa luồng.
+ Viết lại URL.
+ Khám sức khỏe nâng cao.
+ Giới hạn tần số kết nối.
Thuật toán của cân bằng tải
Trong HAProxy có ba thuật toán chính
Các thuật toán được sử dụng trong cân bằng tải:
- round-robin: Đây là thuật toán mặc định được HAProxy sử dụng, các yêu cầu sẽ lần lượt được chuyển đến máy chủ.
- leastconn: Các yêu cầu được chuyển hướng đến máy chủ có ít kết nối nhất với nó.
- source: Các yêu cầu được chuyển hướng đến máy chủ bằng cách sử dụng mã hash của địa chỉ IP của người dùng.
Các thuật ngữ trong HAProxy
Access Control List (ACL)
Cân bằng tải sử dụng danh sách kiểm soát truy cập (ACL) để kiểm tra các điều kiện và thực hiện hành động dựa trên kết quả kiểm tra đó, chẳng hạn như chọn máy chủ hoặc chặn yêu cầu. ACL cho phép bạn tạo một môi trường có thể tự động chuyển tiếp các yêu cầu dựa trên nhiều yếu tố khác nhau.
Ví dụ một ACL:
acl url_blog src /something
Trong đó: ACL này sử dụng cho các request có chứa /something.
Backend
Phần phụ trợ (backend) là một tập hợp các máy chủ mà HAProxy có thể chuyển tiếp các yêu cầu. Phần phụ trợ được xác định trong phần phụ trợ của tệp cấu hình HAProxy. Phần phụ trợ có thể được thiết lập theo các cách sau:
+ Chỉ định thuật toán cân bằng tải (phát sóng, kết nối ít nhất…)
+ Danh sách các máy chủ và cổng có thể nhận các yêu cầu HAProxy.
Hệ thống phụ trợ có thể chứa một hoặc nhiều máy chủ, về cơ bản càng nhiều máy chủ thì sức mạnh và hiệu suất của hệ thống càng lớn. HAProxy cho phép bạn sử dụng một máy chủ dự phòng riêng khi các máy chủ này ngoại tuyến.
Hệ thống phụ trợ có thể chứa một hoặc nhiều máy chủ
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 blance leaseconn chỉ ra thuật toán cân bằng tải là chọn các server có ít kết nối đến nó nhất.
- Dòng mode http chỉ ra rằng các proxy sẽ chỉ cân bằng cho các kết nối tại tầng 7 của Internet Layer.
Frontend
Tiêu đề phông chữ (Frontend) được sử dụng để xác định cách các yêu cầu được chuyển đến phần phụ trợ. Và được xác định trong phần phông chữ của cấu hình HAProxy. Cài đặt tiêu đề phông chữ bao gồm:
- Địa chỉ IP và port.
- ACL do người dùng định nghĩa.
- Backend được sử dụng để nhận yêu cầu.
Frontend được sử dụng để xác định cách các yêu cầu
Ví dụ về cấu hình fontend:
frontend web
bind 0.0.0.0
default_backend web-backend
frontend forum
bind 0.0.0.0:8080
default_backend forum
Các loại cân bằng tải (Load Balancing)
Không có cân bằng tải (No Load Balancing)
Đây là dạng ứng dụng web đơn giản nhất, thường được sử dụng trong môi trường có ít hoặc không có người dùng để kiểm tra. Mô hình này cho phép người dùng kết nối trực tiếp với máy chủ web tại (yourdomain.com) mà không cần cân bằng tải. Nếu máy chủ web gặp sự cố, người dùng không thể kết nối với trang web.
Cân bằng tải tại tầng 4 (Layer 4 Load Balancing)
Sử dụng Cân bằng tải lớp 4 để cân bằng tải cho nhiều máy chủ. Các yêu cầu sau đó được định tuyến dựa trên địa chỉ IP và port.
Ví dụ: một yêu cầu tới http://example.com/something được chuyển hướng tới một chương trình phụ trợ được sử dụng để điều hướng tới example.com với port 80.
Cân bằng tải tại tầng 7 (Layer 7 Load Balancing)
Đây là bộ cân bằng tải phức tạp nhất nhưng có nhiều tùy chọn tùy chỉnh. . Sử dụng cân bằng tải Lớp 7, bạn có thể chuyển hướng yêu cầu dựa trên thông tin và nội dung yêu cầu. Bộ cân bằng tải Lớp 7 có nhiều chương trình phụ trợ có thể sử dụng một tên miền và port duy nhất.
Bảo mật trong HAProxy
HAProxy giúp bảo vệ các hệ thống khác
HAProxy được coi là an toàn vì nó có rất ít lỗ hổng trong những năm qua. Nó bao gồm các tính năng có thể hạn chế các cuộc tấn công, chẳng hạn như tự cô lập bạn bằng chroot, xóa ngay người dùng/nhóm mà không có quyền đặc biệt khi khởi động và ngăn truy cập ổ cứng khi khởi động.
HAProxy cũng có thể được sử dụng để bảo vệ các hệ thống khác. Ví dụ: HAProxy giám sát lưu lượng và theo dõi hoạt động của máy khách với các yêu cầu mà sau đó có thể chặn máy khách đó. 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 truy cập. Nó cũng có thể giới hạn tốc độ và danh sách đen/danh sách trắng IP
Lời kết
Với những chia sẻ của bài viết này sẽ giúp bạn hiểu thêm về cách thức hoạt động của HAProxy và một số tính năng quan trọng được sử dụng trong cân bằng tải. Hy vọng bạn thấy bài viết này hữu ích và hữu ích. Hẹn gặp lại các bạn ở những chuyên mục khác. Chúc các bạn thành công
Cảm ơn bạn đã đón đọc bài viết. Có thể bạn cũng quan tâm đến:
Cách cài đặt Linux Mint 20 bằng USB đơn giản