业务连续性和最小化停机时间

无论是计划停机时间还是非计划停机时间,都会带来相当大的成本。用于确保更高级别可用性的传统解决方案都需要较大开销,并且难以实施和管理。

VMware 可为重要应用程序提供更高级别的可用性,并且操作更简单,成本更低。

vSphere 可以实现:

  • 更高的可用性:独立于硬件、操作系统和应用程序
  • 减少日常维护的计划停机时间
  • 出现故障时自动恢复

vSphere 可以减少计划的停机时间,防止出现非计划停机,并迅速从断电中恢复。

减少计划的停机时间

计划的停机时间通常占数据中心停机时间的 80% 以上。硬件维护、服务器迁移和固件更新均需要将物理服务器停机。为了最小化该停机时间所造成的影响,只得被迫延迟维护,直到出现不便且难以调度的停机时间段。

vSphere 可以显著减少计划的停机时间。由于 vSphere 环境中的工作负载无需停机或服务中断,就可以动态移动到其他物理服务器,所以服务器维护无需应用程序和服务停机就能执行。通过 vSphere 可以执行以下任务:

  • 消除常见维护操作的停机时间
  • 消除计划的维护时间段
  • 随时执行维护,无需中断用户和服务

由于 VMware 环境中的工作负载无需中断服务即可动态移动到不同的物理服务器或基础存储器,所以,通过 vSphere 中的 vSphere vMotion 和 Storage vMotion 功能,企业可以减少计划的停机时间。管理员可以快速而完整地执行透明的维护操作,不必专门找时间来维护。

防止非计划停机时间

在 ESXi 主机为应用程序的运行提供稳定平台时,还应避免出现硬件或应用程序故障所导致的非计划停机时间。vSphere 将重要功能构建到数据中心基础架构中,这有助于避免出现非计划停机时间。

这些 vSphere 功能是虚拟基础架构的一部分,因此,对操作系统以及虚拟机中运行的应用程序而言是透明的。这些功能可以进行配置,而且可供物理系统上的所有虚拟机使用,从而降低成本并降低实现高可用性的复杂程度。vSphere 中内置的密钥可用性功能:

  • 共享存储器:通过在共享存储器(如光纤通道、iSCSI SAN 或 NAS)上存储虚拟机文件来消除单一故障点。可以使用 SAN 镜像和复制功能将虚拟磁盘的更新副本保留在灾难恢复站点。
  • 网络接口绑定:允许单个网卡发生故障。
  • 存储多路径:允许存储路径发生故障。

除了这些功能外,vSphere HA 和 Fault Tolerance 功能分别通过提供中断快速恢复和连续可用性来最小化或消除非计划停机时间。

vSphere HA 提供快速中断恢复

vSphere HA 利用配置为集群的多台 ESXi 主机,为虚拟机中运行的应用程序提供快速中断恢复和具有成本效益的高可用性。

vSphere HA 通过以下方式保护应用程序可用性:

  • 通过在集群内的其他主机上重启虚拟机,防止服务器故障。
  • 通过持续监控虚拟机,并在检测到故障时对其进行重新设置,防止应用程序故障。
  • 通过在同样有权访问其数据存储的其他主机上重启受影响的虚拟机,可防止出现数据存储可访问性故障。
  • 如果虚拟机的主机在管理或 Virtual SAN 网络上被隔离,它会通过重启这些虚拟机来防止网络隔离。即使网络已分区,仍会提供此保护。

与其他集群解决方案不同,vSphere HA 提供基础架构并使用该基础架构保护所有工作负载:

  • 无需在应用程序或虚拟机内安装特殊软件。所有工作负载均受 vSphere HA 保护。配置 vSphere HA 之后,不需要执行操作即可保护新虚拟机。它们会自动受到保护。
  • 可以将 vSphere HA 与 vSphere Distributed Resource Scheduler (DRS) 结合使用以防止出现故障,以及在集群内的主机之间提供负载平衡。

与传统的故障切换解决方案相比,vSphere HA 具有多个优势:

最小化设置

