4. 主机故障与网络隔离场景演练
HA 的价值不在于“配置成功”,而在于故障真正发生时,集群能否在可接受的时间内完成检测、隔离、重启与恢复。因此,生产集群上线前必须做故障演练。本节围绕三类最典型的场景展开:主机宕机、管理网络隔离、网络分区恢复,并给出可执行的验证方法与判读依据。
一、先明确演练的判定基准
演练前必须先定义“成功”的标准,否则只能看到现象,无法判断是否达标。建议至少固定以下参数(示例值,需按实际环境调整):
- HA 接入控制:主机隔离响应设为“中等”,即隔离 3 次心跳(约 30 秒)后开始重启虚拟机;
- 心跳间隔:默认 1 秒,数据存储心跳 15 秒;
- 重启优先级:核心业务虚拟机设为“高”,其余为“中”;
- 可接受中断:核心业务 RTO ≤ 5 分钟,普通业务 ≤ 10 分钟;
- 准入控制:预留 25% 集群资源,确保故障后有容量承载重启。
这些参数决定了演练中“多久算正常、多久算异常”。例如隔离响应为“中等”时,若主机在 30 秒内未进入隔离状态,就说明心跳链路或代理通信存在问题。
二、场景一:模拟主机宕机
主机宕机是最直接的故障。演练时不要直接拔电源,而是用可控方式模拟:在待测主机上执行 esxcli system shutdown poweroff -d 0 -r 强制断电重启,或通过带外管理(iLO/iDRAC)执行硬关机。这样既能模拟真实宕机,又便于恢复。
操作前记录基线:该主机上运行的虚拟机清单、所在数据存储、HA 重启优先级、集群当前可用资源。宕机后按以下顺序观察:
- vCenter 中该主机状态由“已连接”变为“未响应”,约 15~30 秒内出现;
- 集群摘要页出现“HA 已检测到主机故障”事件;
- 受影响虚拟机在其他主机上进入“正在重新启动”状态;
- 虚拟机完成重启后,检查其 IP、服务端口、数据一致性。
判读要点:若虚拟机未重启,先检查准入控制是否因资源不足拒绝重启,再检查虚拟机是否被排除在 HA 之外、是否使用了不支持 HA 的存储(如仅本地存储)。若重启时间明显超过 RTO,需核对数据存储心跳是否正常、DNS 解析是否可达。
三、场景二:管理网络隔离
管理网络隔离比宕机更隐蔽:主机仍在运行,虚拟机也还在跑,但主机与集群其他成员失去管理通信。此时 HA 必须判断该主机是“真死”还是“假死”,避免误重启导致双写。
模拟方法:在待测主机的管理 vSwitch 上临时禁用上行链路,或使用防火墙规则阻断 443、902 及心跳端口。注意不要直接关闭管理网卡,否则可能触发其他告警干扰判断。
隔离发生后,主机进入“隔离”状态,HA 会依据隔离响应策略决定是否重启虚拟机。若配置为“中等”,主机在隔离约 30 秒后开始重启虚拟机;若为“保守”,则等待更长时间,优先避免误判。演练中应重点观察:
- 主机是否在预期时间内进入隔离状态;
- 隔离期间虚拟机是否仍在原主机运行(这是正常现象);
- 其他主机是否开始接管并重启虚拟机;
- 恢复管理网络后,原主机是否重新加入集群,且不产生重复虚拟机。
四、场景三:分区恢复与 HA 响应验证
网络分区恢复后,原主机重新与集群通信,此时 HA 需要完成状态收敛:确认哪些虚拟机已在别处重启、哪些仍在原主机运行、是否需要清理重复实例。恢复顺序建议为:先恢复管理网络,再观察主机重新加入,最后核对虚拟机归属。
验证时逐项检查:主机是否回到“已连接”;集群是否出现“HA 已完成故障切换”事件;原主机上是否残留已重启虚拟机的旧实例;虚拟机清单是否与实际运行位置一致。若发现重复实例,应立即确认哪一份是有效数据,再清理无效实例,避免数据损坏。
五、演练记录与结果判读
演练结束后应形成可追溯的记录,至少包含:故障注入时间、检测时间、隔离时间、重启开始时间、虚拟机恢复时间、异常现象与处理动作。下表为示例记录格式,实际使用时按环境填写。
| 场景 | 注入时间 | 检测耗时 | 隔离/重启耗时 | 恢复结果 | 是否达标 |
|---|---|---|---|---|---|
| 主机宕机 | 10:00:00 | 22 秒 | 重启 95 秒 | 虚拟机全部恢复 | 是 |
| 管理网络隔离 | 10:30:00 | 31 秒 | 隔离后 28 秒重启 | 无重复实例 | 是 |
| 分区恢复 | 11:00:00 | — | 主机 40 秒重新加入 | 清单一致 | 是 |
若某项未达标,应回到配置层排查:检测慢查心跳网络与 DNS;隔离慢查隔离响应策略与代理状态;重启失败查准入控制与资源预留;重复实例查数据存储心跳与隔离策略匹配度。演练不是一次性动作,建议每季度至少执行一次,并在集群扩容、网络改造、存储变更后追加验证。