apache可通过lbset参数实现主备灾三级容灾调度:lbset=0为主集群,全失效后降级至lbset=1备集群,再失效才启用lbset=2灾备集群,需配合ping、status=+h和retry等健康检查机制确保自动切换与恢复。
apache 服务器本身不内置“故障转移集群”功能,但可通过 mod_proxy_balancer 模块结合 lbset 参数实现多层级容灾调度,这是最轻量、稳定且无需额外组件的方案。
用 lbset 实现主备灾三级优先级切换
lbset 是 BalancerMember 的关键参数,数值越小优先级越高。Apache 会严格按 lbset 分组顺序启用后端:只有当前组所有节点全部失效,才降级到下一个 lbset 组。
- lbset=0:主集群(如 2 台健康节点),承载全部流量
- lbset=1:备用集群(如另 2 台节点),仅当 lbset=0 全挂时启用
- lbset=2:灾备集群(如异地或低配节点),仅当前两级全不可用时才接管
配置示例:
<proxy balancer:><br> BalancerMember http://192.168.1.10:8080 lbset=0<br> BalancerMember http://192.168.1.11:8080 lbset=0<br> BalancerMember http://192.168.2.10:8080 lbset=1<br> BalancerMember http://192.168.2.11:8080 lbset=1<br> BalancerMember http://10.0.0.100:8080 lbset=2<br></proxy>
配合健康检查提升自动恢复能力
仅靠 lbset 不够——必须启用主动健康探测,否则失效节点不会被及时剔除。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在
BalancerMember中添加ping=5(每 5 秒发 HEAD 请求检测) - 使用
status=+h标记为“热备”,避免冷启动延迟 - 设置
retry=60表示节点失败后 60 秒内不重试,防止雪崩
例如:BalancerMember http://192.168.1.10:8080 lbset=0 ping=5 retry=60 status=+h
搭配 Pacemaker 实现服务级故障转移
若需保障 Apache 进程本身高可用(比如整个 httpd 崩溃、磁盘满、系统卡死),应结合 Pacemaker 构建双机热备。
- 将 Apache 服务注册为 Pacemaker 资源,并绑定浮动 IP
- 配置资源约束:确保 Apache 和 VIP 始终运行在同一节点
- 定义监控操作(如每 10 秒执行
curl -f http://localhost/health) - 失败时 Pacemaker 自动迁移资源到另一节点,用户无感知
注意负载均衡器与后端的真实健康状态
lbset 故障转移只判断连接是否建立,不校验后端应用是否真正可用。建议:
- 后端应用提供
/health接口,返回 HTTP 200 + JSON {“status”:“UP”} - Apache 配置中用
ProxyPass /health !排除健康检查路径,避免循环 - 在
ProxyPass后加retry=0禁用默认重试,由 lbset 控制降级逻辑










