睿诚科技协会

VMware HA高可用技术如何实现故障无缝切换?

什么是 VMware HA?

核心定义:VMware HA 是一种在 ESXi 主机集群内,为虚拟机提供自动故障转移的技术。

VMware HA高可用技术如何实现故障无缝切换?-图1
(图片来源网络,侵删)

通俗解释:想象一下,你有一个由多台服务器(ESXi 主机)组成的团队,当团队中任何一台服务器突然“倒下”(例如硬件故障、断电、网络中断),VMware HA 会立即检测到这个故障,并自动在这台服务器上运行的虚拟机,在团队中其他健康的、有足够资源的服务器上“重新启动”。

关键点

  • 自动性:整个过程无需人工干预,由 vSphere HA Agent 自动完成。
  • 重启,而非迁移:它不是将正在运行的虚拟机“无缝”移动到另一台主机(那是 vMotion 的工作),而是关机再开机,这意味着在虚拟机重启期间,会有短暂的服务中断。
  • 最小化停机时间:相比于物理服务器故障后需要人工介入、硬件维修、系统重装等漫长的过程,VMware HA 能将停机时间从数小时缩短到几分钟甚至更短。

VMware HA 的工作原理

要理解 HA 如何工作,需要了解它的三个核心组件和检测机制。

核心组件

  • vSphere HA Agent

    VMware HA高可用技术如何实现故障无缝切换?-图2
    (图片来源网络,侵删)
    • 这是一个运行在每台 ESXi 主机上的轻量级服务。
    • 它是 HA 功能的“哨兵”,负责心跳检测执行故障转移操作
    • 它会定期向指定的“主控节点”发送“我还活着”的心跳信号。
  • 主控节点

    • 在 HA 集群中,所有 ESXi 主机会通过选举,自动选出一台作为主控节点。
    • 主控节点是 HA 集群的“大脑”,它负责接收所有从属节点的心跳,并监控整个集群的健康状态
    • 如果主控节点本身发生故障,集群会立即重新选举出新的主控节点,确保 HA 功能的连续性。
  • 数据存储心跳

    • 这是 HA 的第二重、更可靠的心跳检测机制
    • 除了主机间的网络心跳,每个 HA Agent 还会定期向所有配置为 HA 的数据存储写入一个心跳数据文件。
    • 这个机制至关重要,因为它可以区分两种情况:
      • 主机故障:如果一台主机停止向数据存储写入心跳,但集群网络依然通畅,说明是这台主机本身出了问题。
      • 网络隔离:如果一台主机停止向数据存储写入心跳,同时它也无法从其他主机那里接收到心跳,说明这台主机与集群网络失去了连接(网络分区),在这种情况下,HA 不会认为主机故障,因为无法确定是主机坏了还是网络断了,以避免“脑裂”(Split-Brain)问题。

故障检测与恢复流程

当一个 ESXi 主机发生故障时,HA 的恢复流程如下:

  1. 故障检测

    VMware HA高可用技术如何实现故障无缝切换?-图3
    (图片来源网络,侵删)
    • 主控节点停止从故障主机接收到网络心跳。
    • 主控节点检查数据存储,发现该主机也未写入心跳数据文件。
    • 主控节点确认该主机已完全与集群隔离,判断其为故障主机。
  2. 虚拟机重启决策

    • 主控节点会检查故障主机上正在运行的虚拟机列表。
    • 对于受保护的虚拟机,主控节点会决定在哪些健康的主机上重新启动它们。
    • 这个决策会考虑多个因素,包括:
      • 主机资源:目标主机是否有足够的 CPU、内存资源来承载待重启的虚拟机。
      • 主机兼容性:虚拟机的硬件版本是否与目标主机兼容。
      • 资源池和 DRS:如果启用了 DRS,它会结合 DRS 的调度策略,选择最合适的主机。
  3. 执行重启

    • 主控节点向选定的健康主机上的 HA Agent 发送指令:“启动这些虚拟机”。
    • 健康主机上的 HA Agent 接到指令后,会调用 ESXi 的 API,依次强制关闭(如果虚拟机是开启状态)然后重新启动这些虚拟机。
    • 主控节点会持续监控这些虚拟机的启动状态,直到它们成功运行。

VMware HA 的关键概念与配置

为了有效使用 HA,需要理解以下几个关键概念:

故障域

这是 vSphere 6.7 引入的一个非常重要的概念,用于应对更复杂的硬件故障,比如整个机架或机柜的断电。

  • 定义:故障域是一组共享一个或多个物理故障点的 ESXi 主机、数据存储和网络的集合,一个机柜里的所有服务器和它们连接的交换机、UPS 就可以构成一个故障域。
  • 作用:通过配置故障域,可以确保 HA 在做故障转移时,不会将所有虚拟机都转移到同一个故障域,如果 A 机柜断电,HA 会优先将虚拟机重启在 B 机柜(另一个故障域)的主机上,从而实现更高的可用性。
  • 未启用故障域(默认):HA 认为所有主机是平等的,可能会将虚拟机集中重启到少数几台主机上,存在单点风险。

