如何实现HAProxy集群多节点私有配置?
- By : Will
- Category : Load balancing

Load balancing
1 前言
一个问题,一篇文章,一出故事。
笔者之前创建的HAProxy集群(基于3层路由,即任播技术实现多个HAProxy节点集群),集群的每个节点配置文件都存放于“/etc/haproxy/conf.d”,使用脚本手动将单节点配置推送到其他的HAProxy节点,以便实现配置文件同步。
今天笔者需要在HAProxy集群中的每个节点创建差异配置文件夹“/etc/haproxy/private”,用于存放非同步的差异配置,并应用于不同的HAProxy节点。
2 最佳实践
2.1 环境信息
2.2 配置方法
2.2.1 创建私有配置文件夹
mkdir /etc/haproxy/private
2.2.2 修改启动脚本
vim /usr/lib/systemd/system/haproxy.service
配置修改如下,
[Unit] Description=HAProxy Load Balancer After=network-online.target Wants=network-online.target [Service] EnvironmentFile=-/etc/sysconfig/haproxy Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/run/haproxy.pid" "CFGDIR=/etc/haproxy/conf.d" Environment="PCFGDIR=/etc/haproxy/private" ExecStartPre=/usr/sbin/haproxy -f $CONFIG -f $CFGDIR -f $PCFGDIR -c -q $OPTIONS ExecStart=/usr/sbin/haproxy -Ws -f $CONFIG -f $CFGDIR -f $PCFGDIR -p $PIDFILE $OPTIONS ExecReload=/usr/sbin/haproxy -f $CONFIG -f $CFGDIR -f $PCFGDIR -c -q $OPTIONS ExecReload=/bin/kill -USR2 $MAINPID KillMode=mixed SuccessExitStatus=143 Type=notify [Install] WantedBy=multi-user.target
配置修改后,你需要执行如下命令重载服务使配置生效,
systemctl daemon-reload
2.2.3 重启服务应用设置
systemctl restart haproxy
2.2.4 确认设置生效
systemctl status haproxy
可见如下变更,
● haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; preset: disabled) Active: active (running) since Thu 2025-10-23 08:57:34 CST; 45min ago Process: 2061874 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -f $CFGDIR -f $PCFGDIR -c -q $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 2061876 (haproxy) Tasks: 3 (limit: 47368) Memory: 4.2M CPU: 780ms CGroup: /system.slice/haproxy.service ├─2061876 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d -f /etc/haproxy/private -p /run/haproxy.pid └─2061878 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d -f /etc/haproxy/private -p /run/haproxy.pid
没有评论