apache不提供配置热备份功能,热备实际通过mod_proxy_balancer的status=+h实现:主节点正常接收流量,标记status=+h的备用节点仅在主节点失效时自动接管,需启用proxy、proxy_balancer、proxy_http模块并确保配置一致。

Apache 代理集群本身不提供“配置热备份”功能,它只负责请求转发与节点健康检测;所谓热备份,实际是指 将某台后端服务器设为备用节点,在主节点失效时自动接管流量。这通过 mod_proxy_balancer 的 status=+H 属性实现,无需额外工具或同步机制——配置文件本身是静态的,关键在于正确启用模块、定义均衡器,并标记热备节点。
启用必要模块
确保以下模块在 httpd.conf 或 mods-enabled/ 中已加载(取消注释):
mod_proxy.somod_proxy_balancer.so-
mod_proxy_http.so(若后端是 HTTP)或mod_proxy_ajp.so(若对接 Tomcat)
定义带热备的均衡器
在配置中声明一个 balancer:// 组,并用 status=+H 明确指定某成员为热备节点:
<proxy balancer:>
BalancerMember http://192.168.1.10:8080
BalancerMember http://192.168.1.11:8080 status=+H
</proxy>
说明:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 第一台(
192.168.1.10)正常接收全部流量 - 第二台(
192.168.1.11)默认不参与负载,仅当第一台不可达时才被激活 - Apache 默认每 60 秒探测一次失效节点是否恢复;如需加快,可加
retry=10(单位秒)
绑定代理规则与健康检查
将请求路由到该均衡组,并开启基础探活:
ProxyRequests Off ProxyPreserveHost On ProxyPass / balancer://myapp/ ProxyPassReverse / balancer://myapp/ <h1>可选:启用 balancer-manager 界面(便于人工验证状态)</h1><p><location> SetHandler balancer-manager Require local </location></p>
注意:
- Apache 不主动发起 HTTP 级别探活(如访问
/healthz),它依赖 TCP 连接是否建立成功来判断节点存活 - 若后端应用可能假死(进程在但无响应),建议在应用层暴露健康端点,并配合外部监控工具(如 Keepalived + curl 脚本)做更严格的故障判定
配置一致性与上线要点
热备机制依赖两台 Apache 实例使用完全相同的配置文件:
- 所有
ProxyPass、BalancerMember、ProxySet参数必须一致,否则流量行为不可预测 - 不要在一台上启用
lbmethod=bybusyness,另一台用默认,会导致调度逻辑错乱 - 建议用
rsync或配置管理工具(Ansible)统一推送配置,避免手工遗漏









