TOBI

Hướng dẫn cài đặt Haproxy trên Ubuntu

AM

Nội dung

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 .

Tobi

Tobi

Chào mọi người, mình là Quyền - hiện đang công tác tại Phòng Kỹ thuật AZDIGI. Trong quá trình làm việc mình có cơ hội được tiếp xúc với khá nhiều các vấn đề liên quan đến Website/Hosting/VPS/Server, do đó mình viết lại các hướng dẫn này nhằm chia sẻ kiến thức, cũng như tạo một môi trường để chúng ta giao lưu và học hỏi lẫn nhau, trau dồi thêm nhiều kiến thức bổ ích hơn nữa.