apache高可用应急预案演练核心是用真实故障验证容灾能力,重点检验主进程崩溃、主服务器宕机、网络分区、后端服务失效四类场景下vip漂移延迟≤3秒、rto达标、零数据丢失及错误页一致性。

Apache 高可用架构的应急预案演练,核心是用真实故障验证容灾能力,不是检查配置是否“看起来在线”,而是看系统在突发中断时能否自动响应、快速恢复、不丢数据、不断服务。
重点不在“有没有高可用”,而在“故障发生时它真的能扛住吗”。
明确要演练的典型故障场景
Apache 本身无原生集群能力,通常依赖外围组件(如 Keepalived + VIP、HAProxy、或与 Tomcat/Nginx 协同)构建高可用。演练必须紧扣实际部署结构,聚焦以下四类高频、影响大的故障:
-
主 Apache 进程崩溃:执行
kill -9 $(pgrep -f "httpd|apache2")或直接systemctl stop apache2,验证 Keepalived 是否在 3 秒内触发 VIP 漂移 - 主服务器宕机:物理断电 / 虚拟机强制关机,观察备节点是否自动绑定 VIP 并响应 HTTP 请求(建议用 curl 直连 VIP 测试)
-
网络分区(脑裂):在主节点上临时阻断 VRRP 通信(如
iptables -A INPUT -p vrrp -j DROP),检查备节点日志是否进入FAULT状态,且不错误抢占 VIP -
后端服务批量失效:停掉所有上游应用(如 Tomcat 集群),验证 Apache 的
ProxyPass+ProxySet中配置的retry=5、timeout=3及failonstatus=500,503是否生效,错误页是否返回预设的ErrorDocument 503 /maintenance.html
演练前必须做好的四项准备
没准备的演练等于盲测,结果不可信:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
配置严格同步:主备节点的
/etc/apache2/apache2.conf、/etc/apache2/sites-enabled/*、/etc/keepalived/keepalived.conf必须md5sum一致;特别注意virtual_router_id、auth_pass、priority、upstream地址及健康检查路径 -
健康检查脚本就绪且可靠:例如
/etc/keepalived/check_apache.sh应包含超时控制和状态码判断:#!/bin/bash timeout 2 curl -s --max-time 2 -o /dev/null -w "%{http_code}" http://127.0.0.1/health | grep -q "200"并在
keepalived.conf中正确引用:vrrp_script chk_httpd { script "/etc/keepalived/check_apache.sh" interval 2 } -
可观测性通道打通:
- 实时查看 Keepalived 状态:
journalctl -u keepalived -f - 查看 Apache 错误日志:
tail -f /var/log/apache2/error.log - 确认 VIP 绑定:
ip addr show | grep "inet.*192.168"
- 实时查看 Keepalived 状态:
-
验证工具提前运行:一个持续探测脚本,直连 VIP,记录 HTTP 状态码和耗时:
while true; do curl -s -w "HTTP %{http_code}, TIME %{time_total}s\n" -o /dev/null http://192.168.1.100/ --connect-timeout 1.5 sleep 0.3 done
演练中必须量化的关键指标
不能只问“切过去了没”,要拿数字说话:
-
VIP 漂移延迟:从主节点失联(如进程终止)到备节点
ip addr显示 VIP 的时间,目标 ≤ 3 秒(由advert_int 1+fail_count 3决定) -
服务恢复时间(RTO):从故障发生到客户端收到首个
200 OK的时间,需绕过 DNS 缓存,直连 VIP 测试 -
连接中断数:上述探测脚本中连续出现
000或超时的次数,反映用户感知的中断窗口 -
错误页一致性:上游全挂时,是否返回预设的
503 Service Unavailable页面,而非默认 Apache 错误页或空白
演练后必须闭环的动作
一次有效演练 = 故障注入 + 行为观测 + 问题定位 + 改进落地:
- 对照日志回溯全过程:Keepalived 状态切换序列、Apache error.log 中的 proxy 错误、curl 探测断点时间戳
- 记录暴露的问题:比如健康检查脚本未加
timeout导致假阳性、ProxySet retry值过大导致重试拖长 RTO、ErrorDocument路径未启用AllowOverride导致 403 - 更新预案文档:把本次演练步骤、预期现象、实测数据、修复项写入标准化 SOP
- 自动化沉淀:将验证脚本、检查清单、告警阈值集成进 CI/CD 或运维平台,下次演练一键触发
不复杂但容易忽略。










