CentOS 7 作为一款稳定可靠的 Linux 发行版,常被用于搭建企业级服务环境,HAProxy 作为一款高性能的 TCP/HTTP 反向代理服务器,能够有效实现负载均衡和高可用性,本文将详细介绍如何在 CentOS 7 系统上配置 HAProxy 实现 TCP 负载均衡,涵盖安装、配置、启动及常见问题排查等关键步骤。

安装 HAProxy
在 CentOS 7 上,HAProxy 可通过 yum 包管理器直接安装,首先更新系统软件包列表:
sudo yum update -y
随后执行安装命令:
sudo yum install -y haproxy
安装完成后,检查 HAProxy 版本以确认安装成功:
haproxy -v
配置 HAProxy
HAProxy 的主配置文件位于 /etc/haproxy/haproxy.cfg,建议先备份原始配置:
sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
编辑配置文件,添加 TCP 负载均衡相关参数,以下为基本配置示例:

global
log /dev/log local0
chroot /var/lib/haproxy
stats socket /var/run/haproxy.sock mode 600 level admin
user haproxy
group haproxy
defaults
mode tcp
option tcplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen tcp_lb
bind *:8080
balance roundrobin
server web1 192.168.1.101:80 check
server web2 192.168.1.102:80 check
- global 段:定义全局日志、运行用户等参数。
- defaults 段:默认模式为 TCP(
mode tcp),适用于四层负载均衡。 - listen 段:配置监听端口(
bind *:8080)、负载均衡算法(balance roundrobin)及后端服务器列表(server指令)。
启动与验证 HAProxy
配置完成后,启动 HAProxy 服务并设置开机自启:
sudo systemctl start haproxy sudo systemctl enable haproxy
检查服务状态:
sudo systemctl status haproxy
若需查看实时连接状态,可通过 socat 工具连接 stats socket:
echo "show stat" | sudo socat /var/run/haproxy.sock -
常见问题排查
- 端口冲突:确保 HAProxy 监听的端口未被其他服务占用。
- 后端服务器不可达:检查
server指令中的 IP 和端口是否正确,防火墙是否放行相关流量。
FAQs
Q1:如何验证 HAProxy 的 TCP 负载均衡是否生效?
A1:可以使用 netstat 或 ss 命令查看 HAProxy 监听的端口是否处于监听状态,并通过 telnet 或 nc 测试访问该端口,观察请求是否轮询分发到后端服务器。

telnet localhost 8080
Q2:HAProxy 配置文件修改后如何平滑重载?
A2:使用以下命令平滑重载配置,避免服务中断:
sudo systemctl reload haproxy
重载后可通过 systemctl status haproxy 检查新配置是否生效。