隔离响应

当一个主机检测到自己与网络(特别是主控节点和其他主机)失去连接时,它会采取什么行动?这就是隔离响应。

  • 关闭虚拟机:这是默认选项,主机认为自己被“孤立”了,为了避免数据不一致,它会尝试安全关闭其上所有正在运行的虚拟机,这是一种保守但安全的行为。
  • 留电源开启:主机不会关闭虚拟机,让它们继续运行,这存在风险,因为如果主机实际上是故障了,而其他主机又接管了虚拟机,就会导致“脑裂”,同一虚拟机在两个地方同时运行,数据严重损坏。
    • 适用场景:在极少数情况下,当网络分区是短暂且可快速恢复时,此选项可以避免不必要的虚拟机重启。

虚拟机重启优先级

当一个集群有多台主机发生故障,而资源不足以同时重启所有受影响的虚拟机时,需要决定重启的顺序。

  • 定义:可以为每个虚拟机设置一个优先级(高、中、低、禁用)。
  • 作用:HA 会优先重启高优先级的虚拟机,然后再重启中优先级的,以此类推,这对于确保核心业务系统(如数据库、Web 服务器)优先恢复至关重要。

主机监控和虚拟机监控

  • 主机监控:默认开启,通过心跳检测 ESXi 主机的操作系统是否存活,如果主机 OS 宕机,HA 会重启其上的虚拟机。
  • 虚拟机监控:可选功能,它通过在虚拟机内部运行一个“应用程序监控”进程vmtoolsd),来检查虚拟机内部的应用程序是否响应。
    • 工作原理:如果虚拟机内部的应用程序卡死(Web 服务无响应),但主机和虚拟机操作系统都正常,主机监控无法发现问题,虚拟机监控会检测到这个问题,并可以根据配置重启该虚拟机,而无需等待主机故障。
    • 配置:可以设置一个超时时间(30 秒),如果虚拟机连续多次(3 次)在规定时间内未响应,就触发重启。

VMware HA 的局限性

尽管非常强大,但 HA 也有一些固有的局限性:

  1. 非无缝迁移:如前所述,HA 的本质是“重启”,会导致服务中断,对于需要零停机的应用,必须结合 vMotion(实时迁移) 技术。
  2. 共享存储依赖所有 ESXi 主机必须访问同一个共享存储(如 SAN、NAS),虚拟机的磁盘文件(.vmdk)必须放在共享存储上,这样 HA 才能在任何一台主机上找到并启动它们。
  3. 无法应对存储故障:如果共享存储本身发生故障,那么所有依赖该存储的虚拟机都无法启动,HA 也就无能为力,此时需要依赖其他技术,如 vSphere FT(容错) 或存储层面的高可用(如存储双活)。
  4. 资源预留:HA 需要集群中有足够的未占用资源来应对单台(或多台)主机故障,如果集群资源已用尽,HA 将无法重启所有受影响的虚拟机。admissions control(准入控制)机制就是为了确保这一点。

HA vs. FT vs. DRS

这三个 vSphere 高可用技术经常被一起讨论,它们各有侧重,可以协同工作:

特性 VMware HA (高可用) VMware FT (容错) vSphere DRS (分布式资源调度)
核心目标 故障后恢复:主机故障后自动重启虚拟机。 零停机:通过冗余提供持续可用性,虚拟机几乎无感知。 负载均衡:智能地将虚拟机在集群主机间迁移,以优化资源利用率。
工作方式 关机再开机。 在两台独立的物理主机上同时运行一个虚拟机的主、副本,通过内存记录实现实时状态同步。 vMotion:在虚拟机运行时,将其从一台主机迁移到另一台。
停机时间 分钟级(取决于虚拟机启动速度)。 零到几秒(通常是内存页的复制时间)。 零停机(vMotion 过程对用户透明)。
资源开销 低。 极高(需要两倍的主机资源,CPU 和内存)。 低(迁移过程有短暂开销)。
主机要求 所有主机访问共享存储。 要求非常严格:需要兼容的 CPU、共享存储,且主机间延迟极低。 所有主机访问共享存储。
适用场景 保护绝大多数应用,对短暂停机可容忍。 对停机要求极为苛刻的核心业务(如金融交易系统)。 确保整个集群负载均衡,性能最优,预防资源瓶颈。

协同工作:在实际生产环境中,通常会同时启用 HA、FT 和 DRS,构建一个高度可用且性能优越的环境,DRS 负责日常的负载均衡,HA 负责应对主机宕机,而 FT 保护那些绝对不能停机的关键虚拟机。


VMware HA 是构建高可用虚拟化环境的基石,它通过简单、自动化的故障转移机制,极大地提升了业务连续性,理解其心跳检测机制核心组件以及与 FT、DRS 的区别,对于任何 VMware 管理员来说都是必备的知识,它虽然不能解决所有问题(如存储故障),但在应对最常见的单点硬件故障方面,它是一个非常高效且成熟的解决方案。

分享:
扫描分享到社交APP
上一篇
下一篇