HAProxy 后端服务器状态显示 DOWN 如何快速恢复?

文章导读
当 HAProxy 后端状态显示 DOWN 时,绝大多数情况源于四层连接拒绝,典型日志特征为 `info: "Connection refused"` 且 `check duration: 0ms`,这表明后端服务可能未启动或配置不正确。
📋 目录
  1. A 原因分析
  2. B 解决方案
  3. C 注意事项
  4. D 参考来源
A A

HAProxy 后端服务器状态显示 DOWN 如何快速恢复?

当 HAProxy 后端状态显示 DOWN 时,绝大多数情况源于四层连接拒绝,典型日志特征为 `info: "Connection refused"` 且 `check duration: 0ms`,这表明后端服务可能未启动或配置不正确。

原因分析

后端状态变为 DOWN 主要由三层原因导致。首先是网络层连通性问题,如华为云 Stack 告警 ID ALM-2000904 指出,当 HAProxy 浮动 IP 未绑定到对应网卡上时会产生紧急级别告警。其次是应用层服务异常,在 CentOS 6.5 环境下,日志常显示 `Server static/static is DOWN, reason: Layer4 connection problem`,意味着 TCP 握手失败。最后是权限配置缺失,特别是在 MySQL 集群场景中,若 HAProxy 用户没有 `GRANT USAGE ON *.*` 权限,健康检查将无法通过。

解决方案

1. 检查日志与端口可达性

首先查看日志文件 `/var/log/haproxy.log`,确认报错信息。随后使用 `lsof -i:8080` 或 `curl 10.10.10.130:8080` 验证后端 Web 服务是否返回预期内容(如 "web1")。对于数据库后端,需测试端口 3306 是否可达。

2. 调整防火墙与 SELinux 策略

在 CentOS 6.5 平台部署时,需执行 `service iptables stop` 并运行 `chkconfig iptables off` 关闭防火墙。同时修改 SELinux 配置,执行 `sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config` 后重启服务器。

3. 优化负载均衡算法与权重

在配置文件 `/etc/haproxy/haproxy.cfg` 中,建议使用 `balance leastconn` 策略替代轮询,并为每个节点添加权重和最大连接数。若使用 HAProxy 1.8.25 版本,需确保配置包含 global、defaults、frontend、backend 和 listen 五个部分。

注意事项

在主动/被动后端设置中,当故障服务器恢复联机时,流量可能会发送到新的固定服务器而不是停留在备份上,这是粘性表(Stick Table)的已知行为。此外,自行编译安装 HAProxy 时,若版本为 1.4 可能出现不记录日志的情况,建议升级至 1.8.25 或更高版本。理论上 Nginx 可支持高达 50,000 个并发连接数,但 HAProxy 在四层负载均衡上更为专业,需根据业务场景选择。

HAProxy 后端服务器状态显示 DOWN 如何快速恢复?

参考来源

来源:CSDN 博客 - 服务器状态 down,HAProxy 的状态显示 DOWN

来源:华为云 Stack 8.1.1 故障管理 09 - ALM-2000904 haproxy 服务异常

来源:轻笔记 - centos 6.5 + haproxy 1.4 搭配之 haproxy 不记录日志一则

来源:博客园 - Haproxy 的安装与配置(版本 1.8.25)