
Nội dung bài viết
Cài đặt và triển khai HAProxy load balancing server
Trong bài viết này mình sẽ cùng các bạn tìm hiểu HAProxy là gì. Cách cài đặt và triển khai hệ thống cơ bản HAProxy load balancing server.
1. HAproxy là gì?
– HAProxy viết tắt của High Availability Proxy, là công cụ mã nguồn mở nổi tiếng được phát triển trên hệ điều hành Linux. Ứng dụng cho giải pháp cân bằng tải TCP/HTTP cũng như giải pháp máy chủ Proxy (Proxy Server).
– Công dụng phổ biến nhất của HAProxy là cải thiện hiệu năng, tăng độ tin cậy của hệ thống máy chủ bằng cách phân phối khối lượng công việc trên nhiều máy chủ (như Web, App, cơ sở dữ liệu,…).
– HAProxy hiện đã và đang được sử dụng bởi nhiều website lớn như GoDaddy, GitHub, Stack Overflow, Twitter và trong nhiều sản phẩm cung cấp bởi Amazon Web Service.
2. Thành phần và cấu trúc của HAproxy
2.1 Cấu trúc của HAproxy
– File cấu hình haproxy.cfg là nơi lưu trữ các cấu hình cho hệ thống HAproxy.
– Khi chạy chương trình cân bằng tải, máy chủ HAproxy sẽ đọc file cấu hình này và thực hiệu điều khiển hệ thống cân bằng tải.
– Đây cũng là nơi quản trị viện có thể cấu hình cho hệ thống cân bằng tải, bằng cách thay đổi các tham số được HAproxy quy định.
– Cấu hình của Haprox thường gồm 4 phần chính: global, defaults, fontend và backend.
– Các thành phần này sẽ định nghĩa cách máy chủ HAproxy tiếp nhận, xử lý yêu cầu, chọn máy chủ tiếp nhận yêu cầu và chuyển tiếp.
2.2 Các thành phần chính của HAproxy
– Global nằm ở phần đầu của file cấu hình haproxy.cfg
+ Quy định các thiết lập bảo mật, điều chỉnh hiệu năng… cho toàn hệ thống HAproxy.
+ Một số tham số quan trọng được đặt trong global như số lượng kết nối tối đa (maxconn), đường dẫn file log, số tiến trình…
– Default chứa các cấu hình được thiết lập áp dụng chung cho cả phần frontend và backend trong file cấu hình.
+ mode: Định nghĩa HAproxy sẽ sử dụng TCP proxy hay HTTP proxy.
+ timeout: Thời chờ phản hồi của client, server,…
– Frontend chứa thiết lập trong phần frontend định nghĩa địa chỉ IP và port mà client có thể kết nối tới.
+ bind: IP (hostname) và Port HAProxy sẽ lắng nghe để mở kết nối.
IP có thể bind tất cả địa chỉ sẵn có hoặc chỉ 1 địa chỉ duy nhất, port có thể là một port hoặc nhiều port (1 khoảng hoặc 1 list).
+ http-request redirect: Phản hỏi tới client với đường dẫn khác. Ứng dụng khi client sử dụng http và phản hồi từ HAProxy là https, điều hướng người dùng sang giao thức https.
+ stats : Khai báo đường dẫn trang thống kê, username, password, thời gian refresh trang thống kê,…
– Backend các thiết lập trong phần backend định nghĩa tập server sẽ được cân bằng tải khi có các kết nối tới.
+ balance: Đây chính là các thuật toán cân bằng tải.
+ server: Tùy chọn quan trọng nhất trong backend section. Tùy chọn đi kèm bao gồm tên, id, port. Có thể dùng domain thay cho IP.
3. Triển khai load balancing server bằng HAproxy
3.1 Mô hình triển khai
– HAproxy server: 10.10.10.100
– Server01: 10.10.10.10
– Server02: 10.10.10.15
3.2 Cài đặt HAProxy
– Tiến hành cài đặt HAProxy theo các phiên bản Os
+ Đối với CentOs7/ Redhat7/ Oracle Linux7: # yum -y install haproxy + Đối với CentOs8/ Redhat8/ Oracle Linux8: # dnf -y install haproxy + Đối với Debian: # apt -y install haproxy + Đối với Ubuntu: # apt-get install haproxy
– Cho phép HAProxy tạo kết nối mạng
# setsebool httpd_can_network_connect on -P
– Tiến hành start HAProxy.
# service haproxy start
– Kích hoạt HAProxy.
# systemctl enable haproxy
3.3 Cấu hình cơ bản load balancing server bằng HAproxy
– Để sử dụng được file cấu hình dưới dây bạn cần tiến hành cấu hình và cài đặt thêm các yêu cầu sau đây
+ Để client truy cập sử dụng SSL bạn có thể sử dụng SSL bạn mua từ các nhà cung cấp khác hoặc sử dụng SSL miễn phi bằng cách cài đặt thêm SSL Let’s Encrypt.
3.3.1 Cài đặt và cấu hình SSL
Để sử phía Client truy cập sử dụng giao thức SSL ta tiến hành như sau:
– Sử dụng SSL free Let’s Encrypt
# yum -y install certbot
+ Tiến hành tạo SSL Let’s Encrypt cho domain.
# certbot certonly --standalone -d <domain> --staple-ocsp -m admin@<domain> --agree-tos
+ Đường đẫn lưu trữ mặc định: /etc/letsencrypt/live/<domain>/
+ Tiếp tục kết hợp fullchain.pem và privkey.pem để haproxy sử dụng.
Vi dụ: DOMAIN=’example.com’ thành DOMAIN=’weblogic.system.info.vn’
# DOMAIN='example.com' sudo -E bash -c 'cat /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/letsencrypt/live/$DOMAIN/privkey.pem > /etc/haproxy/certs/$DOMAIN.pem'
– Đối với các bạn sử dụng SSL của các nhà cung cấp khác cũng tiến thành kết hợp file fullchain.pem và privkey.pem để haproxy sử dụng.
3.3.2 Mẫu file cấu hình
– Tiến hành backup file cấu hình mặc định
# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org
– Tiến hành Edit file cấu hình mới
# vi /etc/haproxy/haproxy.cfg
global log 127.0.0.1 local2 info chroot /var/lib/haproxy pidfile /var/run/haproxy.pid # max per-process number of connections maxconn 512 user haproxy group haproxy daemon defaults mode http log global option httplog timeout connect 10s timeout client 30s timeout server 30s frontend http-in # listen 80 and 443 bind *:80 bind weblogic.system.info.vn:443 ssl crt /etc/pki/tls/certs/weblogic.system.info.vn.pem default_backend backend_servers option forwardfor stats enable # auth info for statistics site stats auth admin:adminpassword stats hide-version stats show-node stats refresh 60s # statistics reports' URI stats uri /haproxy?stats backend backend_servers # balance with roundrobin balance roundrobin # define backend servers server weblogic01 10.10.10.10:7001 check server weblogic02 10.10.10.15:7001 check
3.3.3 Kiểm tra
– Khởi động lại HAProxy
# service haproxy restart
– Đường đẫn truy cập phía client.
+ HTTP
Link: http://weblogic.system.info.vn or Link: http://10.10.10.100
+ HTTPS
https://weblogic.system.info.vn
Thuật toán roundrobin: các request sẽ được chuyển đến các server theo lượt được định nghĩa ở trên.
– Đường đẫn trang thống kê có đạng
Link: https://weblogic.system.info.vn/haproxy?stats or Link: http://10.10.10.100/haproxy?stats
– Thông tin đăng nhập được cấu hình ở trên là
+ Username: admin
+ Password: adminpassword
Đây là giao diện trang thống kê.
- Ngoài ra bạn có thể tham khảo qua bài viết cài đặt và triển khai Nginx load balancing server.
Kiến Thức System chúc các bạn thành công!