使用插槽策略选项,vSphere HA 准入控制允许指定数目的主机出现故障,同时可以确保集群内留有足够的资源来对这些主机上的所有虚拟机进行故障切换。

使用插槽策略时,vSphere HA 通过以下方式执行准入控制:

  1. 计算插槽大小。

    插槽是内存和 CPU 资源的逻辑表示。默认情况下,会调整插槽的大小来满足集群中任何已打开电源虚拟机的要求。

  2. 确定集群内每台主机可以拥有的插槽数目。
  3. 确定集群的当前故障切换容量。

    这是可以发生故障并仍然有足够插槽满足所有已打开电源虚拟机的主机的数目。

  4. 确定“当前故障切换容量”是否小于“配置的故障切换容量”(由用户提供)。

    如果是,则准入控制不允许执行此操作。

注: 您可以从 vSphere Client 中 vSphere HA 设置的准入控制部分设置 CPU 和内存的特定插槽大小。

插槽大小计算

插槽大小由两个组件(CPU 和内存)组成。

  • vSphere HA 计算 CPU 组件的方法是先获取每台已打开电源虚拟机的 CPU 预留,然后再选择最大值。如果没有为虚拟机指定 CPU 预留,则系统会为其分配一个默认值 32 MHz。可以使用 das.vmcpuminmhz 高级选项更改此值。
  • vSphere HA 计算内存组件的方法是先获取每台已打开电源虚拟机的内存预留和内存开销,然后再选择最大值。内存预留没有默认值。

如果集群内虚拟机的预留值大小不一致,则会影响插槽大小的计算。为避免出现这种情况,可以使用 das.slotcpuinmhz das.slotmeminmb 高级选项分别指定插槽大小的 CPU 或内存组件的上限。请参见vSphere HA 高级选项

您也可以通过查看需要多个插槽的虚拟机数来确定集群中资源碎片的风险。可以从 vSphere Client 中 vSphere HA 设置的准入控制部分对此进行计算。如果已使用高级选项指定了固定插槽大小或最大插槽大小,则虚拟机可能需要多个插槽。

使用插槽数目计算当前故障切换容量

计算出插槽大小后,vSphere HA 会确定每台主机中可用于虚拟机的 CPU 和内存资源。这些值包含在主机的根资源池中,而不是主机的总物理资源中。可以在 vSphere Client 中主机的摘要选项卡上查找 vSphere HA 所用主机的资源数据。如果集群中的所有主机均相同,则可以用集群级别指数除以主机的数量来获取此数据。不包括用于虚拟化目的的资源。只有处于连接状态、未进入维护模式且没有任何 vSphere HA 错误的主机才列入计算范畴。

然后,即可确定每台主机可以支持的最大插槽数目。为确定此数目,请用主机的 CPU 资源数除以插槽大小的 CPU 组件,然后将结果化整。对主机的内存资源数进行同样的计算。然后,比较这两个数字,较小的那个数字即为主机可以支持的插槽数。

通过确定可以发生故障并仍然有足够插槽满足所有已打开电源虚拟机要求的主机的数目(从最大值开始)来计算当前故障切换容量。

使用插槽策略的准入控制

示例中展示了使用此准入控制策略计算和使用插槽大小的方式。对集群进行如下假设:

  • 集群包括三台主机,每台主机上可用的 CPU 和内存资源数各不相同。第一台主机 (H1) 的可用 CPU 资源和可用内存分别为 9 GHz 和 9 GB,第二台主机 (H2) 为 9 GHz 和 6 GB,而第三台主机 (H3) 则为 6 GHz 和 6 GB。
  • 集群内存在五个已打开电源的虚拟机,其 CPU 和内存要求各不相同。VM1 所需的 CPU 资源和内存分别为 2 GHz 和 1 GB,VM2 为 2 GHz 和 1 GB,VM3 为 1 GHz 和 2 GB,VM4 为 1 GHz 和 1 GB,VM5 则为 1 GHz 和 1 GB。
  • “集群允许的主机故障数目”设置为 1。
图 1. 使用“集群允许的主机故障数目”策略的准入控制示例
此处是使用“集群允许的主机故障数目”策略的准入控制示例。
  1. 比较虚拟机的 CPU 和内存要求,然后选择最大值,从而计算出插槽大小。

    最大 CPU 要求(由 VM1 和 VM2 共享)为 2 GHz,而最大内存要求(针对 VM3)为 2 GB。根据上述情况,插槽大小为 2 GHz CPU 和 2 GB 内存。

  2. 由此可确定每台主机可以支持的最大插槽数目。

    H1 可以支持四个插槽。H2 可以支持三个插槽(取 9GHz/2GHz 和 6GB/2GB 中较小的一个),H3 也可以支持三个插槽。

  3. 计算出当前故障切换容量。

    最大的主机是 H1,如果它发生故障,集群内还有六个插槽,足够供所有五个已打开电源的虚拟机使用。如果 H1 和 H2 都发生故障,集群内将仅剩下三个插槽,这是不够用的。因此,当前故障切换容量为 1。

集群内可用插槽的数目为 1(H2 和 H3 上的六个插槽减去五个已使用的插槽)。