HA全称High Availability。它是VMware的企业应用环境中用来保障企业级应用的微间断运行需求所产生的一个组件。
      HA允许一个集群中在资源许可的情况下,将出现故障的ESX主机上面的VM在其他的主机上启动起来,其间的业务时间间断为:VM系统启动时间+应用启动时间+15秒左右的心跳检测时间。通常这个时间都能够保持在3分钟内。
      HA不受DRS和VMotion的影响,也就是说它并不依赖于后两者存在,它的心跳检测信号可以通过在ESX主机之间发生。HA甚至都不依赖于VC服务器,不过鉴于HA的配置需要一来VC,所以我们一般认为HA还是需要依赖于VC服务器的,但是我们必须清楚的认识:VC于HA的作用仅限于配置时需要它,配置完成之后,只要我们设定了心跳检测的隔离地址,则我们可以丢弃VC服务器了(前提是我们不需要用到DRS和VMotion等功能)。
设定HA集群过程中,我们可以看到如下几个选项,他们分别的含义是:
1、接入控制。用于设定集群中可以恢复或确保故障切换的最大主机故障数(VI3中集群最大允许故障主机数目为4台)、确定违反可用性限制的VM是否可以被启动。
2、默认群集设置。默认会应用于群集中的所有满足HA条件的VM。其中“虚拟机重新启动优先级”选项指定发生主机故障时重启VM的相对优先级,优先级较高的VM将优先启动,依此类推,优先级从高到低次第启动;“主机隔离响应”选项则用于执行已与集群失去连接的ESX主机应对正在运行的VM执行的操作。默认情况下,住过主机被隔离,则每台VM会保持启动状态,也就意味着被隔离ESX主机无法于集群中的其他主机取得联系,但是其中的VM还继续保持运行;“关闭虚拟机”和“虚拟机关闭”则会将VM交付于其他ESX主机,等同于切断VM的电源,可能导致应用数据丢失。其中前者相当于拔电源,后者则是温和的自动启动关机命令。区别在于,前者的等待时间较短,但是容易导致应用数据丢失,后者等待时间较长,但是应用数据更容易受到保护。
3、虚拟机监控。可以通过安装VMtools对虚拟机的运行状态通过VMtools发出的监控信号进行监控,如果在规定时间内没有收到信号则说明该机异常,将自动重启这台机。这个规定时间有:2分钟、1分钟、30秒钟三个选项。
4、高级选项。这里是对HA的一些高级选项进行配置。比如das.isolation-address(确定主机状态的隔离地址)。
HA的具体工作原理
在集群中,VC通过心跳信号(Agent Heartbeat)来监控各台ESX主机的工作状态,ESX主机之间也能够相互发送心跳信号来确定相互之间的连通性和运行状态。集群中的心跳信号默认通过Service Console来传输(端口不定),那么,当某台ESX主机没有收到其他主机的信号时,则可能有两种可能:(1)、其他ESX主机故障;(2)、本机网络连通性出了问题,我们称之为“孤立”(isolation)。
      ESX主机的联通性心跳信号测试,还可以通过一个“隔离地址”来实现,默认情况下这个地址是Service Console的网关地址,但是,我们可以在高级选项中自定义这个地址。
一旦ESX主机确定是自身的问题,那么,系统将会自动解除对ESX主机上面虚拟机的VMDK文件解除锁定,方便其他主机接管它;如果ESX主机确认非自身问题,则开始尝试接管其他可能故障的ESX主机上面的VM。
根据实验资料,ESX主机会在停止收到心跳信号数秒后,开始确认自己是否被孤立,如果确认是,则会根据遇险的配置来决定其中VM的状态处理。正常ESX主机会在停止接收到故障ESX主机的心跳喜好15s之后,开始尝试接管并启动原来在故障主机上的VM。
另一种特殊的情况,我们称之为脑裂
这种情况一般发生在非冗余网络和主机集群中。假定某HA集群中有2台主机T1和T2,当T1崩溃后没能发出心跳信号时,T2无法确认是T1问题还是自身问题,这时它会尝试ping隔离地址设定的IP,来确认是否是自身被孤立,如果隔离地址因为防火墙封闭或其他原因无法ping通,则T2会认为自身是孤立主机,那么,它就会按照预先设定的操作进程对VM进行相应的处理,进而扩大化故障范围。
也许正是为了防止“脑裂”现象的发生,VMware中将HA设置中的“主机隔离响应”默认配置为“保持VM启动状态”。备注:早期的版本默认设置为“关闭VM”。
所以, 建议HA集群中的默认ESX主机应该为3台或以上,或者集群中的ESX拥有冗余网络。