Apache 不支持跨集群故障转移,但可通过 mod_proxy_balancer 的权重、状态标记与健康探测模拟切换:用 BalancerMember 分组并设不同权重/状态,结合 balancer-manager 动态调整、健康端点探测(ping/failonstatus)及渐进式回切,实现故障转移预演。
Apache 本身不提供跨集群(cross-cluster)级别的故障转移能力,它不具备跨物理集群或跨地域集群的自动调度、状态同步与决策能力。但你可以通过 组合 mod_proxy_balancer 的权重操控、状态标记与健康探测机制,在单个 Apache 负载均衡器前端,模拟跨集群的流量切换行为——这正是“故障转移预演”的核心:不是真实迁移集群,而是验证流量能否按预期从一个后端集群快速、安全地切到另一个集群。
将不同物理集群的节点归入同一 balancer 组,但用命名和权重做逻辑隔离:
BalancerMember http://bj-app1:8080 loadfactor=5 status=+H
BalancerMember http://sh-app1:8080 loadfactor=0 status=+D
ProxySet lbmethod=byrequests 确保请求级可切换,避免 stuck on dead cluster预演时,不是逐台关节点,而是批量模拟整个集群失效:
curl -X POST "http://lb/balancer-manager?b=myapp&w=http://bj-app1&dw=0"(对每个 bj- 节点重复)status=DH(强制下线 + 健康检查),让 Apache 不再发流量,但仍持续探测其恢复可能仅手动降权不够,要验证 Apache 是否能基于响应自动识别集群整体异常:
ping=10,HEAD,/health?cluster=bj,并设置 ping_timeout=3
failonstatus=503(集群网关返回维护态)、timeout=8、retry=20
演练结束不能直接全量切回,避免压垮刚恢复的集群:
maxattempts=2 和 nofailover=Off 确保单次请求最多试两个集群,防止雪崩proxy_balancer: worker http://bj-app1:8080 recovered 类提示,确认自动恢复逻辑生效