Apache故障转移演练需通过可触发、可观测、可验证的闭环动作检验真实容灾能力,重点验证VIP漂移时效性(≤10秒)、服务自愈完整性(进程自动拉起+连接不中断)、健康检查联动性(3次失败后精准剔除异常节点),并覆盖四类典型故障,固化脚本检查与量化RTO/RPO/误切率等指标。
apache 故障转移的演练不是配完 keepalived 就算完成,而是要通过可触发、可观测、可验证的闭环动作,真实检验生产环境在节点宕机、配置错误、网络异常等场景下的自动接管能力。核心是“用故障说话”,而非依赖理论配置。
明确要验证的三个关键行为
每次演练前必须锁定具体目标,避免泛泛而谈“看看能不能切”。重点关注以下三项是否按预期发生:
-
VIP 漂移时效性:主节点停掉 keepalived 后,虚拟 IP 必须在 10 秒内绑定到备节点(可通过
ip addr show或curl -I http://VIP实时确认) -
服务自愈完整性:Apache 进程崩溃后是否自动拉起,且不中断已有连接(尤其启用
mod_proxy_balancer时需验证 sticky session 是否持续有效) - 健康检查联动性:当后端应用(如 Tomcat)不可达时,负载均衡器是否在 3 次连续失败后准确剔除该节点,且不误删健康实例
模拟四类典型故障并记录响应链路
只测“正常重启”没意义。必须覆盖真实生产中高频出问题的场景,并全程留痕:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
主节点系统级宕机:执行
systemctl stop keepalived && kill -9 $(pgrep httpd),观察 VIP 切换与 Apache 自启日志 -
配置错误导致启动失败:在
httpd.conf中插入语法错误,再执行systemctl start httpd,确认是否触发告警或自动回滚 -
网络分区:在主节点上运行
iptables -A OUTPUT -d [备节点IP] -p vrrp -j DROP,验证 VRRP 状态是否降级为 BACKUP -
后端服务不可达:关闭下游 Tomcat,或用 Nginx 返回 503,检查 Apache 的
ProxyPass是否跳过该节点并记录 error_log
用脚本固化检查项,实现一键状态确认
人工翻日志效率低、易遗漏。建议将以下检查封装为 check_status.sh,每次演练前后运行一次:
- 读取
/var/log/keepalived.log最近 5 行,提取Entering MASTER STATE或Transition to BACKUP - 执行
ss -tlnp | grep :80,确认监听进程归属哪个节点 - 调用
curl -s -o /dev/null -w "%{http_code}\n" http://VIP/health,验证返回码是否为 200 - 解析
tail -20 /var/log/httpd/error_log,确认无Connection refused或proxy: error类报错
评估容灾恢复能力的关键指标
演练结束不能只写“切换成功”,要量化输出以下数据:
- RTO(恢复时间目标):从触发故障到 VIP 可访问、HTTP 响应正常的时间差(建议 ≤12 秒)
- RPO(恢复点目标):若涉及 Apache 日志落盘或会话持久化,确认是否有请求丢失(例如用 ab 工具压测期间 5xx 数量)
-
误切率:在非故障状态下(如网络抖动),是否出现 VIP 频繁漂移(需检查 VRRP
advert_int和failover阈值是否合理) - 可观测覆盖度:日志中是否带 trace_id、是否所有关键组件(Keepalived、httpd、后端探活脚本)都有独立时间戳和状态标记

















