4. vSphere HA准入控制策略实战
准入控制(Admission Control)是 vSphere HA 中最容易被忽视、却直接决定“故障时能不能真正重启虚拟机”的机制。它的作用不是限制你开机,而是在你开机、迁移或维护时,提前判断集群是否还保留足够的资源余量来承受预设数量的主机故障。如果准入控制判定资源不足,虚拟机的开机或迁移会被直接拒绝,从而避免集群在故障发生后因资源不够而无法完成 HA 重启。
准入控制的核心问题是:集群需要为故障预留多少资源?vSphere HA 提供三种策略来回答这个问题——集群资源百分比(预留内存百分比)、插槽策略、专用故障切换主机。三者互斥,同一时刻只能启用一种。理解它们的计算逻辑,才能正确设置“可容忍的主机故障数”。
三种策略的计算逻辑
预留内存百分比(集群资源百分比)是最常用的策略。它按“预留 CPU 与内存的百分比”来保留资源。假设集群有 4 台主机,每台 128 GB 内存,总内存 512 GB,准入控制设置为“预留 25% 内存”,则集群保留 128 GB 不参与分配,剩余 384 GB 可供虚拟机使用。当主机故障时,HA 需要把故障主机上的虚拟机在剩余主机上重启,只要这些虚拟机的内存总和不超过预留量,重启就能成功。该策略的优点是粒度细、按实际资源计算;缺点是百分比设置需要结合主机数量推算,容易设得过大或过小。
插槽策略是较早期的算法。它把每台主机抽象为若干“插槽”,每个插槽能容纳一台虚拟机,插槽大小由集群中最大虚拟机的 CPU 与内存决定。例如集群中最大虚拟机为 4 vCPU / 16 GB,则每个插槽按 4 vCPU / 16 GB 计算。主机可提供的插槽数 = 主机资源 ÷ 插槽大小。HA 通过“当前使用插槽数 + 需要保留的插槽数”判断是否允许开机。插槽策略的优点是计算简单、结果保守;缺点是当虚拟机规格差异大时,会因按最大值计算而浪费大量资源,因此在新环境中通常不推荐。
专用故障切换主机是最直观的策略:指定一台或多台主机专门作为故障切换备用,不承载生产虚拟机(或只承载少量)。当其他主机故障时,HA 把虚拟机重启到这些专用主机上。它的优点是预留量明确、可预测;缺点是备用主机平时资源闲置,成本较高,适合对可用性要求极高、且资源预算充足的关键业务集群。
如何计算集群可容忍故障数
可容忍故障数(Number of Host Failures to Tolerate)是准入控制的核心输出。它的计算方式随策略不同而不同:
- 预留内存百分比:可容忍故障数 ≈ 预留资源总量 ÷ 单台主机资源量。例如预留 25%、4 台主机,预留量相当于 1 台主机的资源,因此可容忍 1 台主机故障。若预留 50%,则可容忍 2 台。
- 插槽策略:可容忍故障数 = 保留插槽数 ÷ 单主机插槽数。保留插槽数由“当前使用插槽 + 预留插槽”与总插槽的关系决定。
- 专用故障切换主机:可容忍故障数 = 专用备用主机数量。指定 1 台备用机即可容忍 1 台生产主机故障。
需要特别注意的是,可容忍故障数并不等于“随便拔掉几台主机都没事”。它成立的前提是:故障主机上的虚拟机内存总和不超过预留资源,且剩余主机有足够的 CPU 与内存承载这些虚拟机。如果虚拟机配置了较大的内存预留,实际可容忍故障数可能低于理论值。
配置与验证步骤
在 vSphere Client 中,进入集群 → 配置 → 可用性 → vSphere HA → 编辑 → 准入控制,即可选择策略并设置参数。配置完成后,必须通过以下方式验证:
- 查看集群摘要中的“当前故障切换容量”,确认可容忍故障数与预期一致。
- 尝试在集群资源接近预留边界时开机一台虚拟机,观察是否被准入控制拒绝,并查看任务与事件中的具体原因。
- 使用“模拟主机故障”或维护模式,观察 HA 是否能在预留资源内完成虚拟机重启。
- 检查“高级选项”中的
das.reserveMemoryPercentage等参数是否与界面设置一致。
# 查看集群 HA 准入控制配置(PowerCLI 示例)
Get-Cluster "Prod-Cluster" | Select-Object Name,
@{N="AdmissionControl";E={$_.HAAdmissionControlEnabled}},
@{N="Policy";E={$_.HAAdmissionControlPolicy}},
@{N="FailuresToTolerate";E={$_.HAFailuresToTolerate}}
# 查看集群当前故障切换容量
Get-Cluster "Prod-Cluster" | Get-View |
Select-Object -ExpandProperty ConfigurationEx |
Select-Object -ExpandProperty DasConfig
策略选择建议
三种策略没有绝对优劣,只有适用场景不同。资源规格统一、追求高资源利用率的集群,适合预留内存百分比;虚拟机规格差异大、且希望计算简单的旧环境,可继续使用插槽策略;对可用性要求极高、且愿意承担资源闲置成本的关键业务集群,适合专用故障切换主机。无论选择哪种策略,都应在变更后重新核对“当前故障切换容量”,确保它与你期望的可容忍故障数一致,而不是仅凭界面上的绿色对勾判断。
最后,准入控制不是一次配置就永久有效的。当集群扩容、主机下线、虚拟机规格调整或内存预留变化时,可容忍故障数都会随之改变。建议把“检查 HA 准入控制容量”纳入日常巡检,在每次重大变更后重新验证,避免故障真正发生时才发现预留不足。