宿主机失联不等于其上的虚拟实例已经停止。若网络分区导致管理端无法访问,但机器仍在运行,贸然在另一台宿主机启动同一实例,可能造成重复运行或数据写入冲突。虚拟设备集群宿主机故障隔离与实例疏散策略应先确认故障边界,再决定隔离、迁移或等待恢复。
下面六项方法适用于采用 KVM/libvirt、VMware vSphere 或 OpenStack Nova 等技术的集群。不同平台的界面、命令和自动化能力并不相同,执行前应对照本地版本和运维流程。
1. 先判断是宿主机故障还是管理链路故障
从监控、管理面与带外管理交叉核验:检查心跳、宿主机电源和硬件告警,确认管理网络是否中断,并观察存储与业务网络是否仍可达。只丢失管理连接时,不宜直接认定实例已停机。
- 记录告警开始时间、受影响宿主机及其承载的实例。
- 通过独立的带外管理通道(如支持 Redfish 或 IPMI 的管理接口)查看电源状态;再核对交换机端口、存储连接和集群心跳。
- 判断是单机故障、网络分区、存储异常,还是机架或电源等共同故障,并保留监控与事件记录。
2. 隔离故障宿主机,阻止新实例进入
确认宿主机异常或状态不可信后,先从调度池中禁用该节点,避免继续分配新实例;同时按平台能力隔离其管理与业务流量。隔离范围要有边界:仅管理面失效时,不应未经评估就切断仍承载健康实例的业务网络。
如果宿主机可能仍在运行,启动疏散前还要确认其不会继续访问共享存储或向外提供服务。需要强制停止时,应使用经过验证的电源隔离或 fencing 流程,并记录执行人与确认结果。虚拟设备集群宿主机故障隔离与实例疏散策略的核心之一,是避免故障节点和恢复节点同时运行同一实例。
3. 盘点实例状态与依赖关系
按实例整理运行状态、业务优先级、数据位置、网络配置和恢复要求。重点区分本地盘与共享存储:若实例磁盘仅在故障宿主机本地,迁移可能需要先恢复该宿主机或从备份重建;共享存储也不能消除存储本身故障带来的风险。
- 标记关键服务、可中断任务和有状态工作负载。
- 核对目标宿主机能否访问所需数据存储、网络和设备资源。
- 找出绑定本地设备、特定硬件或固定网络配置的实例,单独评估替代方案。
4. 按条件选择实时迁移、冷迁移或恢复
宿主机仍健康、仅需维护时
实时迁移可在实例持续运行时转移其执行位置,但要求源与目标主机兼容,且网络和存储条件满足平台要求。高内存写入负载或链路带宽不足可能延长迁移时间,迁移前应先做小批量验证。
宿主机已失效或状态不可信时
实时迁移通常不适用。完成故障节点隔离后,可根据平台能力在目标节点执行冷迁移、实例重建或从备份恢复。选择时比较数据可用性、允许停机时间和恢复点要求;没有可访问的实例磁盘或有效备份时,不应把“重启实例”视为数据恢复方案。
5. 检查目标容量,分批疏散
疏散前同时核算内存、处理器资源、存储吞吐、网络带宽和授权或设备限制。不要只看集群总容量:单台目标主机还必须满足实例的资源与亲和性约束。规划时可将额外预留约 15%–30% 资源作为初步估算区间;实际比例需依据峰值负载、故障范围和服务等级要求调整,不能当作通用保证。
- 先选择低优先级、依赖较少的实例做试迁移或恢复。
- 检查目标节点的资源余量与业务指标,再逐批处理高优先级实例。
- 每批完成后确认实例状态、网络连通和存储读写,再开始下一批;若资源告警持续上升,暂停并重新排程。
6. 验证业务并有序恢复宿主机
实例显示“运行”不代表业务已经恢复。按应用检查服务端口、依赖服务、数据一致性和关键操作;对有状态实例核对应用日志或数据库恢复状态。确认故障原因已修复后,再检查宿主机硬件、存储路径、网络和管理代理,先让其以维护状态接受验证,最后才重新加入调度。
完整的虚拟设备集群宿主机故障隔离与实例疏散策略,还应记录故障判定依据、隔离时间、实例去向、未恢复项和复盘行动。这样才能把一次应急处置转成可重复演练的流程。
常见问题
宿主机失联后可以立即在另一台机器启动实例吗?
先确认原宿主机已停止运行或已被可靠 fencing。无法排除原实例仍在写入时,直接启动可能产生重复实例和数据冲突。
实时迁移一定不会中断业务吗?
不能保证。它依赖平台兼容性、网络、存储和负载条件;迁移过程仍可能出现短暂性能变化,应先验证并安排监控。
没有共享存储还能疏散吗?
可以评估本地盘复制、冷迁移或备份恢复,但路径取决于平台和数据状态。若本地盘随故障宿主机不可访问,通常需要先恢复数据或使用备份。
什么时候可以把故障宿主机重新加入集群?
确认硬件与系统故障已排除,管理、存储和业务网络通过检查,且实例没有重复运行后,再按维护流程恢复调度。