linux负载均衡器通过被动检查(nginx默认)、主动探测(需第三方模块或原生支持)及外部轮询实现后端节点健康监控,确保故障节点及时剔除、恢复后自动上线。

Linux 负载均衡器监控后端节点状态,核心是“知道谁在线、谁掉线、何时恢复”。不同负载均衡器实现方式不同,但目标一致:及时发现故障、自动剔除异常节点、避免流量打到不可用服务上。
Nginx(开源版)依赖被动检查 + 第三方模块补主动能力
默认不发探测请求,只靠真实业务请求失败来判断。配置 max_fails 和 fail_timeout 是基础:
-
max_fails=3表示连续 3 次请求失败(如连接拒绝、超时、返回 502/503/504 等proxy_next_upstream指定的错误码)才标记节点为 down -
fail_timeout=30s表示该节点被标记为 down 后,30 秒内不再转发请求;到期后会尝试发一个试探请求,成功即恢复
示例:
upstream backend {
server 10.0.0.10:8080 max_fails=3 fail_timeout=30s;
server 10.0.0.11:8080 max_fails=2 fail_timeout=20s;
}
要真正实现定期 HTTP 探活(比如 GET /health),必须编译安装 nginx_upstream_check_module:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 不能通过包管理器直接安装,需下载源码、打补丁、
--add-module=编译 Nginx - 配置中启用
check interval=3000 rise=2 fall=5 timeout=1000 type=http - 必须配
default_down=true,否则新启动时所有节点默认 up,可能把流量导到未就绪服务 - 通过
location /upstream_status { healthcheck_status; }开放状态页,返回 JSON 或 HTML 查看实时状态
HAProxy 原生支持丰富健康检查机制
无需额外模块,开箱即用:
-
option httpchk GET /health HTTP/1.1\r\nHost:\ www.example.com定义探测路径和头 -
http-check expect status 200指定期望响应状态码 -
rise 2表示连续 2 次成功才标记为 up,fall 3表示连续 3 次失败才标记为 down -
inter 2000设置探测间隔为 2 秒 - 内置
/haproxy?stats页面可实时查看每个 backend server 的状态(UP/DOWN/MAINT)、会话数、错误率等
LVS + ldirectord 组合用于内核级负载均衡监控
适用于 DR/NAT/TUN 模式,由 ldirectord 守护进程主动探测真实服务器:
- 通过向每个 RIP(真实服务器 IP)发送 TCP 连接或 HTTP 请求验证可用性
- 若探测失败,自动调用
ipvsadm从 IPVS 规则中移除该节点 - 恢复后自动重新加入
- 配置文件
/etc/ha.d/ldirectord.cf中定义checkinterval、autoreload、quiescent等行为
通用可观测手段:日志 + 状态接口 + 外部轮询
- 查看
access.log和error.log中后端失败记录(如upstream timed out) - 对接 Zabbix、Prometheus 等工具,抓取
/upstream_status(Nginx)、/haproxy?stats(HAProxy)或ldirectord输出解析状态 - 编写简单脚本定期 curl 健康检查接口,结合告警触发机制(如邮件、钉钉)
不复杂但容易忽略










