Skip to content

集群负载均衡 ​

1. 安装haproxy ​

准备haproxy配置文件 ​

先准备haproxy.cfg

现成文件路径在 a-部署/负载均衡/haproxy/haproxy.cfg

shell
global
    # 定义日志记录到本地 3 级别,信息级别,地址为 127.0.0.1
    log 127.0.0.1 local3 info
    # 以守护进程方式运行
    daemon
    # 最大连接数设置为 100000
    maxconn 100000
defaults
    # 应用全局的日志设置
    log global
    # 模式为 TCP
    mode tcp
    # 启用 TCP 日志记录
    option tcplog
    # 不启用 dontlognull 选项
    #option dontlognull
    # 连接超时时间设置为 10000 毫秒
    timeout connect 10000
    # 注释:timeout > mqtt 的 keepalive * 1.2
    # timeout > mqtt's keepalive * 1.2
    # 客户端超时时间设置为 240 秒
    timeout client 240s
    # 服务器超时时间设置为 240 秒
    timeout server 240s
    # 最大连接数设置为 50000
    maxconn 50000

backend mqtt_backend
    # 模式为 TCP
    mode tcp
    # 粘性会话负载均衡设置
    stick-table type string len 32 size 1000k expire 30m
    # 根据请求负载和 mqtt 字段值进行粘性会话
    stick on req.payload(0,0),mqtt_field_value(connect,client_identifier)

    # 节点A 内网IP
    server fastbeeA 10.x.x.x:1884 check
    # 节点B 内网IP
    server fastbeeB 10.x.x.x:1884 check

frontend mqtt_servers
    # 绑定到所有地址的 1884 端口
    bind *:1883
    # 模式为 TCP
    mode tcp
    # 等待缓冲区填满以便解析 MQTT 报文,延迟 10 秒
    tcp-request inspect-delay 10s
    # 拒绝非 MQTT 连接
    tcp-request content reject unless { req.payload(0,0),mqtt_is_valid }
    # 设置默认后端为 mqtt_backend
    default_backend mqtt_backend

backend mqtt_ws_backend
  mode tcp
  balance roundrobin
    # 节点A内网IP
    server fastbeeA 10.x.x.x:8084 check
    # 节点B内网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 修改内网IP地址

2. docker-compose方式安装 ​

将haproxy.cfg 复制到 /opt/haproxy

现成文件在项目 a-部署/负载均衡/haproxy/docker-compose安装/docker-compose.yml

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

执行docker-compose命令

3. CentOS系统 ​

A.使用包管理器安装(yum) ​

1.更新系统软件包列表

打开终端,执行以下命令更新系统软件包列表,确保可以获取到最新的软件包信息。

bash
sudo yum update -y

2.安装 HAProxy

使用 yum 命令安装 HAProxy。

bash
sudo yum install haproxy -y

3.启动 HAProxy 服务

安装完成后,使用以下命令启动 HAProxy 服务。

bash
sudo systemctl start haproxy

4.设置开机自启

为了让 HAProxy 在系统启动时自动启动,执行以下命令。

bash
sudo systemctl enable haproxy

5.检查服务状态

可以使用以下命令检查 HAProxy 服务是否正常运行。

bash
sudo systemctl status haproxy

B.源码编译安装 ​

*1.安装编译依赖

首先需要安装编译所需的工具和依赖库。

bash
sudo yum install -y gcc make pcre-devel zlib-devel systemd-devel

2.下载 HAProxy 源码

从 HAProxy 官方网站下载最新版本的源码包,这里以 HAProxy 2.6.14 为例。

bash
wget https://www.haproxy.org/download/2.6/src/haproxy-2.6.14.tar.gz

3.解压源码包

使用以下命令解压下载的源码包。

bash
tar -zxvf haproxy-2.6.14.tar.gz
cd haproxy-2.6.14

4.编译和安装

依次执行以下命令进行编译和安装。

bash
make TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1 USE_SYSTEMD=1
sudo make install

5.创建配置文件和服务文件

创建 HAProxy 的配置文件目录和配置文件,并创建 Systemd 服务文件。

bash
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.启动服务并设置开机自启

重新加载 Systemd 配置,启动 HAProxy 服务并设置开机自启。

bash
sudo systemctl daemon-reload
sudo systemctl start haproxy
sudo systemctl enable haproxy

4. Ubuntu系统 ​

A.使用包管理器安装(apt) ​

1.更新系统软件包列表

打开终端,执行以下命令更新系统软件包列表。

bash
sudo apt update

2.安装 HAProxy

使用 apt 命令安装 HAProxy。

bash
sudo apt install haproxy -y

3.启动 HAProxy 服务

安装完成后,使用以下命令启动 HAProxy 服务。

bash
sudo systemctl start haproxy

4.设置开机自启

为了让 HAProxy 在系统启动时自动启动,执行以下命令。

bash
sudo systemctl enable haproxy

5.检查服务状态

可以使用以下命令检查 HAProxy 服务是否正常运行。

bash
sudo systemctl status haproxy

B.源码编译安装 ​

1.安装编译依赖

首先需要安装编译所需的工具和依赖库。

bash
sudo apt install -y build-essential libpcre3-dev zlib1g-dev libssl-dev systemd-dev

2.下载 HAProxy 源码

从 HAProxy 官方网站下载最新版本的源码包,以 HAProxy 2.6.14 为例。

bash
wget https://www.haproxy.org/download/2.6/src/haproxy-2.6.14.tar.gz

3.解压源码包

使用以下命令解压下载的源码包。

bash
tar -zxvf haproxy-2.6.14.tar.gz
cd haproxy-2.6.14

4.编译和安装

依次执行以下命令进行编译和安装。

bash
make TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1 USE_SYSTEMD=1
sudo make install

5.创建配置文件和服务文件

创建 HAProxy 的配置文件目录和配置文件,并创建 Systemd 服务文件。

bash
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.启动服务并设置开机自启

重新加载 Systemd 配置,启动 HAProxy 服务并设置开机自启。

bash
sudo systemctl daemon-reload
sudo systemctl start haproxy
sudo systemctl enable haproxy

安装完成后,根据实际需求修改 /etc/haproxy/haproxy.cfg 配置文件,以实现不同的负载均衡策略。

蜂信物联 | fastbee.cn