集群負(fù)載均衡
安裝haproxy
準(zhǔn)備haproxy配置文件
先準(zhǔn)備haproxy.cfg
現(xiàn)成文件路徑在 a-部署/負(fù)載均衡/haproxy/haproxy.cfg
global
# 定義日志記錄到本地 3 級(jí)別,信息級(jí)別,地址為 127.0.0.1
log 127.0.0.1 local3 info
# 以守護(hù)進(jìn)程方式運(yùn)行
daemon
# 最大連接數(shù)設(shè)置為 100000
maxconn 100000
defaults
# 應(yīng)用全局的日志設(shè)置
log global
# 模式為 TCP
mode tcp
# 啟用 TCP 日志記錄
option tcplog
# 不啟用 dontlognull 選項(xiàng)
#option dontlognull
# 連接超時(shí)時(shí)間設(shè)置為 10000 毫秒
timeout connect 10000
# 注釋:timeout > mqtt 的 keepalive * 1.2
# timeout > mqtt's keepalive * 1.2
# 客戶端超時(shí)時(shí)間設(shè)置為 240 秒
timeout client 240s
# 服務(wù)器超時(shí)時(shí)間設(shè)置為 240 秒
timeout server 240s
# 最大連接數(shù)設(shè)置為 50000
maxconn 50000
backend mqtt_backend
# 模式為 TCP
mode tcp
# 粘性會(huì)話負(fù)載均衡設(shè)置
stick-table type string len 32 size 1000k expire 30m
# 根據(jù)請(qǐng)求負(fù)載和 mqtt 字段值進(jìn)行粘性會(huì)話
stick on req.payload(0,0),mqtt_field_value(connect,client_identifier)
# 節(jié)點(diǎn)A 內(nèi)網(wǎng)IP
server fastbeeA 10.x.x.x:1884 check
# 節(jié)點(diǎn)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 報(bào)文,延遲 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é)點(diǎn)A內(nèi)網(wǎng)IP
server fastbeeA 10.x.x.x:8084 check
# 節(jié)點(diǎn)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)成文件在項(xiàng)目 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.啟動(dòng) HAProxy 服務(wù)
安裝完成后,使用以下命令啟動(dòng) HAProxy 服務(wù)。
sudo systemctl start haproxy
4.設(shè)置開機(jī)自啟
為了讓 HAProxy 在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng),執(zhí)行以下命令。
sudo systemctl enable haproxy
5.檢查服務(wù)狀態(tài)
可以使用以下命令檢查 HAProxy 服務(wù)是否正常運(yùn)行。
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í)行以下命令進(jìn)行編譯和安裝。
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.啟動(dòng)服務(wù)并設(shè)置開機(jī)自啟
重新加載 Systemd 配置,啟動(dòng) HAProxy 服務(wù)并設(shè)置開機(jī)自啟。
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.啟動(dòng) HAProxy 服務(wù)
安裝完成后,使用以下命令啟動(dòng) HAProxy 服務(wù)。
sudo systemctl start haproxy
4.設(shè)置開機(jī)自啟
為了讓 HAProxy 在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng),執(zhí)行以下命令。
sudo systemctl enable haproxy
5.檢查服務(wù)狀態(tài)
可以使用以下命令檢查 HAProxy 服務(wù)是否正常運(yùn)行。
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í)行以下命令進(jìn)行編譯和安裝。
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.啟動(dòng)服務(wù)并設(shè)置開機(jī)自啟
重新加載 Systemd 配置,啟動(dòng) HAProxy 服務(wù)并設(shè)置開機(jī)自啟。
sudo systemctl daemon-reload
sudo systemctl start haproxy
sudo systemctl enable haproxy
安裝完成后,根據(jù)實(shí)際需求修改 /etc/haproxy/haproxy.cfg
配置文件,以實(shí)現(xiàn)不同的負(fù)載均衡策略。