Cách thiết lập HAProxy làm Bộ cân bằng tải cho Nginx trong CentOS 8

Tác giả Network Engineer, T.Một 16, 2022, 07:47:42 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách thiết lập HAProxy làm Bộ cân bằng tải cho Nginx trong CentOS 8


High Availability Proxy còn được viết tắt là HAProxy là một trình cân bằng tải trọng lượng nhẹ và nhanh chóng, nó cũng tăng gấp đôi như một máy chủ proxy. Là một bộ cân bằng tải, nó đóng một vai trò quan trọng trong việc phân phối lưu lượng truy cập web đến trên nhiều máy chủ web bằng cách sử dụng các tiêu chí nhất định. Làm như vậy, nó đảm bảo tính khả dụng cao và khả năng chịu lỗi trong trường hợp có quá nhiều yêu cầu đồng thời có thể làm quá tải một máy chủ web.

HaProxy được sử dụng bởi các trang web phổ biến như Tumblr, GitHub và StackOverflow. Trong hướng dẫn này, mình sẽ hướng dẫn bạn cài đặt HAProxy trong thiết lập máy chủ web được cung cấp bằng Nginx.

3 phiên bản của máy chủ CentOS 7 như được hiển thị như sau:

Tên máy chủ    Địa chỉ IP

load_balancer  3.17.12.132
server_01      3.19.229.234
server_02      3.17.9.217

Bước 1: Chỉnh sửa tập tin /etc/hosts cho bộ cân bằng tải

Để bắt đầu, hãy đăng nhập vào hệ thống cân bằng tải và sửa đổi tập tin /etc/hosts để bao gồm tên máy chủ và địa chỉ IP của hai máy chủ web như hình minh họa.

Mã nguồn [Chọn]
$ vim /etc/hosts

3.19.229.234   server_01
3.17.9.217     server-02


Sau khi hoàn tất, hãy lưu các thay đổi và thoát khỏi tập tin cấu hình.

Bây giờ hãy đi đến từng máy chủ web và cập nhật tập tin /etc/hosts với địa chỉ IP và tên máy chủ của bộ cân bằng tải.

Mã nguồn [Chọn]
3.17.12.132   load-balancer
Sau đó, xác nhận rằng bạn có thể ping bộ cân bằng tải từ server_01


Và tương tự như vậy từ server_02


Ngoài ra, hãy đảm bảo rằng bạn có thể ping các máy chủ từ bộ cân bằng tải.


Hoàn hảo, tất cả các máy chủ có thể giao tiếp với bộ cân bằng tải.

Bước 2: Cài đặt và cấu hình HA Proxy trên bộ cân bằng tải

Vì HA Proxy có sẵn từ kho lưu trữ chính thức của CentOS, mình sẽ cài đặt nó bằng trình quản lý gói yum hoặc dnf.

Nhưng như mọi khi, hãy cập nhật hệ thống trước.

Mã nguồn [Chọn]
# yum update
Tiếp theo, cài đặt HA Proxy như hình.

Mã nguồn [Chọn]
# yum install haproxy

Sau khi cài đặt thành công, hãy điều hướng đến thư mục haproxy.

Mã nguồn [Chọn]
# cd /etc/haproxy
Phương pháp hay nhất yêu cầu mình sao lưu bất kỳ tập tin cấu hình nào trước khi thực hiện bất kỳ sửa đổi nào. Vì vậy, hãy sao lưu tập tin haproxy.cfg bằng cách đổi tên nó.

Mã nguồn [Chọn]
# mv haproxy.cfg  haproxy.cfg.bak
Tiếp theo, tiến hành và mở tập tin cấu hình.

Mã nguồn [Chọn]
$ vim haproxy.cfg
Đảm bảo bạn thực hiện sửa đổi như được hiển thị

Mã nguồn [Chọn]
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log         127.0.0.1 local2     #Log configuration
 
chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy             #Haproxy running under user and group "haproxy"
group       haproxy
daemon
 
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
 
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
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
 
#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080                #Haproxy Monitoring run on port 8080
mode http
option forwardfor
option httpclose
stats enable
stats show-legends
stats refresh 5s
stats uri /stats                             #URL for HAProxy monitoring
stats realm Haproxy\ Statistics
stats auth Password123: Password123#User and Password for login to the monitoring dashboard
stats admin if TRUE
default_backend app-main                    #This is optionally for monitoring backend
 
#---------------------------------------------------------------------
# FrontEnd Configuration
#---------------------------------------------------------------------
frontend main
bind *:80
option http-server-close
option forwardfor
default_backend app-main
 
