如果主机发生故障而必须重新启动虚拟机,您可使用虚拟机重新启动优先级”设置控制重新启动虚拟机的顺序。您也可使用主机隔离响应设置,配置主机与其他主机失去管理网络连接时 vSphere HA 的响应方式。发生故障后,vSphere HA 重新启动虚拟机时还将考虑其他因素。

以下设置适用于主机发生故障或主机隔离时群集内的所有虚拟机。此外,也可以为特定虚拟机配置异常。请参见自定义单个虚拟机

虚拟机重新启动优先级

虚拟机重新启动优先级确定主机发生故障后为虚拟机分配资源的相对顺序。系统会将这些虚拟机分配到具有未预留容量的主机,首先放置优先级最高的虚拟机,然后是那些低优先级的虚拟机,直到放置了所有虚拟机或者没有更多的可用群集容量可满足虚拟机的预留或内存开销为止。然后,主机将按优先级顺序重新启动分配给它的虚拟机。如果没有足够的资源,vSphere HA 将等待,直到更多的未预留容量变得可用(例如,由于主机重新联机),然后重试放置这些虚拟机。要降低此状况发生的可能性,请配置 vSphere HA 接入控制以便针对故障预留更多的资源。接入控制允许您控制为虚拟机预留的群集容量,如果发生故障,这些容量无法用于满足其他虚拟机的预留和内存开销。

此设置的值为:已禁用、低、中(默认)和高。vSphere HA 的虚拟机/应用程序监控功能会忽略“已禁用”设置,因为该功能可保护虚拟机免受操作系统级别故障而不是虚拟机故障。当出现操作系统级别故障时,vSphere HA 将重新引导操作系统,而虚拟机将在同一台主机上继续运行。您可更改各个虚拟机的这种设置。

注:

虚拟机重置会导致客户机操作系统硬重新引导,但是不会重新启动虚拟机。

虚拟机的重新启动优先级设置因用户需求而有所不同。请为提供最重要服务的虚拟机分配较高的重新启动优先级。

例如,在多层应用程序中,可以根据虚拟机上所托管的功能来对分配进行排序。

  • 高。为应用程序提供数据的数据库服务器。

  • 中等。使用数据库中的数据并在网页上提供结果的应用程序服务器。

  • 低。接收用户请求、将查询传递到应用程序服务器并将结果返回给用户的 Web 服务器。

如果主机发生故障,vSphere HA 将尝试向活动主机注册已打开电源且重新启动优先级设置为“已禁用”或已关闭电源的受影响虚拟机。

主机隔离响应

主机隔离响应确定当 vSphere HA 群集内的某个主机失去其管理网络连接但仍继续运行时出现的情况。您可使用隔离响应使 vSphere HA 关闭独立主机上运行的虚拟机电源,然后在非独立主机上将其重新启动。主机隔离响应要求启用“主机监控状态”。如果“主机监控状态”处于禁用状态,则主机隔离响应将同样被挂起。当主机无法与其他主机上运行的代理通信且无法 ping 其隔离地址时,该主机确定其已被隔离。然后,主机会执行其隔离响应。响应为“关闭虚拟机电源再重新启动虚拟机”或“关闭再重新启动虚拟机”。还可以为各个虚拟机自定义此属性。

注:

如果虚拟机的重新启动优先级设置为“已禁用”,则不会做出任何主机隔离响应。

要使用“关闭再重新启动虚拟机”设置,必须在虚拟机的客户机操作系统中安装 VMware Tools。将虚拟机关机的优点在于可以保留其状况。关机操作优于关闭虚拟机电源操作,关闭虚拟机不会将最近的更改刷新到磁盘中,也不会提交事务。在关机完成时,正在关机的虚拟机需要更长时间进行故障切换。未在 300 秒内或在高级选项 das.isolationshutdowntimeout 中指定的时间内关机的虚拟机将被关闭电源。

创建 vSphere HA 群集后,可以替代特定虚拟机的“重新启动优先级”和“隔离响应”的默认群集设置。此替代操作对于用于特殊任务的虚拟机很有帮助。例如,可能需要先打开提供基础架构服务(如 DNS 或 DHCP)的虚拟机电源,再打开群集内的其他虚拟机电源。

如果主机已从主主机隔离或分区,或主主机无法使用检测信号数据存储与该主机通信,则可能会发生虚拟机“裂脑”情况。在这种情况下,主主机无法确定该主机处于活动状态,因此声明其已停止运行。然后,主主机尝试重新启动已隔离或已分区主机上正在运行的虚拟机。如果虚拟机仍在已隔离/已分区主机上运行,且该主机在隔离或分区时失去对虚拟机数据存储的访问权限,则此尝试将成功。然后,便会发生裂脑情况,因为存在两个虚拟机实例。但是,只有一个实例能够读取或写入虚拟机的虚拟磁盘。虚拟机组件保护可用于防止发生此裂脑情况。使用激进设置启用 VMCP 时,它会监控已打开电源的虚拟机的数据存储可访问性,并关闭失去对其数据存储访问权限的虚拟机。

