获取验证码
集群开启vSphere HA高可用之后,主机故障触发HA虚拟机重启,经常出现大量VM迟迟无法启动,业务恢复时间远超预期。很多运维以为硬件性能不足,实际大多来自HA重启优先级、资源竞争、并发启动上限、插槽策略配置不合理。本文讲解HA故障场景下VM启动慢的底层逻辑,从配置调优、资源规划、风险权衡多角度给出可落地的优化方案。
有VMware全系列产品官方资源和定制版资源需求的可以移步:
1、单台ESXi主机故障离线,HA触发虚拟机重启保护。
2、部分虚拟机快速启动完成,大批虚拟机排队等待,启动耗时拉长,业务恢复缓慢。
3、vCenter任务栏可以看到大量“正在等待HA资源”提示。
4、集群CPU、内存整体资源充足,但故障后虚拟机依旧无法并行拉起,出现明显的启动排队延迟。
vSphere HA并不是所有虚拟机同时并发启动。当主机故障,HA会根据重启优先级分组启动虚拟机,同一优先级内虚拟机还要受最大并发启动数量限制。
如果大量虚拟机设置为同一高优先级,故障发生时会瞬间抢占目标主机CPU、内存、存储IO,形成资源竞争。目标主机负载打满,后续VM只能排队等待资源释放,直接放大整体启动延迟。
另外集群故障冗余资源预留不足、插槽大小计算过大、存储访问性能差,都会加剧HA场景虚拟机启动卡顿。集群总资源够用不等于故障后可用资源充足。
HA一共分为4档重启优先级:最高、高、中、低。故障发生时严格按照优先级顺序启动,先启动高优先级,全部完成之后再启动下一档。
核心原则:不要把全部业务虚拟机统一设置为“最高”优先级。最高优先级尽量留给核心业务,数量控制在少量关键业务,非核心业务调低优先级。
操作路径:选中虚拟机 → 编辑设置 → 可用性 → HA重启优先级。
生产建议:核心数据库、中间件设置为最高/高;普通业务系统设置中;测试、备份、日志类虚拟机调整为低优先级。故障发生后核心业务优先抢占资源快速恢复,非核心业务延后启动,避免全部虚拟机争抢资源互相阻塞。
很多运维不知道HA存在并发启动限制,如果并发值设置过大,大量虚拟机同时上电,存储IO、内存瞬间冲击,反而整体启动更慢。
#可以通过高级参数调整每台主机HA最大并发启动虚拟机数量 das.maxvmrestartcount
该参数代表单台ESXi主机上HA一次可以同时启动的虚拟机数量。默认值根据ESXi版本有所区别,不建议设置过大。如果虚拟机磁盘较大,并发过高会导致存储IO拥塞,反而增加整体延迟。需要结合存储性能权衡,SAN存储性能强可以适当调高,普通VSAN建议保守配置。
开启HA之后集群必须预留故障切换资源。如果HA故障容忍数设置1,但实际资源余量不足,故障发生后没有足够内存CPU供虚拟机重启,大量VM处于等待资源状态,出现长时间延迟。
进入集群HA设置,检查故障切换策略:
1、使用故障主机数量模式,确认集群资源足够承受1台或者2台主机故障后的资源开销。
2、插槽策略不要出现插槽尺寸过大,导致集群可用插槽数量不足。可以手动调整插槽大小,避免单个虚拟机内存CPU把插槽撑得很大。
集群平时资源充足,不代表故障发生之后资源够用。当一台主机宕机,这台主机上面全部虚拟机需要分散到剩余节点,剩余节点瞬间承压,资源余量被耗尽,就会出现排队启动。
HA只负责把虚拟机开机拉起,不负责开机之后负载均衡。开启DRS可以在HA启动完成之后,自动把虚拟机分散调度到集群各台主机,缓解单台主机压力。
建议集群HA与DRS同时开启。注意:DRS迁移不能加速HA开机过程,只能在虚拟机启动完成之后做负载均衡。不要指望DRS解决HA启动排队问题。
存储性能瓶颈:故障后多台虚拟机同时读磁盘,存储IOPS打满,虚拟机操作系统初始化缓慢,表现为启动延迟高。需要排查vSAN或者外部存储性能。
虚拟机内存预留:大量虚拟机不设置内存预留,HA启动时主机需要分配大量交换空间,分配变慢,也会拉长启动耗时。核心业务虚拟机建议配置合理的内存预留。
| 错误配置场景 | 现象 | 优化操作 |
|---|---|---|
| 全部虚拟机设置为最高重启优先级 | 故障后大量VM抢资源,集体启动慢 | 拆分4档优先级,最高仅留给少量核心业务 |
| HA并发启动参数das.maxvmrestartcount设置极大 | 存储IO风暴,虚拟机开机卡顿 | 调低并发数量,避免瞬间大量虚拟机同时上电 |
| HA故障容忍1台主机,集群几乎无资源余量 | 主机故障,VM提示等待资源,迟迟无法启动 | 扩容集群,或降低单台主机虚拟机密度,保留冗余资源 |
| 插槽自动计算过大,可用插槽不足 | 明明资源充足,HA判定无法重启虚拟机 | 手动调整HA插槽大小,重新评估故障切换资源 |
1、把所有虚拟机设置最高优先级不等于恢复更快。同一优先级内会竞争资源,反而造成集体卡顿。
2、不要盲目调大das.maxvmrestartcount并发数。并发越高,存储压力越大,极易产生IO风暴,业务反而恢复更慢。
3、集群日常负载低,不等于HA故障时资源够用。故障场景是一台主机全部虚拟机向剩余节点迁移,压力会瞬间上升。
4、DRS不能加速HA开机,DRS只能在虚拟机启动完成之后再做迁移均衡,无法解决HA启动排队延迟。
5、配置完成之后建议执行HA模拟故障演练,真实测试故障下业务恢复耗时,不要只依靠理论配置。
Q:我希望故障发生之后所有虚拟机尽量同时启动,怎么做?
A:HA本身就是分组串行启动模型,无法做到全部虚拟机完全同时上电。只能拆分优先级,减少核心业务等待时间,非核心业务延后。同时保证集群预留足够故障资源。
Q:HA已经优化配置,故障后虚拟机启动依旧很慢?
A:优先排查存储性能,多虚拟机同时开机产生大量磁盘读IO,如果存储IOPS瓶颈,无论HA参数如何调优,启动都会延迟。
Q:修改das.maxvmrestartcount高级参数有风险吗?
A:高级参数修改需要谨慎,错误数值会影响HA行为,修改完成建议做故障模拟验证,生产集群不要随意照搬网上参数。
总结:HA故障后虚拟机启动延迟高,优先梳理虚拟机重启优先级,不要大批量虚拟机挤在同一个优先级;其次保障集群具备充足故障切换冗余资源,合理控制HA最大并发启动数量,防止资源争抢与存储IO风暴。配合定期HA故障演练,验证真实业务恢复时间,避免配置看上去没问题,故障发生才发现业务恢复时间不达标。