vSphere HA概述
VMware vSphere High Availability (HA),即高可用集群,简单来说就是集群中有一台ESXi主机发生故障后,故障主机上的虚拟机将在集群其他主机上重新启动。注意!!!切换过程,虚拟机会发生重启,并非业务不中断,只是中断的时间不长而已。
与其他集群解决方案不同,vSphere HA 无需在应用程序或虚拟机内安装特殊软件。所有工作负载均受 vSphere HA 保护。配置 vSphere HA 之后,不需要执行操作即可保护新虚拟机。它们会自动受到保护。

vSphere High Availability
vSphere HA 通过以下方式保护应用程序可用性:
1、通过在集群内的其他主机上重新启动虚拟机,防止服务器故障。
2、通过持续监控虚拟机并在检测到故障时对其进行重新设置,防止应用程序故障。
3、通过在仍然有权访问其数据存储的其他主机上重新启动受影响的虚拟机,可防止出现数据存储可访问性故障。
4、如果虚拟机的主机在管理或 vSAN 网络上被隔离,它会通过重新启动这些虚拟机来防止网络隔离。即使网络已分区,仍会提供此保护。
vSphere HA先决条件
- 所有主机必须获得 vSphere HA 许可。
- 集群必须至少包含两个主机。
- 必须为所有主机配置静态 IP 地址。如果使用的是 DHCP,必须确保每台主机的地址在重新引导期间保留。
- 所有主机必须至少有一个共有的管理网络。最佳做法是至少有两个共有的管理网络。您应使用已启用管理流量复选框的 VMkernel 网络。这些网络必须能够相互访问,且管理网络上的 vCenter Server 和主机必须能够相互访问。
- 为了确保任何虚拟机都可以在集群内的任何主机上运行,所有主机都必须可以访问相同的虚拟机网络和数据存储。同样,虚拟机必须位于共享而非本地存储器上,否则在主机出现故障时它们将无法进行故障切换。
- 如果要使用虚拟机监控功能,必须安装 VMware Tools。
- 如果要使用虚拟机组件保护功能VMCP,主机必须已启用全部路径异常 (APD) 超时功能。
- 要使用虚拟机组件保护,集群必须包含 ESXi 6.0 或更高版本的主机。
- 仅可使用包含 ESXi 6.0 或更高版本主机的 vSphere HA 集群来启用 VMCP。包含早期版本主机的集群无法启用 VMCP,且无法将此类主机添加到已启用 VMCP 的集群中。
- 如果您的集群使用虚拟卷数据存储,当启用了 vSphere HA 时,vCenter Server 会在每个数据存储上创建一个配置虚拟卷。vSphere HA 将其使用的文件存储在这些容器中以保护虚拟机。如果您删除这些容器,vSphere HA 将无法正常运行。每个虚拟卷数据存储仅创建一个容器。
vSphere HA工作方式
(1)首选主机
创建 vSphere HA 集群时,所有活动主机(未处于待机或维护模式的主机或未断开连接的主机)都将参与选择集群的首选主机,整个过程是后台自动进行。挂载最多数量的数据存储的主机在选举中具有优势。每个集群通常只存在一台首选主机,其他所有主机都是辅助主机。如果首选主机出现故障、关机或处于待机模式或者从集群中移除,则会进行新的选举。
集群中的首选主机具有多个职责:
- 首选主机可与 vCenter Server 进行通信,充当集群的 vCenter Server 管理界面并报告集群运行状况,并监控所有受保护的虚拟机以及辅助主机的状态。
- 首选主机检测不同类型的主机故障,并相应地处理故障。如首选主机能够区分故障主机与网络分区中的主机或已与网络隔离的主机,此外首选主机会使用网络和数据存储检测信号确定故障的类型。
- 监控辅助主机的状况。如果辅助主机发生故障或无法访问,首选主机将确定必须重新启动哪些虚拟机。
- 监控所有受保护虚拟机的电源状况。如果有一台虚拟机出现故障,首选主机可确保重新启动该虚拟机。首选主机还可使用本地放置引擎确定进行重新启动的位置。
- 管理集群主机和受保护的虚拟机列表。
- 协调受保护虚拟机的重新启动。在 vCenter Server 观察到为响应用户操作,某虚拟机的电源状况由关闭电源变为打开电源之后,该虚拟机会受到首选主机的保护。首选主机会将受保护虚拟机的列表保留在集群的数据存储中。新选的首选主机使用此信息来确定要保护哪些虚拟机。
(2)从属主机
辅助主机主要通过在本地运行虚拟机、监控其运行时状况和向首选主机报告状况更新来对集群提供支持。首选主机也可运行和监控虚拟机。辅助主机和首选主机都可实现虚拟机和应用程序监控功能。


