在当前对可用性要求越来越高的今天,高可用成为生产环境必不可少的需求,vSphere HA就是其中一款优秀产品,以下就该产品的工作原理阐述我的理解。
一、vSphere HA功能的先决条件
要实现vSphere HA功能必须具备的四个条件是:共享存储、网络心跳、存储心跳、隔离地址。
1.共享存储
vSphere HA是当Cluster中承当Master角色的主机发现其他Slaver主机宕机时,将Slaver主机上的虚拟机在其他的Slaver主机上进行重启,所以这就要求所有的Exsi必须能看到同一个共享存储。
2.网络心跳
Cluster中的Master角色主机通过网络心跳检测Slaver主机和VM虚拟机的健康状态,当我们创建vKernel端口组的时候,里面有一个Management Traffic选项就是将该端口组声明为网络心跳。
3.存储心跳
有时可能我们的Esxi主机是正常的但是由于网络的故障,无法与Master进行通讯,为了避免误判,所以从vSphere5.0以后引入了存储心跳,当网络心跳异常时,会触发存储心跳的检测,以便更准确判断当前故障是由于网络原因还是Esxi主机宕机引起。
4.隔离地址
有时我们的Esxi主机正常,但网络心跳异常,触发存储心跳检测也正常,这时候就会产生2种场景:Partition(分离)和Isolation(隔离),判定哪种情况的依据就是与看与隔离地址的通讯是否正常,所以隔离地址也是必备的条件,在大部分的应用中,隔离地址是默认网关,而默认网关经常是禁Ping的,这就需要在高级选项中设定多个隔离地址。
二、vSphere HA工作的内容
1.Master主机的选举
每一个Cluster最多有1台Master,其余都是Slaver。Master的选举可由3种情况触发:
(1)vSphere HA激活之时。
(2)Cluster内增加新的Esxi主机,或Master主机故障。
(3)原有Cluster产生或消除Partition。
Master主机的选取依据是:
(1)存储心跳的数量多的Esxi主机位Master,缺省情况下存储心跳都是2个,最多5个。
(2)当存储心跳一样时,会比较MOID值,数值大的为Master,MOID是Esxi主机加入Cluter时分配的数值,需要注意的是,它是以首字符的大小进行比较,举例来说,2台Esxi主机的MOID值分别为90和100,它会认为首字符为9的值大于1,所以Master主机是MOID值为90的Esxi主机。
2.Master主机与Slaver主机的角色任务
(1)Master主机:维护Protect List;通过网络心跳监控Cluster内所有的Esxi Host与Virtual Machine可用性;监控所有On Protected状态的Virtual Machine的电源状态,当故障发生时尝试重启。
(2)Slaver主机:监控自身Host中的Virtual Machine和Master的状态,当Master发生故障时,从新选举出新的Master。
3.确定被vSphere HA保护的对象
当Virtual Machine或者Esxi启动后,vCenter会检测到它们的信息,将其写入Protect List并推送给Master主机,Master主机根据网络心跳和Protect List来最终确定需要实施保护的对象,vCenter与Master之间每5分钟对比一下Protect List。以下几种情况会视为Unprotect状态,不会受到vSphere HA的保护:
(1)Virtual Machine或者Esxi未完全启动。
(2)人为手动的关机。
(3)Virtual Machine或者Esxi与vCenter无法连接。
(4)Esxi处于维护模式。
(5)Virtual Machine被vMotion走了。
三、常见的vSphere HA故障场景
1.Esxi Host故障
当我们的Esxi Host主机发生故障时,vSphere HA会将故障主机上的Virtual Machine在其他的主机上重启,不同于vMotion的无间断迁移,vSphere HA它会产生一个较短的停机时间,具体的时间因故障主机的角色不同,时间也不相同,详细分为:
(1)故障主机为Master主机,前10s进行Master检测,从第11s开始所有的Slaver主机会认为Master主机已宕机并开始进行为时15s的新一轮选举,产生新的Master主机,从第26s开始到第35s,新的Master主机会向vCenter读取Protect List,所以总共的停机时间为35s+GusetOS启动所需的时间。
(2)故障主机为Slaver主机,由于Slaver主机不需要选举和读取Protect List,只需要经过10s的检测时间,所以停机时间为10s+GusetOS启动所需的时间。
2.GuestOS故障
首先需要声明的时Master主机通过安装在GuestOS上的vMwareTools监控Virtual Machine的心跳,当他发现Virtual Machine心跳丢失或者VMX文件损坏后会将该虚拟机在其Host主机上原地重启。
3.Application故障
像GusteOS一样,要求GuestOS上必须要有vMwareTools,发生故障后会原地重启Virtual Machine然后再重启Application,但要求Application满足vMware应用程序开发标准ISV,目前几乎没有程序支持。或者借助vMware的Application HA对应用程序进行高可用保护,目前支持SQL、Tomcat等应用程序。
4.网络心跳故障
前面在介绍默认网关的时候提到过,网络心跳异常有Partition和Isolation 2种情况,下面针对这2种情况作详细介绍:
(1)Partition(分离),场景如下图所示
起初Cluster中的网络心跳是正常的,但是突然间网络由于其他原因被分成了2块,处于右半部份的2个Slaver主机无法连接Master主机,存储心跳也是正常的,也可以连接隔离地址,此时Partition的条件被触发,右边的2台Slaver主机会进行选举,产生出1台的Master主机,但并不意味着右半部份具备vSphere HA功能,尽管他有Master主机。前面我们提到过1个Cluster只能存在1个Master主机,新产生的这台Master主机无法从vCenter那里获取到Protect List,所以右半部份的vSphere HA功能是无效的。当Partition状态消除后,2台Master之间会重新进行选举来确定最终的Master主机。
(2)Isolation(隔离),场景如下图所示
当网络心跳发生故障,Slaver主机无法连接Master主机,也无法连接隔离地址,但是存储心跳是正常的,此时会触发Isolation,Esxi会认为自己被隔离了,依照策略执行操作,策略分为leave power on,shutdown和reboot,缺省情况下的策略是leave power on。