设置 vSphere HA 集群之后,集群内的所有虚拟机无需额外配置即可获得故障切换支持。

减少了硬件成本和设置

虚拟机可充当应用程序的移动容器,可在主机之间移动。管理员会避免在多台计算机上进行重复配置。使用 vSphere HA 时,必须拥有足够的资源来对要通过 vSphere HA 保护的主机数进行故障切换。但是,vCenter Server 系统会自动管理资源并配置集群。

提高了应用程序的可用性

虚拟机内运行的所有应用程序的可用性都变得更高。虚拟机可以从硬件故障中恢复,提高了在引导周期内启动的所有应用程序的可用性,而且没有额外的计算需求,即使该应用程序本身不是集群应用程序也一样。通过监控和响应 VMware Tools 检测信号并重启未响应的虚拟机,可防止客户机操作系统崩溃。

DRS 和 vMotion 集成

如果主机发生了故障,并且在其他主机上重启了虚拟机,则 DRS 会提出迁移建议或直接迁移虚拟机以平衡资源分配。如果迁移的源主机和/或目标主机发生故障,则 vSphere HA 会帮助从该故障中恢复。

vSphere Fault Tolerance 提供连续可用性

vSphere HA 通过在主机出现故障时 重启 虚拟机来为虚拟机提供基本级别的保护。而 vSphere Fault Tolerance 可提供 更高级别的可用性,允许用户对任何虚拟机进行保护以防止主机发生故障时丢失数据、事务或连接。

Fault Tolerance 通过 “确保 主虚拟机辅助虚拟机 的状态在虚拟机的指令执行的任何时间点均相同” 来提供连续可用性。

如果运行主虚拟机的主机或运行辅助虚拟机的主机发生故障,则会发生即时且透明的故障切换。正常运行的 ESXi 主机将无缝变成主虚拟机的主机,而不会断开网络连接或中断正在处理的事务。使用透明故障切换,不会发生数据损失,并且可以保持网络的连接。在进行透明故障切换之后,将重新生成新的辅助虚拟机,并将重新建立冗余。整个过程是透明且全自动的,并且即使 vCenter Server 不可用,也会照常完成。

vSphere HA 集群

vSphere HA 集群允许 ESXi 主机集合作为一个组协同工作,这些主机为虚拟机提供的可用性级别比单独的 ESXi 主机提供的级别要高。当规划新 vSphere HA 集群的创建和使用时,有些选择会影响集群对主机或虚拟机故障的响应方式。

在创建 vSphere HA 集群之前,有必要了解 vSphere HA 是如何标识主机故障、隔离的,以及如何响应这些情况。还应了解接入控制的工作方式,以便可以选择符合故障切换需要的策略。建立集群之后,不但可以通过高级选项自定义其行为,还可以通过执行建议的最佳做法优化其性能。

vSphere HA 的工作方式

vSphere HA 可以将虚拟机及其所驻留的主机集中在集群内,从而为虚拟机提供高可用性。集群中的主机均会受到监控,如果发生故障,故障主机上的虚拟机将在备用主机上重启。

创建 vSphere HA 集群时,会自动选择一台主机作为首选主机,master host。首选主机可与 vCenter Server 进行通信,并监控所有受保护的虚拟机以及从属主机的状态。如果发生了不同类型的主机故障,首选主机必须检测到并处理。首选主机必须有能力区分故障的类型,是主机发生故障,还是主机处于网络分区中,还是主机已与网络隔离。首选主机使用网络和数据存储的 heartbeating 检测信号来确定故障的类型。

首选主机与从属主机

在将主机添加到 vSphere HA 集群时,会向该主机上传一个客户端程序,并进行适当的配置,以便其与集群内的其他客户端通信。集群中的每台主机的运行角色,要么是首选主机,要么是从属主机。

如果为集群启用了 vSphere HA,则所有活动主机(非待机、维护、断开连接的主机)都将参与选举,以选择集群的首选主机。所挂载的数据存储其数量最多的那台主机在选举中最具优势。每个集群通常只存在一台首选主机,其他所有主机都是从属主机。如果首选主机出现故障、关机、处于待机模式或从集群中被移除,则会进行新的选举。

