BalancerMember 的 status 参数用于设置后端节点初始状态,配合 /balancer-manager 界面可实现免重启的实时启停;status 值如 +H 启用并健康检查,-H 完全禁用,IH 禁用但保留探测,+ 则启用无探测。

在 Apache 的 mod_proxy_balancer 中,不能通过 ProxyPass 指令本身设置 status 标志位——status 是 BalancerMember 指令的属性,用于定义后端节点的初始状态和健康检查行为。ProxyPass 只负责路径映射和流量转发,不参与节点启停控制。
真正实现“手动控制集群内个别节点启停”的方式,是结合 BalancerMember status= 参数 + /balancer-manager 运行时界面,二者配合使用。
✅ 正确配置 BalancerMember 的 status 参数
每个 BalancerMember 可用 status= 设置初始状态,常见值有:
-
status=+H:启用(+)且开启健康检查(H),节点启动时自动探测、故障可自动剔除 -
status=-H:禁用(−)且关闭健康检查,节点完全不参与分发,也不被探测 -
status=IH:禁用(I)但保留健康检查(H),适合临时下线但想持续观察节点健康状况 -
status=+:启用但不检查健康(无 H),适用于已知稳定、无需探测的后端
示例配置:
<proxy balancer:>
BalancerMember http://192.168.1.10:8080 route=node1 loadfactor=1 status=+H
BalancerMember http://192.168.1.11:8080 route=node2 loadfactor=1 status=-H
</proxy>
ProxyPass /app/ balancer://mycluster/
这里 node2 初始即被禁用,不会接收任何请求。
⚠️ 注意:
status不是运行时动态参数,修改后需重载 Apache 配置(如systemctl reload apache2)才生效。若要免重启操作,得依赖管理界面。
✅ 用 /balancer-manager 实时启停节点(无需改配置)
启用管理界面后,可通过网页实时切换节点状态:
-
在 Apache 配置中加入:
<location> SetHandler balancer-manager Require ip 127.0.0.1 Require ip 10.0.0.0/8 </location>
重启或重载 Apache,访问
http://your-server/balancer-manager在页面中找到对应节点,点击「Enable」或「Disable」按钮即可即时启停;还可调整
lbset、loadfactor或强制标记为Failed。
该操作不修改配置文件,效果立即生效,且重启 Apache 后仍保持上次手动设置的状态(Apache 会将运行时状态写入 balancer-state 文件,只要未清空或禁用该功能)。
✅ 补充说明:status 和健康检查的关系
- 带
H(如+H或IH)才会触发周期性健康探测(默认 GET/,可用ping=自定义) - 不带
H(如+或-)则完全跳过探测,节点状态只由你手动控制 - 若后端实际宕机但没开
H,Apache 仍会持续转发请求,导致超时或 503 —— 所以生产环境建议统一用+H
✅ 小技巧:快速临时下线某节点(运维场景)
不想进网页?可用 curl 触发管理接口(需开启 mod_proxy_balancer 的 AllowEncodedSlashes NoDecode 并确保权限允许):
curl "http://localhost/balancer-manager?b=mycluster&n=http://192.168.1.11:8080&w=0&sr=0&ts=0&lb=0"
其中 w=0 表示权重设为 0(等效于临时禁用),sr=0 清除失败计数。更稳妥的方式仍是走 UI 或配合 Ansible 等工具批量操作。
不复杂但容易忽略











