Nội dung bài viết
Giới thiệu
HAProxy viết tắt (High Availability Proxy) là một phần mềm mã nguồn mở được sử dụng làm load balancer và proxy server. Nó được sử dụng để phân phối tải trên nhiều server để tăng tính sẵn sàng và hiệu quả của hệ thống.Nếu một server đơn lẻ bị hỏng, cân bằng tải (load balancer) sẽ chuyển hướng lưu lượng truy cập đến các server trực tuyến còn lại. Khi một server mới được thêm vào nhóm máy chủ, bộ cân bằng tải sẽ tự động bắt đầu gửi yêu cầu đến máy chủ mới thêm này. Trong bài viết này, chúng ta sẽ hướng dẫn cài đặt Haproxy trên Ubuntu.
Chuẩn bị
Node Ubuntu có IP : 192.168.10.1 ( Cài Haproxy )
Node web1 có IP : 192.168.10.2
Node web2 có IP : 192.168.10.3
( ở node web mình sử dụng máy chủ đã có sẵn website , nếu chưa có mọi người cài websever lên nhé )
Bài hướng dẫn chủ yếu mình viết giới thiệu và cấu hình cơ bản của HAProxy , còn về phần node web1 ,node web2 sẽ có bạn đã có , còn bạn nào chưa có có thể dựng khá đơn giản bằng LEMP Stack hoặc LAMP Stack nhé.
Cài đặt
Bước 1 : Cài Haproxy
Bước đầu tiên là cài đặt Haproxy trên Ubuntu. Bạn có thể cài đặt Haproxy bằng cách sử dụng lệnh sau:
sudo add-apt-repository ppa:vbernat/haproxy-1.8 sudo apt-get update sudo apt-get install haproxy
Bước 2 : Cấu hình Haproxy
Bây giờ bạn đã cài đặt thành công Haproxy trên Ubuntu. Tiếp theo, bạn cần phải cấu hình nó để hoạt động đúng cách. File cấu hình của Haproxy là “/etc/haproxy/haproxy.cfg”. Để chắc chắn mình sẽ copy file này ra :
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
Bạn có thể chỉnh sửa file này bằng trình soạn thảo văn bản như Nano hoặc Vim. Sau đó, bổ sung các thông tin cần thiết như địa chỉ IP của các server bạn muốn phân phối tải và cổng để phục vụ.
vi /etc/haproxy/haproxy.cfg
Thay thế bằng nội dung sau :
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen stats bind :1008 # Port truy cập mode http stats enable stats uri /azdigi #URL sau IP stats realm HAProxy\ Statistics listen webcluster bind :80 balance roundrobin mode http option forwardfor server web1 192.168.10.2:80 check #IP node1 server web2 192.168.10.3:80 check #IP node2
Bước 3 : Mở Port ở firewalld
ufw allow 1008
Bước 4 : Khởi động Haproxy
Sau khi cài đặt và cấu hình Haproxy, bạn có thể khởi động nó bằng lệnh sau:
sudo systemctl enable haproxy<br>sudo systemctl restart haproxy
Bước 5 : Truy cập kiểm tra xem proxy đã nhận 2 node chưa.
Ở đây mình truy cập theo port và đường dẫn theo đoạn cấu hình trong file haproxy.cfg : http://192.168.10.1:1008/azdigi
Tới đây là đã hoàn tất phần cài đặt và cấu hình cơ bản để bạn có thể sử dụng HAProxy rồi.
Cấu hình log cho Haproxy
Mặc định HAProxy sẽ gửi log tới rsyslog trên IP local.
Kiểm tra cấu hình log mặc định với lệnh sau :
cat /etc/haproxy/haproxy.cfg | grep ^global -A 1
Kết quả :
Chỉnh sửa cấu hình rsyslog.conf
sed -i "s/#\$ModLoad imudp/\$ModLoad imudp/g" /etc/rsyslog.conf sed -i "s/#\$UDPServerRun 514/\$UDPServerRun 514/g" /etc/rsyslog.conf echo '$UDPServerAddress 127.0.0.1' >> /etc/rsyslog.conf
Tạo file cấu hình rsyslog cho Haproxy :
echo 'local2.* /var/log/haproxy.log' > /etc/rsyslog.d/haproxy.conf
Khởi động lại Rsyslog và HAProxy :
systemctl restart rsyslog systemctl restart haproxy
Kết quả File cấu hình log :
ll /var/log/haproxy.log
Nội dung :
Cách thêm tài khoản khi truy cập vào HAProxy
Các bạn thêm đoạn sau vào file config là được nhé
stats auth admin:adminpassword
Cấu Hình Cookie
Giới thiệu
HAProxy viết tắt (High Availability Proxy) là một phần mềm mã nguồn mở được sử dụng làm load balancer và proxy server. Nó được sử dụng để phân phối tải trên nhiều server để tăng tính sẵn sàng và hiệu quả của hệ thống.Nếu một server đơn lẻ bị hỏng, cân bằng tải (load balancer) sẽ chuyển hướng lưu lượng truy cập đến các server trực tuyến còn lại. Khi một server mới được thêm vào nhóm máy chủ, bộ cân bằng tải sẽ tự động bắt đầu gửi yêu cầu đến máy chủ mới thêm này. Trong bài viết này, chúng ta sẽ hướng dẫn cài đặt Haproxy trên Ubuntu.
Chuẩn bị
Node Ubuntu có IP : 192.168.10.1 ( Cài Haproxy )
Node web1 có IP : 192.168.10.2
Node web2 có IP : 192.168.10.3
( ở node web mình sử dụng máy chủ đã có sẵn website , nếu chưa có mọi người cài websever lên nhé )
Bài hướng dẫn chủ yếu mình viết giới thiệu và cấu hình cơ bản của HAProxy , còn về phần node web1 ,node web2 sẽ có bạn đã có , còn bạn nào chưa có có thể dựng khá đơn giản bằng LEMP Stack hoặc LAMP Stack nhé.
Cài đặt
Bước 1 : Cài Haproxy
Bước đầu tiên là cài đặt Haproxy trên Ubuntu. Bạn có thể cài đặt Haproxy bằng cách sử dụng lệnh sau:
sudo add-apt-repository ppa:vbernat/haproxy-1.8 sudo apt-get update sudo apt-get install haproxy
Bước 2 : Cấu hình Haproxy
Bây giờ bạn đã cài đặt thành công Haproxy trên Ubuntu. Tiếp theo, bạn cần phải cấu hình nó để hoạt động đúng cách. File cấu hình của Haproxy là “/etc/haproxy/haproxy.cfg”. Để chắc chắn mình sẽ copy file này ra :
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
Bạn có thể chỉnh sửa file này bằng trình soạn thảo văn bản như Nano hoặc Vim. Sau đó, bổ sung các thông tin cần thiết như địa chỉ IP của các server bạn muốn phân phối tải và cổng để phục vụ.
vi /etc/haproxy/haproxy.cfg
Thay thế bằng nội dung sau :
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen stats bind :1008 # Port truy cập mode http stats enable stats uri /azdigi #URL sau IP stats realm HAProxy\ Statistics listen webcluster bind :80 balance roundrobin mode http option forwardfor server web1 192.168.10.2:80 check #IP node1 server web2 192.168.10.3:80 check #IP node2
Bước 3 : Mở Port ở firewalld
ufw allow 1008
Bước 4 : Khởi động Haproxy
Sau khi cài đặt và cấu hình Haproxy, bạn có thể khởi động nó bằng lệnh sau:
sudo systemctl enable haproxy sudo systemctl restart haproxy
Bước 5 : Truy cập kiểm tra xem proxy đã nhận 2 node chưa.
Ở đây mình truy cập theo port và đường dẫn theo đoạn cấu hình trong file haproxy.cfg : http://192.168.10.1:1008/azdigi
Tới đây là đã hoàn tất phần cài đặt và cấu hình cơ bản để bạn có thể sử dụng HAProxy rồi.
Cấu hình log cho Haproxy
Mặc định HAProxy sẽ gửi log tới rsyslog trên IP local.
Kiểm tra cấu hình log mặc định với lệnh sau :
cat /etc/haproxy/haproxy.cfg | grep ^global -A 1
Kết quả :
Chỉnh sửa cấu hình rsyslog.conf
sed -i "s/#\$ModLoad imudp/\$ModLoad imudp/g" /etc/rsyslog.conf sed -i "s/#\$UDPServerRun 514/\$UDPServerRun 514/g" /etc/rsyslog.conf echo '$UDPServerAddress 127.0.0.1' >> /etc/rsyslog.conf
Tạo file cấu hình rsyslog cho Haproxy :
echo 'local2.* /var/log/haproxy.log' > /etc/rsyslog.d/haproxy.conf
Khởi động lại Rsyslog và HAProxy :
systemctl restart rsyslog systemctl restart haproxy
Kết quả File cấu hình log :
ll /var/log/haproxy.log
Nội dung :
Cách thêm tài khoản khi truy cập vào HAProxy
Các bạn thêm đoạn sau vào file haproxy.cfg
stats auth admin:adminpassword
Cấu Hình Cookie
Nếu bạn có 1 website bán hàng đang muốn xây dựng hệ thống HA hoàn chỉnh, thì việc mỗi khi f5 lại website thì khách hàng sẽ mất hết các thao tác trên website hiện tại thì rất bất tiện , thêm đoạn cấu hình sau vào file haproxy.cfg để đưa cookie vào trình duyệt máy khách :
frontend fttend_web bind 0.0.0.0:80 default_backend bk_web backend bkend_web balance roundrobin cookie SERVERID insert indirect nocache server web1 192.168.10.2:80 check cookie web1 server web2 192.168.10.3:80 check cookie web2
Kết luận
Trong bài viết này, chúng ta đã hướng dẫn cài đặt và cấu hình Haproxy trên Ubuntu. Nếu bạn đang có kế hoạch triển khai một hệ thống phân phối tải, Haproxy là một giải pháp tuyệt vời để giúp bạn đạt được mục tiêu của mình , chúc các bạn cài đặt thành công .
frontend fttend_web bind 0.0.0.0:80 default_backend bk_web backend bkend_web balance roundrobin cookie SERVERID insert indirect nocache server web1 192.168.10.2:80 check cookie web1 server web2 192.168.10.3:80 check cookie web2
Kết luận
Trong bài viết này, chúng ta đã hướng dẫn cài đặt và cấu hình Haproxy trên Ubuntu. Nếu bạn đang có kế hoạch triển khai một hệ thống phân phối tải, Haproxy là một giải pháp tuyệt vời để giúp bạn đạt được mục tiêu của mình , chúc các bạn cài đặt thành công .