#---------------------------------------------------------------------
# BackEnd round robin as balance algorithm
#---------------------------------------------------------------------
backend app-main

balance roundrobin                         #Balance algorithm

option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost
#Check the server application is up and healty - 200 status code

server server_01 3.19.229.234:80 check               #Nginx1

server server_02 3.17.9.217:80 check                 #Nginx2

Đảm bảo sửa đổi tên máy chủ và địa chỉ IP của máy chủ web như được chỉ ra trong hai dòng cuối cùng. Lưu các thay đổi và thoát.

Bước tiếp theo sẽ là cấu hình Rsyslog để có thể ghi các thống kê HAProxy.

Mã nguồn [Chọn]
# vim /etc/rsyslog.conf
Đảm bảo bạn bỏ ghi chú các dòng bên dưới để cho phép kết nối UDP

Mã nguồn [Chọn]
$ModLoad imudp
$UDPServerRun 514

Tiếp theo, tiến hành và tạo một tập tin cấu hình mới haproxy.conf

Mã nguồn [Chọn]
# vim  /etc/rsyslog.d/haproxy.conf
Dán các dòng sau, lưu và thoát.

Mã nguồn [Chọn]
local2.=info   /var/log/haproxy-access.log   #For Access Log
local2.notice  /var/log/haproxy-info.log     #For Service Info - Backend, loadbalancer

Để các thay đổi có hiệu lực, hãy khởi động lại daemon rsyslog như được hiển thị:

Mã nguồn [Chọn]
# systemctl restart rsyslog
Sau đó khởi động và kích hoạt HAProxy.

Mã nguồn [Chọn]
# systemctl start rsyslog
Mã nguồn [Chọn]
# systemctl enable rsyslog

Xác minh rằng HAProxy đang chạy.

Mã nguồn [Chọn]
# systemctl status rsyslog

Bước 3: Cài đặt và cấu hình Nginx

Bây giờ, phần duy nhất còn lại là cài đặt Nginx. Đăng nhập vào từng máy chủ và cập nhật gói hệ thống trước tiên:

Mã nguồn [Chọn]
# yum update
Tiếp theo cài đặt EPEL (Gói bổ sung cho Enterprise Linux)

Mã nguồn [Chọn]
# yum install epel-release
Để cài đặt Nginx, hãy chạy lệnh:

Mã nguồn [Chọn]
# yum install nginx
Tiếp theo, khởi động và bật Nginx

Mã nguồn [Chọn]
# systemctl start nginx
Mã nguồn [Chọn]
# systemctl enable nginx
Sau đó, mình sẽ sửa đổi tập tin index.html trong cả hai trường hợp để chứng minh hoặc mô phỏng cách bộ cân bằng tải có thể phân phối lưu lượng truy cập web trên cả hai máy chủ.

Đối với server_01

Mã nguồn [Chọn]
# echo "server_01. Hey ! Welcome to the first web server" > index.html
Đối với server_02

Mã nguồn [Chọn]
# echo "server_02. Hey ! Welcome to the second web server" > index.html
Để các thay đổi có hiệu lực, hãy khởi động lại Nginx

Mã nguồn [Chọn]
# systemctl restart nginx
Bước 4: Kiểm tra xem bộ cân bằng tải có hoạt động không

Cuối cùng chúng ta cũng đã đến thời điểm mà chúng ta muốn xem liệu cấu hình có hoạt động hay không. Vì vậy, hãy đăng nhập vào bộ cân bằng tải và thực hiện lệnh curl liên tục.

Mã nguồn [Chọn]
# curl 3.17.12.132
Bạn sẽ nhận được đầu ra xen kẽ trên cửa sổ dòng lệnh Terminal hiển thị giá trị của index.html từ server_01 và server_02


Bây giờ chúng ta hãy thử nghiệm bằng trình duyệt web. Duyệt qua địa chỉ IP của trình cân bằng tải của bạn.

Mã nguồn [Chọn]
http://load-balancer-IP-address
Trang đầu tiên sẽ hiển thị nội dung từ bất kỳ máy chủ web nào.


Bây giờ hãy làm mới trang web và kiểm tra xem nó có hiển thị nội dung từ máy chủ web khác hay không.


Thật hoàn hảo. Cân bằng tải đang phân phối lưu lượng IP như nhau giữa hai máy chủ web. Phần này kết thúc hướng dẫn này về cách bạn có thể cài đặt cũng như cấu hình HAProxy trên CentOS 8. Phản hồi của bạn sẽ được đánh giá cao bên dưới.