4. 主机故障与网络隔离场景演练

HA 的价值不在于“配置成功”,而在于故障真正发生时,集群能否在可接受的时间内完成检测、隔离、重启与恢复。因此,生产集群上线前必须做故障演练。本节围绕三类最典型的场景展开:主机宕机、管理网络隔离、网络分区恢复,并给出可执行的验证方法与判读依据。

一、先明确演练的判定基准

演练前必须先定义“成功”的标准,否则只能看到现象,无法判断是否达标。建议至少固定以下参数(示例值,需按实际环境调整):

  • HA 接入控制:主机隔离响应设为“中等”,即隔离 3 次心跳(约 30 秒)后开始重启虚拟机;
  • 心跳间隔:默认 1 秒,数据存储心跳 15 秒;
  • 重启优先级:核心业务虚拟机设为“高”,其余为“中”;
  • 可接受中断:核心业务 RTO ≤ 5 分钟,普通业务 ≤ 10 分钟;
  • 准入控制:预留 25% 集群资源,确保故障后有容量承载重启。

这些参数决定了演练中“多久算正常、多久算异常”。例如隔离响应为“中等”时,若主机在 30 秒内未进入隔离状态,就说明心跳链路或代理通信存在问题。

二、场景一:模拟主机宕机

主机宕机是最直接的故障。演练时不要直接拔电源,而是用可控方式模拟:在待测主机上执行 esxcli system shutdown poweroff -d 0 -r 强制断电重启,或通过带外管理(iLO/iDRAC)执行硬关机。这样既能模拟真实宕机,又便于恢复。

操作前记录基线:该主机上运行的虚拟机清单、所在数据存储、HA 重启优先级、集群当前可用资源。宕机后按以下顺序观察:

  1. vCenter 中该主机状态由“已连接”变为“未响应”,约 15~30 秒内出现;
  2. 集群摘要页出现“HA 已检测到主机故障”事件;
  3. 受影响虚拟机在其他主机上进入“正在重新启动”状态;
  4. 虚拟机完成重启后,检查其 IP、服务端口、数据一致性。

判读要点:若虚拟机未重启,先检查准入控制是否因资源不足拒绝重启,再检查虚拟机是否被排除在 HA 之外、是否使用了不支持 HA 的存储(如仅本地存储)。若重启时间明显超过 RTO,需核对数据存储心跳是否正常、DNS 解析是否可达。

三、场景二:管理网络隔离

管理网络隔离比宕机更隐蔽:主机仍在运行,虚拟机也还在跑,但主机与集群其他成员失去管理通信。此时 HA 必须判断该主机是“真死”还是“假死”,避免误重启导致双写。

模拟方法:在待测主机的管理 vSwitch 上临时禁用上行链路,或使用防火墙规则阻断 443、902 及心跳端口。注意不要直接关闭管理网卡,否则可能触发其他告警干扰判断。

隔离发生后,主机进入“隔离”状态,HA 会依据隔离响应策略决定是否重启虚拟机。若配置为“中等”,主机在隔离约 30 秒后开始重启虚拟机;若为“保守”,则等待更长时间,优先避免误判。演练中应重点观察:

  • 主机是否在预期时间内进入隔离状态;
  • 隔离期间虚拟机是否仍在原主机运行(这是正常现象);
  • 其他主机是否开始接管并重启虚拟机;
  • 恢复管理网络后,原主机是否重新加入集群,且不产生重复虚拟机。
隔离演练最大的风险是“脑裂”:原主机仍在运行虚拟机,其他主机又重启了同一虚拟机。务必确认数据存储心跳正常、隔离响应策略与存储访问能力匹配,再执行演练。

四、场景三:分区恢复与 HA 响应验证

网络分区恢复后,原主机重新与集群通信,此时 HA 需要完成状态收敛:确认哪些虚拟机已在别处重启、哪些仍在原主机运行、是否需要清理重复实例。恢复顺序建议为:先恢复管理网络,再观察主机重新加入,最后核对虚拟机归属。

验证时逐项检查:主机是否回到“已连接”;集群是否出现“HA 已完成故障切换”事件;原主机上是否残留已重启虚拟机的旧实例;虚拟机清单是否与实际运行位置一致。若发现重复实例,应立即确认哪一份是有效数据,再清理无效实例,避免数据损坏。

HA 故障演练三场景:检测 → 隔离 → 重启 → 恢复 场景一:主机宕机 ESXi-01 强制断电 esxcli system shutdown poweroff vCenter 检测“未响应” 约 15~30 秒 HA 触发虚拟机重启 按重启优先级调度 虚拟机在其他主机恢复 核对 IP / 服务 / 数据 判读依据 RTO ≤ 5 分钟 准入控制未拒绝重启 场景二:管理网络隔离 阻断管理上行链路 443 / 902 / 心跳端口 主机进入“隔离”状态 虚拟机仍在原主机运行 按隔离响应策略决策 中等:约 30 秒后重启 其他主机接管并重启 确认无重复实例 判读依据 隔离时间符合策略 数据存储心跳正常 场景三:分区恢复 恢复管理网络 上行链路重新启用 主机重新加入集群 状态回到“已连接” HA 状态收敛 确认虚拟机归属 清理重复实例 保留有效数据副本 判读依据 无脑裂、无重复虚拟机 清单与实际运行一致

五、演练记录与结果判读

演练结束后应形成可追溯的记录,至少包含:故障注入时间、检测时间、隔离时间、重启开始时间、虚拟机恢复时间、异常现象与处理动作。下表为示例记录格式,实际使用时按环境填写。

场景 注入时间 检测耗时 隔离/重启耗时 恢复结果 是否达标
主机宕机 10:00:00 22 秒 重启 95 秒 虚拟机全部恢复 是
管理网络隔离 10:30:00 31 秒 隔离后 28 秒重启 无重复实例 是
分区恢复 11:00:00 — 主机 40 秒重新加入 清单一致 是

若某项未达标,应回到配置层排查:检测慢查心跳网络与 DNS;隔离慢查隔离响应策略与代理状态;重启失败查准入控制与资源预留;重复实例查数据存储心跳与隔离策略匹配度。演练不是一次性动作,建议每季度至少执行一次,并在集群扩容、网络改造、存储变更后追加验证。

演练前务必确认备份与快照可用,核心业务虚拟机建议先在测试集群验证,再在生产集群执行。所有故障注入操作都应记录操作人与时间,便于复盘。