apache本身不直接支持跨机房容灾自动切换,需分层设计:机房内用mod_proxy_balancer实现健康检查与权重分发,机房间依赖dns、anycast或云gslb完成流量调度与故障切换。

Apache 本身不直接支持跨机房容灾的自动故障切换,它更适合作为单机房内的负载均衡器。要实现多机房容灾,需将 Apache 纳入更高层的容灾架构中——即 Apache 负责机房内流量分发,而机房间的流量调度与故障隔离由前置系统完成。
核心思路:分层容灾设计
把容灾能力拆成两层:
- 机房内层:用 Apache + mod_proxy_balancer 做健康检查、权重分发、后端摘除,保障本机房服务可用
- 机房间层:由 DNS 调度、Anycast BGP 或云厂商全局负载均衡(如阿里云 GSLB、AWS Global Accelerator)接管,实现“主备机房”或“双活机房”的流量切换
Apache 配置要点(机房内高可用)
在每个机房部署一套独立的 Apache 负载均衡集群(至少 2 台),配置需满足容灾基础要求:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 启用健康探测:
hcmethod=GET hcuri="/health" failonstatus=503,确保后端失联时 60 秒内自动剔除 - 设置合理超时:
timeout=5 retry=60,避免请求卡死或过早重试 - 所有节点共享统一证书与配置,用 Ansible 或 GitOps 同步,防止配置漂移
- 禁用
ProxyRequests On,只启用反向代理模式,杜绝开放代理风险
多机房流量调度方案选型
根据基础设施能力选择合适方式:
- DNS 轮询 + TTL 缩短:简单但收敛慢(通常需 1–5 分钟),适合低敏感业务;建议 TTL ≤ 60 秒,并配合主动探针触发 DNS 切换脚本
- 云厂商 GSLB:推荐生产使用,支持基于延迟、健康状态、地理位置的智能调度,故障切换可在 10 秒内完成
- Anycast + BGP 宣告:适用于自建 IDC,需运营商支持;通过不同机房宣告相同 IP 实现就近接入,天然具备故障自动绕行能力
关键验证项(上线前必做)
仅配好不等于能容灾,必须实测以下场景:
- 手动关闭一个机房全部后端,确认 Apache 本机房内返回 503 并快速摘除,不转发
- 模拟某机房网络中断,验证 GSLB/DNS 是否在 SLA 时间内将流量切至另一机房
- 检查会话粘性是否被跨机房破坏(如用了
stickysession=JSESSIONID,需配合共享 Session 存储) - 验证 HTTPS 证书在两个机房均有效且时间同步,避免 TLS 握手失败










