集群負(fù)載均衡
安裝haproxy
準(zhǔn)備haproxy配置文件
先準(zhǔn)備haproxy.cfg
現(xiàn)成文件路徑在 a-部署/負(fù)載均衡/haproxy/haproxy.cfg
global
# 定義日志記錄到本地 3 級別,信息級別,地址為 127.0.0.1
log 127.0.0.1 local3 info
# 以守護進程方式運行
daemon
# 最大連接數(shù)設(shè)置為 100000
maxconn 100000
defaults
# 應(yīng)用全局的日志設(shè)置
log global
# 模式為 TCP
mode tcp
# 啟用 TCP 日志記錄
option tcplog
# 不啟用 dontlognull 選項
#option dontlognull
# 連接超時時間設(shè)置為 10000 毫秒
timeout connect 10000
# 注釋:timeout > mqtt 的 keepalive * 1.2
# timeout > mqtt's keepalive * 1.2
# 客戶端超時時間設(shè)置為 240 秒
timeout client 240s
# 服務(wù)器超時時間設(shè)置為 240 秒
timeout server 240s
# 最大連接數(shù)設(shè)置為 50000
maxconn 50000
backend mqtt_backend
# 模式為 TCP
mode tcp
# 粘性會話負(fù)載均衡設(shè)置
stick-table type string len 32 size 1000k expire 30m
# 根據(jù)請求負(fù)載和 mqtt 字段值進行粘性會話
stick on req.payload(0,0),mqtt_field_value(connect,client_identifier)
# 節(jié)點A 內(nèi)網(wǎng)IP
server fastbeeA 10.x.x.x:1884 check
# 節(jié)點B 內(nèi)網(wǎng)IP
server fastbeeB 10.x.x.x:1884 check
frontend mqtt_servers
# 綁定到所有地址的 1884 端口
bind *:1883
# 模式為 TCP
mode tcp
# 等待緩沖區(qū)填滿以便解析 MQTT 報文,延遲 10 秒
tcp-request inspect-delay 10s
# 拒絕非 MQTT 連接
tcp-request content reject unless { req.payload(0,0),mqtt_is_valid }
# 設(shè)置默認(rèn)后端為 mqtt_backend
default_backend mqtt_backend
backend mqtt_ws_backend
mode tcp
balance roundrobin
# 節(jié)點A內(nèi)網(wǎng)IP
server fastbeeA 10.x.x.x:8084 check
# 節(jié)點B內(nèi)網(wǎng)IP
server fastbeeB 10.x.x.x:8084 check
frontend mqtt_ws_frontend
bind *:8083
mode tcp
default_backend mqtt_ws_backend
定位 server fastbeeA
server fastbeeB
修改內(nèi)網(wǎng)IP地址
docker-compose方式安裝
將haproxy.cfg
復(fù)制到 /opt/haproxy
現(xiàn)成文件在項目 a-部署/負(fù)載均衡/haproxy/docker-compose安裝/docker-compose.yml
version: '3'
services:
haproxy:
image: haproxy:latest
ports:
- "8083:8083"
- "1883:1883"
volumes:
- /opt/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
restart: always
執(zhí)行docker-compose命令
CentOS系統(tǒng)
A.使用包管理器安裝(yum)
1.更新系統(tǒng)軟件包列表
打開終端,執(zhí)行以下命令更新系統(tǒng)軟件包列表,確??梢垣@取到最新的軟件包信息。
sudo yum update -y
2.安裝 HAProxy
使用 yum
命令安裝 HAProxy。
sudo yum install haproxy -y
3.啟動 HAProxy 服務(wù)
安裝完成后,使用以下命令啟動 HAProxy 服務(wù)。
sudo systemctl start haproxy
4.設(shè)置開機自啟
為了讓 HAProxy 在系統(tǒng)啟動時自動啟動,執(zhí)行以下命令。
sudo systemctl enable haproxy
5.檢查服務(wù)狀態(tài)
可以使用以下命令檢查 HAProxy 服務(wù)是否正常運行。
sudo systemctl status haproxy
B.源碼編譯安裝
1.安裝編譯依賴*
首先需要安裝編譯所需的工具和依賴庫。
sudo yum install -y gcc make pcre-devel zlib-devel systemd-devel
2.下載 HAProxy 源碼
從 HAProxy 官方網(wǎng)站下載最新版本的源碼包,這里以 HAProxy 2.6.14 為例。
wget https://www.haproxy.org/download/2.6/src/haproxy-2.6.14.tar.gz
3.解壓源碼包
使用以下命令解壓下載的源碼包。
tar -zxvf haproxy-2.6.14.tar.gz
cd haproxy-2.6.14
4.編譯和安裝
依次執(zhí)行以下命令進行編譯和安裝。
make TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1 USE_SYSTEMD=1
sudo make install
5.創(chuàng)建配置文件和服務(wù)文件
創(chuàng)建 HAProxy 的配置文件目錄和配置文件,并創(chuàng)建 Systemd 服務(wù)文件。
sudo mkdir -p /etc/haproxy
sudo cp examples/haproxy.cfg /etc/haproxy/
sudo tee /etc/systemd/system/haproxy.service <<EOF
[Unit]
Description=HAProxy Load Balancer
After=network.target
[Service]
ExecStart=/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg
ExecReload=/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st \$MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
EOF
6.啟動服務(wù)并設(shè)置開機自啟
重新加載 Systemd 配置,啟動 HAProxy 服務(wù)并設(shè)置開機自啟。
sudo systemctl daemon-reload
sudo systemctl start haproxy
sudo systemctl enable haproxy
Ubuntu系統(tǒng)
A.使用包管理器安裝(apt)
1.更新系統(tǒng)軟件包列表
打開終端,執(zhí)行以下命令更新系統(tǒng)軟件包列表。
sudo apt update
2.安裝 HAProxy
使用 apt
命令安裝 HAProxy。
sudo apt install haproxy -y
3.啟動 HAProxy 服務(wù)
安裝完成后,使用以下命令啟動 HAProxy 服務(wù)。
sudo systemctl start haproxy
4.設(shè)置開機自啟
為了讓 HAProxy 在系統(tǒng)啟動時自動啟動,執(zhí)行以下命令。
sudo systemctl enable haproxy
5.檢查服務(wù)狀態(tài)
可以使用以下命令檢查 HAProxy 服務(wù)是否正常運行。
sudo systemctl status haproxy
B.源碼編譯安裝
1.安裝編譯依賴
首先需要安裝編譯所需的工具和依賴庫。
sudo apt install -y build-essential libpcre3-dev zlib1g-dev libssl-dev systemd-dev
2.下載 HAProxy 源碼
從 HAProxy 官方網(wǎng)站下載最新版本的源碼包,以 HAProxy 2.6.14 為例。
wget https://www.haproxy.org/download/2.6/src/haproxy-2.6.14.tar.gz
3.解壓源碼包
使用以下命令解壓下載的源碼包。
tar -zxvf haproxy-2.6.14.tar.gz
cd haproxy-2.6.14
4.編譯和安裝
依次執(zhí)行以下命令進行編譯和安裝。
make TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1 USE_SYSTEMD=1
sudo make install
5.創(chuàng)建配置文件和服務(wù)文件
創(chuàng)建 HAProxy 的配置文件目錄和配置文件,并創(chuàng)建 Systemd 服務(wù)文件。
sudo mkdir -p /etc/haproxy
sudo cp examples/haproxy.cfg /etc/haproxy/
sudo tee /etc/systemd/system/haproxy.service <<EOF
[Unit]
Description=HAProxy Load Balancer
After=network.target
[Service]
ExecStart=/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg
ExecReload=/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st \$MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
EOF
6.啟動服務(wù)并設(shè)置開機自啟
重新加載 Systemd 配置,啟動 HAProxy 服務(wù)并設(shè)置開機自啟。
sudo systemctl daemon-reload
sudo systemctl start haproxy
sudo systemctl enable haproxy
安裝完成后,根據(jù)實際需求修改 /etc/haproxy/haproxy.cfg
配置文件,以實現(xiàn)不同的負(fù)載均衡策略。