HAProxy được xem là công cụ hỗ trợ cải thiện hiệu suất máy chủ hiệu quả nhất hiện nay. Vậy cụ thể thuật ngữ HAProxy là gì? Có những loại HAProxy nào? Hãy cùng BKHOST tìm hiểu trong bài viết dưới đây.
HAProxy là gì?
HAProxy – High Availability Proxy là một phần mềm mã nguồn mở phổ biến với TCP/HTTP Load Balancer và được phát triển trên Linux, macOS và FreeBSD.
Phần mềm này có khả năng cải thiện hiệu năng, tăng độ tin cậy của hệ thống bằng cách phân phối đều các lượng công việc trên nhiều máy chủ khác nhau như Web, App, cơ sở dữ liệu,…Ngoài ra, HAProxy còn là sự lựa chọn của nhiều Website lớn hiện nay như GoDaddy, GitHub, Stack Overflow, Twitter.
Một số thuật ngữ của HAProxy
Những thuật ngữ chính của HAProxy bao gồm:
ACL
ACL – Access Control List là danh sách kiểm soát truy cập được sử dụng để xem xét các điều kiện và tiến hành thực thi hành động dựa vào kết quả xem xét đó. Ngoài ra, ACL còn cho phép các lưu lượng mạng có thể di chuyển linh hoạt dựa vào nhiều yếu tố như mẫu hoặc đường dẫn.
Ví dụ về một ACL như sau: acl url_blog path_beg /blog
Trong đó, ACL này phù hợp với một đường dẫn được bắt đầu bằng /blog
, chẳng hạn như http://yourdomain.com/blog/blog-entry-1
.
Backend
Backend xuất hiện trong quá trình cấu hình HAProxy bao gồm các máy chủ nhận yêu cầu được chuyển tiếp. Về cơ bản, Backend có hai cấu hình phổ biến đó là Load Balancing – thuật toán cân bằng tải; danh sách máy chủ và cổng. Mỗi Backend có thể chứa nhiều máy chủ giúp cải thiện hiệu suất tải và tăng độ tin cậy của các dịch vụ. Đồng thời, nếu có một máy chủ trong Backend xảy ra sự cố thì toàn bộ máy chủ còn lại sẽ đảm nhận việc chịu tải cho máy chủ này.
Ví dụ: Cấu hình của hai loại Backend là web-backend và blog-backend trên cổng 80:
{{EJS0}}
Trong đó, balance roundrobin
là thuật toán Load balancing còn mode http
là chỉ định Proxy L7.
Frontend
Frontend là giao diện người dùng được sử dụng để xác định các yêu cầu được chuyển tiếp tới Backend. Ngoài ra, Frontend cũng có thư mục Frontend để định nghĩa các cấu hình HAProxy như:
- Tập hợp các địa chỉ IP và cổng, chẳng hạn như địa chỉ IP 10.1.1.7:80, *443.
- Các ACL giúp kiểm soát truy cập tốt hơn.
- Một số quy tắc use_backend giúp xác định các ACL tương thích với default_backend.
Các loại Load Balancing trong HAProxy
Một số loại Load Balancing phổ biến trong HAProxy bao gồm:
No Load Balancing
Môi trường ứng dụng web cơ bản không có Load Balancing sẽ có giao diện như sau:
Từ hình ảnh trên cho thấy người dùng được kết nối trực tiếp với Web Server thông qua Internet đến yourdomain.com mà không có Load Balancing. Tuy nhiên, có một vấn đề đối với mô hình này đó là nếu như Web Server gặp sự cố thì người dùng sẽ không thể thực hiện bất kỳ kết nối nào với nó. Trong trường hợp khác, nếu có quá nhiều lượt truy cập cùng một lúc thì Web Server sẽ không thể xử lý tải gây ra tình trạng lag, chậm hoặc mất kết nối.
Load Balancing L4
Load Balancing L4 đảm bảo cho tất cả lưu lượng mạng đều được phân bổ đến nhiều máy chủ. Phương pháp này cho phép chuyển tiếp các lưu lượng truy cập dựa trên IP và port đến http://yourdomain.com/anything
. Sau đó, các lưu lượng này sẽ được Backend xử lý cho yourdomain.com trên cổng 80.
Sơ đồ minh họa về Load Balancing L4:
Khi người dùng truy cập vào Load Balancing, nó sẽ chuyển tiếp yêu cầu đó đến Web-Backend của Backend Server được kết nối trên máy chủ cơ sở dữ liệu. Những Backend Server được chọn sẽ phản hồi trực tiếp yêu cầu của người dùng.
Load Balancing L7
Load Balancing L7 là lớp ứng dụng cho phép chuyển tiếp các yêu cầu đến nhiều Backend Server khác nhau dựa trên nội dung mong muốn. Ngoài ra, với chế độ này người dùng có thể chạy nhiều máy chủ ứng dụng web trên cùng một tên miền và port.
Sơ đồ về một Load Balancing L7 cơ bản:
Trong sơ đồ trên, nếu người dùng yêu cầu một yourdomain.com/blog thì HAProxy sẽ chuyển tiếp yêu cầu đó đến Blog Backend. Các yêu cầu khác sẽ được chuyển tiếp đến web-backend trên một ứng dụng khác. Trong đó, cả hai phần mềm Backend này đều sử dụng cùng một máy chủ cơ sở dữ liệu.
Ví dụ: Một đoạn mã cấu hình trong frontend:
{{EJS1}}
Trong đó:
- Cấu hình frontend có tên là
http
xử lý mọi lưu lượng được chuyển đến cổng 80. acl url_blog path_beg / blog
khớp với một yêu cầu nếu đường dẫn bắt đầu bằng/blog
.use_backend blog-backend
nếu url_blog sử dụng ACL để ủy quyền lưu lượng truy cập đếnblog-backend
.default_backend web-backend
chỉ định rằng tất cả các lưu lượng khác sẽ được chuyển tiếp đếnweb-backend
.
Tổng kết về HAProxy
Như vậy, thông qua bài viết trên đây bạn đọc đã hiểu hơn về HAProxy chưa nào! Đó là một phần mềm mã nguồn mở giúp cải thiện hiệu suất và độ tin cậy của hệ thống máy chủ. Để sử dụng HAProxy, bạn hãy tìm hiểu cách thức cài đặt và sử dụng sẽ được bật mí trong những bài viết sắp tới của BKHOST.
Nếu còn có câu hỏi nào liên quan đến HAProxy, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.
- haproxy load balancer
- ha proxy là gì