为了从此情况中恢复,ESXi 会针对已丢失磁盘锁的虚拟机生成一个问题(关于主机何时摆脱隔离状态且无法重新获取磁盘锁)。vSphere HA 将自动回答该问题,这就使已丢失磁盘锁的虚拟机实例关闭电源,只留下具有磁盘锁的实例。

重新启动虚拟机要考虑的因素

发生故障后,群集的主主机会确定一个可打开受影响虚拟机电源的主机,从而尝试重新启动这些虚拟机。选择此类主机时,主主机会考虑许多因素。

文件可访问性

在可启动虚拟机之前,必须能够从可通过网络与主主机通信的某个活动群集主机中访问该虚拟机的文件

虚拟机与主机的兼容性

如果存在可访问的主机,则虚拟机必须至少与其中一个主机兼容。为虚拟机设置的兼容性包括任何所需虚拟机-主机关联性规则的影响。例如,如果某个规则仅允许虚拟机在两个主机上运行,则会考虑将其放置在这两个主机上。

资源预留

在可运行虚拟机的主机中,必须至少有一个主机具有足够的未预留容量以满足虚拟机的内存开销及任何资源预留。将考虑四种类型的预留:CPU、内存、vNIC 和虚拟闪存。此外,必须提供足够的网络端口,才能打开虚拟机电源。

主机限制

除了资源预留之外,一个虚拟机只能放置在一个主机上(如果这样做不会违反允许的虚拟机最大数量或正在使用的 vCPU 数量)。

功能限制

如果已设置需要 vSphere HA 强制执行虚拟机-虚拟机反关联性规则的高级选项,则 vSphere HA 不会违反此规则。此外,vSphere HA 不会违反为容错虚拟机配置的任何每主机限制。

如果没有任何主机满足上述注意事项,则主主机会发布一个事件指出没有足够的资源让 vSphere HA 来启动虚拟机,并会在群集状况发生更改时进行重试。例如,如果虚拟机不可访问,则主主机会在文件可访问性发生更改后进行重试。

虚拟机重新启动尝试限制

如果 vSphere HA 主代理尝试重新启动虚拟机(包括注册虚拟机并打开其电源)失败,将会在延迟后重试此重新启动。vSphere HA 会尝试重新启动允许的最大尝试次数(默认值为 6),但并非所有重新启动失败都根据此最大值进行计数。

例如,重新启动尝试失败的最可能原因是虚拟机仍在另一台主机上运行,或者 vSphere HA 在虚拟机发生故障后立即重新启动它。在这种情况下,主代理会在上次尝试后所实施延迟的两倍时间后进行重试,最少延迟 1 分钟,最多延迟 30 分钟。因此,如果将延迟时间设为 1 分钟且在 T=0 时进行初始尝试,则其他尝试将发生在 T=1(1 分钟)、T=3(3 分钟)、T=7(7 分钟)、T=15(15 分钟)和 T=30(30 分钟)。每次尝试都根据限制进行计数,且默认情况下只进行六次尝试。

其他重新启动失败会导致可计算的重试,但具有不同的延迟间隔。一个示例方案是,当选择重新启动虚拟机的主机在主代理做出选择后失去对某个虚拟机数据存储的访问权限时。在这种情况下,会在默认延迟 2 分钟后进行重试。此尝试也会根据限制进行计数。

最后,某些重试不会进行计数。例如,如果要重新启动虚拟机的主机在主代理发出重新启动请求之前发生故障,则会在 2 分钟后进行重试,但此故障不会根据最大尝试次数进行计数。

虚拟机重新启动通知

当正在针对群集中的虚拟机进行故障切换操作时,vSphere HA 会生成群集事件。该事件还会在群集摘要选项卡中显示配置问题,其报告了正在重新启动的虚拟机数量。这些虚拟机分为四种不同的类别。

  • 正在放置的虚拟机:vSphere HA 正在尝试重新启动这些虚拟机

  • 等待重试的虚拟机:之前的重新启动尝试已失败,并且 vSphere HA 正在等待超时到期,然后再重试。

  • 需要其他资源的虚拟机:重新启动这些虚拟机所需资源不足。vSphere HA 将在更多资源可用(如主机恢复联机)后重试。

  • 不可访问的 Virtual SAN 虚拟机:vSphere HA 无法重新启动这些 Virtual SAN 虚拟机,因为它们不可访问。它将在可访问性发生更改后重试。

当观察到正对其执行重新启动操作的虚拟机数量发生更改时,这些虚拟机计数会进行动态更新。当 vSphere HA 已重新启动所有虚拟机或放弃尝试时,会清除配置问题。

在 vSphere 5.5 或更低版本中,会针对尝试重新启动虚拟机失败触发每虚拟机事件。此事件在 vSphere 6.x 中默认为禁用状态,且可通过将 vSphere HA 高级选项 das.config.fdm.reportfailoverfailevent 设置为 1 来启用。