lbset通过数值优先级分组实现多层级容灾调度:先用lbset=0主集群,全失效后降级lbset=1备集群,再失效才启用lbset=2灾备集群,需配合failonstatus、retry及健康检查确保准确降级。
apache mod_proxy 本身不提供“自动故障转移”的语义,但通过 mod_proxy_balancer 的 lbset 分组机制 + 健康探测策略,可以构建出清晰、可控的多后端故障转移链路。核心不是“主动切换”,而是“按优先级分组 + 故障感知 + 自动降级”。
用 lbset 实现层级化故障转移
lbset 是 BalancerMember 的关键参数,数值越小优先级越高。Apache 会严格按 lbset 数值从低到高尝试:只有当前组全部不可用时,才启用下一组。
- 主集群(生产环境)设为
lbset=0:BalancerMember http://10.0.1.10:8080/ lbset=0 retry=15 failonstatus=500,502,503,504 - 备用集群(同城灾备)设为
lbset=1:BalancerMember http://10.0.2.10:8080/ lbset=1 retry=30 failonstatus=500,502,503,504 - 灾备集群(异地冷备)设为
lbset=2:BalancerMember http://10.3.1.10:8080/ lbset=2 retry=60
只要 lbset=0 中任一节点健康,请求就永不落到 lbset=1 或 lbset=2;只有整个 lbset=0 进入冷却期或全标记为 DOWN,才会升至 lbset=1。
让故障识别更准:failonstatus + retry + maxattempts
仅靠连接超时无法及时发现“假活”服务(如线程卡死、响应缓慢),必须结合状态码和重试逻辑:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
-
failonstatus=500,502,503,504:后端返回这些网关错误,立即视为失效,不等超时 -
retry=15:节点失败后 15 秒内不参与调度,避免雪崩式试探 -
maxattempts=2配合lbmethod=byrequests:单次请求最多尝试两个节点,失败即走下一个 lbset
兜底:全部后端失效时返回本地维护页
当所有 lbset 组均无可用成员时,mod_proxy_balancer 默认返回 503。此时可拦截并跳转静态页:
- 确保
/maintenance.html存在且不被代理:ProxyPass /maintenance.html ! - 添加重写规则(需启用
mod_rewrite):RewriteCond %{ENV:balancer_worker_route} ^$RewriteRule ^(.*)$ /maintenance.html [R=503,L] - 或更简洁方式:
ErrorDocument 503 /maintenance.htmlProxyErrorOverride On
推荐增强:启用主动健康检查(proxy_hcheck)
Apache 2.4.47+ 支持 proxy_hcheck 模块,可周期性向后端发探针(如 HEAD /health),比被动错误触发更早发现问题:
- 启用模块:
LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so - 为成员添加检查:
BalancerMember http://10.0.1.10:8080/ lbset=0 hcheck=HTTP hcmethod=HEAD hcinterval=10 hcuri=/health -
hcinterval=10表示每 10 秒检查一次,失败三次即标记为 DOWN

