首选主机与从属主机都可以在其上面运行虚拟主机,并对这些虚拟主机进行监控。

首选主机的职责:
  • 监控 从属主机 的状况:如果从属主机发生故障或无法访问,首选主机将确定需要重启的虚拟机。
  • 监控所有受保护 虚拟机的电源 状况:如果有一台虚拟机出现故障,首选主机可确保重启该虚拟机。使用本地放置引擎(local placement engine),首选主机还可确定执行重启的位置。
  • 管理集群 主机和受保护的虚拟机列表
  • 充当集群的 vCenter Server 管理中间人,并报告集群健康状况。
从属主机的职责:
  • 在本地运行虚拟机
  • 监控虚拟机的运行时状况
  • 向首选主机报告当前状态

首选主机执行的功能之一是安排受保护虚拟机的重启。在 vCenter Server 观察到某虚拟机的电源被打开之后,该虚拟机就会受到首选主机的保护。首选主机会将受保护虚拟机的列表保留在集群的数据存储中。新选的首选主机会使用该信息来确定要保护哪些虚拟机。

如果断开主机与集群之间的连接,则所有向该主机注册的虚拟机均不受 vSphere HA 保护。

主机故障类型及检测

首选主机负责检测从属主机的故障。根据检测到的故障类型,在主机上运行的虚拟机可能需要进行故障切换。

在 vSphere HA 集群中,可以检测三种类型的主机故障:

  • 故障 - 主机停止运行
  • 隔离 - 主机与网络隔离
  • 分区 - 主机失去与首选主机的网络连接

首选主机监控集群中从属主机的活跃度。通过每秒交换一次 heartbeat 来完成一次通信。当首选主机接收不到某从属主机的信号时,它会先检查主机的活跃度,然后声明该主机已出现故障。所谓活跃度检查,是判断该 从属主机与数据存储之间 是否在交换 heartbeat 信号。同时还会检查该主机是否能 ping 通

如果首选主机无法直接与从属主机上的客户端进行通信,该从属主机也 ping 不通,而且其客户端也没有发出 heartbeat 信号,则该主机视为故障。该故障主机的虚拟机会在备用主机上 重启

如果该从属主机与数据存储仍在交换 heartbeat 信号,则首选主机会认为它处于某个网络分区或处于网络隔离状态,会继续监控该主机及其虚拟机。

当主机仍在运行但无法再监视来自管理网络上 vSphere HA 客户端的流量时,会发生主机网络隔离。如果主机突然探测不到该流量,它会尝试去 ping 集群的隔离地址。如果仍然失败,主机将声明自己已与网络隔离。

首选主机仍会监控被隔离的主机上运行的虚拟机,如果发现虚拟机的电源被关闭,而且该首选主机有权管理这些虚拟机,则会重启它们。

只要能够确认网络具有足够的冗余度,任何时候肯定至少有一个网络路径可用,则主机网络隔离会极少出现。

确定对主机问题的响应

如果主机发生故障,其中的虚拟机必须重启,借助 VM 重启优先级,可以控制这些虚拟机重启的顺序。也可通过配置主机隔离响应,来决定该主机与其他主机失去管理网络连接时 vSphere HA 的响应方式。

以下设置适用于主机发生故障或主机隔离时集群内的所有虚拟机。此外,也可以为特定虚拟机配置例外。

虚拟机重启优先级

主机发生故障以后,虚拟机的重启优先级决定了按什么样的顺序来为各虚拟机分配资源。然后,主机将按优先级顺序重启分配给它的虚拟机。如果没有足够的资源,vSphere HA 则会等待更多的非预留容量变得可用,再重试。要想减少该状况的发生,需要配置 vSphere HA 的接入控制(admission control),以便针对故障预留更多的资源。通过接入控制可以指定为虚拟机预留的集群容量,如果发生故障,这些容量无法满足其他虚拟机的预留和内存开销。

此设置的值为:已禁用、低、中(默认)和高。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 来启用。