(3)vSphereHA三个重要组件介绍

FDM(Fault Domain Manager):
- 主机之间资源信息和虚拟机状态的传递
- 处理心跳机制,虚拟机的放置,虚拟机的重新启动
vSphereHA集群最重要的组件FDM(Fault Domain Manager),它是HA的代理,替换vSphere5.0之前HA的代理AAM(Legato’s Automated Availability Manager)模块。FDM代理负责很多任务,如主机之间资源信息和虚拟机状态的传递,处理心跳机制,虚拟机放置在哪台主机,虚拟机的重新启动等。
当HA功能启用,ESXi就会生成一个FDM进程,如果进程发生故障,系统会自动重新启动进程来确保HA功能。从vSphere 5.0开始,HA不依赖于DNS和IP地址,这是FDM带来的主要的改进地方。但我仍然从最佳实践角度出发,建议在vCenter中注册ESXi主机的FQDN,虽然HA不依赖于DNS,但是vCenter的其他服务功能组件仍然依赖DNS,比如NSX-T、replication等软件部署。最重要的是,一个主机在vCenter正确注册且有效的FQDN能够更容易的监控和故障排错。
hostd:
- FDM依赖于HOSTD
- 如果HOSTD无法运行,FDM的所有功能也是停止的
hostd组件主要功能是打开虚拟机的电源,并负责与FDM、vCenter组件进行通信。另外要注意,无论何种原因,HOSTD不可用时,ESXi主机将不参与任何FDM相关的进程,因为FDM依赖于HOSTD提供的信息,如虚拟机在主机上的注册信息,管理虚拟机使用的API,如果HOSTD无法运行,在等待HOSTD开始运作之前,FDM的所有功能也是停止的。换句话来说,这个时候HA功能是失效的。
vCenter:

- 配置HA
- 向ESXi主机推送FDM代理,在vSphere 5版本之前,推送类型的代理需要一连串的操作,而在vSphere 5.0之后的版本,这些操作时并行的,以便群集中多台主机的快速部署和配置,vCenter还负责群集中master主机的配置更改。
- HA还利用vCenter来获取虚拟机的状态信息,显示虚拟机的状态保护信息,负责保护和接触保护虚拟机,这不仅使用电源关闭或者开启状态下的虚拟机,而且在ESXi主机断开的情况下,vCenter会要求主HA代理取消对受影响虚拟机的保护。
即便当vCenter 这台虚拟机发生故障时,HA也会负责在群集内另一台ESXi主机上重新启动vCenter虚拟机,当然故障主机上其它的虚拟机也会随之发生迁移。如果vCenter不可用,它不会影响到群集的现有配置,vCenter会实时显示虚拟机的保护状态,群集配置,虚拟机同主机的兼容信息和主机清单列表,所以,在设计HA时,故障切换时没有加入vCenter,HA只是依赖vCenter配置和监视群集。
我们建议您为vCenter Server设置优先的重新启动级别,虽然重新启动虚拟机不需要vCenter Server支持,但还是有多个服务器组件依赖vCenter,因此,还是希望vCenter尽早恢复工作状态,当你设置vCenter Server的优先重新启动级别时,记得vCenter依赖的一些组件也需要启动成功,如DNS服务器等。
vSphere HA 实现虚拟机保护的过程

在vSphere5.0版本之前,虚拟机保护使用VPXA同时通过VPXA的模块vmap通知AAM。vSphere 5.0之后的版本,HA对虚拟机的保护方式已发生了重大的改变,下发对虚拟机提供HA保护的任务已经由vCenter来负责,但要注意虚拟机的重启缺不依赖vCenter。
当虚拟机的状态发生改变,vCenter将指挥master启用或者关闭对虚拟机的HA保护,不管怎样,只有当master监控的磁盘状态发生改变时才保护。原因是master故障会导致已存在内存的状态信息损坏,这种状态存储在数据存储的“protectedlist”文件中。
当虚拟机的电源状态改变时,master将会告诉vCenter,这样用户就可以看见虚拟机的状态改变,也为其它程序如监控工具提供信息。
保护虚拟机的工作流是通过vCenter来创建的,但当一个虚拟机的电源关闭,它将会从protectedlist中移除,即失去HA的保护。如下图:

虚拟机开机时,受HA保护

虚拟机关机时,不受HA保护
未完,待续。