测试环境:

两台ESXi 5.0主机,加入test Cluster 但是HA未启动,两台主机共运行若干VM以供测试使用。

一、 启用vSphere HA

首先,我们启动HA, 右击test Cluster,左击“编辑设置”,打开配置向导。勾选“打开vSphere HA选项,然后确定,即可启动HA保护。

 

p_w_picpath

 

首先会在主机上安装HA代理:

 

 

p_w_picpath

 

随后会进行选举,选出Master和Slaves主机:

 

p_w_picpath

 

启用后我们发现主机有报警信息:

 

p_w_picpath

 

这是因为我们的Management Network只连接了单块物理网卡,没有冗余。

这里有两种方式可以消除这个报警:

1, 给每台主机管理网络再增加一块物理网卡做teaming,然后将HA禁用再启用后即可消除该报警。

 

 

p_w_picpath

 

 

2, 如果条件有限不想给管理网络做冗余,又不想看到该报警,可以HA高级选项 das.ignoreRedundantNetWarning 设置为“true”即可。

 

 

 

p_w_picpath

 

一、 vSphere HA配置

 

(1) 在做高级HA配置之前,我们先检查一下现在HA的状态。

左击Test Cluster,选择摘要选项卡,点击“集群信息”可以查看该集群的基本状态,如:哪台主机是Master代理,有几台受HA保护的VM,以及用于检测信号的数据存储的信息

 

p_w_picpath

 

也可以直接点击主机,选择摘要选项卡,查看主机的HA信息:

 

p_w_picpath

 

(2) 下面我们看一下vSphere HA的高级选项,右击test Cluster,左击“编辑设置”,打开配置向导。

选择vSphere HA:

 

 

 

p_w_picpath

 

右边最上面是“主机监控状态”:

创建群集后,请启用主机监控以便 vSphere HA 可以监控由群集内每个主机上的 vSphere HA 代理发送的检测信号。如果选择启用主机监控,则会检查群集内的每台主机以确保其正在运行。如果某台主机出现故障,则会在另一台主机上重新启动虚拟机。主机监控还是 vSphere Fault Tolerance 恢复进程正常运行所必需的。

注意 如果需要执行可能会触发主机隔离响应的网络维护,VMware 建议首先禁用主机监控以挂起 vSphereHA。完成维护后,请重新启用“主机监控”。

 

中间是“接入控制”:

可以为 vSphere HA 群集启用或禁用接入控制。

启用:禁止违反可用性限制的打开虚拟机电源操作

启用接入控制并执行可用性限制,同时保留故障切换容量。不允许在虚拟机上执行会减少群集内的未预留资源并违反可用性限制的任何操作。

禁用:允许违反可用性限制的打开虚拟机电源操作

禁用接入控制。例如,即使打开虚拟机电源会造成故障切换容量不足,仍然可执行该操作。执行该操作时,不会显示任何警告,而且群集不会变为红色。如果群集的故障切换容量不足,vSphere HA 仍可以执行故障切换,并使用“虚拟机重新启动优先级”设置来确定要先打开电源的虚拟机。

 

如果启用了接入控制,vSphere HA 会提供三个强制接入控制的策略。

* 群集允许的主机故障数量

* 作为故障切换空间容量保留的群集资源的百分比

* 指定故障切换主机

其中“群集允许的主机故障数量”,是指集群会根据选择主机的数量,保留足够的资源,允许该数量主机发生故障后能够完成接管作业。

“作为故障切换空间容量保留的群集资源的百分比”可以根据你的需要为集群保留多少CPU和内存资源。默认为25%。

“指定故障切换主机”,是指你可以选择一台主机专门用来做HA的备机,任何主机故障后,虚拟机都会优先在该台主机上启动。另外,被指定的主机不受DRS影响。也就是说平时VM不会被DRS迁移到该主机上,也不会在该主机上启动。

 

 

选择“虚拟机选项”:

 

p_w_picpath

 

虚拟机重新启动优先级设置

虚拟机重新启动优先级确定主机发生故障后虚拟机的重新启动相对顺序。这些虚拟机在新主机上按顺序重新启动,首先启动优先级最高的虚拟机,然后是那些低优先级的虚拟机,直到重新启动所有虚拟机或者没有更多的可用群集资源为止。如果主机故障数目超过了接入控制所允许的数目,则系统可能会等到有更多资源可用时再重新启动优先级较低的虚拟机。如果指定了一个故障切换主机,则虚拟机将在该故障切换主机上重新启动。

此设置的值为:已禁用、低、中等(默认)和高。

如果选择“已禁用”,则会为虚拟机禁用 vSphere HA,这意味着当其主机出现故障时不会在其他 ESXi 主机上重新启动虚拟机。“已禁用”设置不会对虚拟机监控造成影响,这意味着当正常运行的主机上的某个虚拟机出现故障时,在同一主机上重置该虚拟机。您可更改各个虚拟机的这种设置。

虚拟机的重新启动优先级设置因用户需求而有所不同。VMware 建议为提供最重要服务的虚拟机分配较高的重新启动优先级。

例如,在多层应用程序中,可以根据虚拟机上所驻留的功能来对分配进行排序。

高。将为应用程序提供数据的数据库服务器。

中等。使用数据库中的数据并在网页上提供结果的应用程序服务器。

低。接收用户请求、将查询传递到应用程序服务器并将结果返回给用户的 Web 服务器。

 

主机隔离响应设置

主机隔离响应确定当 vSphere HA 群集内的某个主机失去其管理网络连接但仍继续运行时出现的情况。主机隔离响应要求启用“主机监控状态”。如果“主机监控状态”处于禁用状态,则主机隔离响应将同样被挂起。当主机无法与其他主机上运行的代理通信且无法 ping 其隔离地址时,该主机确定其已被隔离。发生这种情况时,主机会执行其隔离响应。响应包括:保持打开电源(默认值)、关闭电源和关机。还可以为各个虚拟机自定义此属性。

要使用“关机”设置,必须在虚拟机的客户机操作系统中安装 VMware Tools。将虚拟机关机的优点在于可以

保留其状况。关机操作优于关闭虚拟机电源操作,关闭虚拟机电源不会将最近的更改刷新到磁盘中,也不会提交事务。在关机完成时,正在关机的虚拟机需要更长时间进行故障切换。未在 300 秒内或在高级属性das.isolationshutdowntimeout 中指定的秒数内关机的虚拟机将被关闭电源。

注意 创建 vSphere HA 群集后,可以替代特定虚拟机的“重新启动优先级”和“隔离响应”的默认群集设置。此替代操作对于用于特殊任务的虚拟机很有帮助。例如,可能需要先打开提供基础架构服务(如 DNS 或DHCP)的虚拟机的电源,再打开群集内的其他虚拟机的电源。

如果主机禁用其隔离响应(即隔离时使虚拟机处于打开电源状态)且无法访问管理和存储网络,则可能发生“裂脑”情况。在这种情况下,即使虚拟机的原始实例仍在独立主机上运行,独立主机也会丢失磁盘锁且虚拟机会故障切换至另一主机。当主机摆脱隔离时,将会有两个虚拟机副本,尽管最初独立主机上的副本没有权限访问vmdk 文件进而避免了数据损坏。在 vSphere Client 中,虚拟机显示为在两个主机之间来回切换。为了从此情况中恢复,ESXi 会针对已丢失硬盘锁的虚拟机生成一个问题(关于主机何时摆脱隔离状态并认识到无法重新获取磁盘锁)。vSphere HA 将自动回答该问题,这就使已丢失磁盘锁的虚拟机实例关闭电源,只留下具有磁盘锁的实例。

 

 

选择“虚拟机监控”选项

 

p_w_picpath

 

如果在设置的时间内没有收到单个虚拟机的 VMware Tools 检测信号,虚拟机监控将重新启动该虚拟机。同样,如果没有收到虚拟机正在运行的应用程序的检测信号,应用程序监控也可以重新启动该虚拟机。可以启用这些功能,并配置 vSphere HA 监控无响应时的敏感度。

启用虚拟机监控后,虚拟机监控服务(使用 VMware Tools)将通过检查正在客户机内运行的 VMware Tools进程的常规检测信号和 I/O 活动来评估群集内的每个虚拟机是否正在运行。如果没有收到检测信号或 I/O 活动,则很有可能是客户机操作系统出现故障,或未分配给 VMware Tools 用来完成任务的时间。在这种情况下,虚拟机监控服务会先确定虚拟机已发生故障,然后决定重新引导虚拟机以还原服务。

有时,仍然正常工作的虚拟机或应用程序会停止发送检测信号。为了避免不必要的重置,虚拟机监控服务还监控虚拟机的 I/O 活动。如果在故障时间间隔内未收到任何检测信号,则会检查 I/O 统计间隔(群集级别属性)。I/O统计间隔确定在前两分钟(120 秒)内是否已发生与虚拟机有关的任何磁盘或网络活动。如果没有,则重置该虚拟机。可以使用高级属性 das.iostatsinterval 更改此默认值(120 秒)。

要启用应用程序监控,必须先获取相应的 SDK(或使用可支持 VMware 应用程序监控的应用程序),然后使用它来设置要监控的应用程序的自定义检测信号。完成此操作后,应用程序监控的工作方式将与虚拟机监控的工作方式大致相同。如果在指定时间内没有收到应用程序的检测信号,将重新启动其虚拟机。

您可以配置监控敏感度的级别。高敏感度监控可以更快得出已发生故障的结论。然而,如果受监控的虚拟机或应用程序实际上仍在运行,但由于资源限制等因素导致未收到检测信号,高敏感度监控可能会错误地认为此虚拟机发生了故障。低敏感度监控会延长实际故障和虚拟机重置之间服务中断的时间。请选择一个有效折衷满足需求的选项。

下表介绍了监控敏感度的默认设置。也可以通过选中自定义复选框来指定监控敏感度和 I/O 统计间隔的自定义值。

 

 

 

p_w_picpath

 

检测到故障后,vSphere HA 会重置虚拟机。重置可确保这些服务仍然可用。为了避免因非瞬态错误而反复重置虚拟机,默认情况下,在某个可配置的时间间隔内将对虚拟机仅重置三次。在对虚拟机执行过三次重置后,指定的时间结束之前,vSphere HA 不会在后续故障出现后进一步尝试重置虚拟机。可以使用每个虚拟机的最大重置次数自定义设置来配置重置次数。

 

进入“数据存储检测信号”选项:

 

p_w_picpath

 

存储心跳在管理网络失效时提供了另一种通信路径。优点是提供了另一层次的冗余并且允许在网络或主机失效时检测到失效。默认会选择两个数据存储。

 

三、 检验VMware HA的运作

 

(1)主机失效

 

这是物理主机发生故障时的切换操作,比较常见。比如主机掉电,主板故障等等。

测试前,我们可以看到,ESX02上运行有4台VM

 

p_w_picpath

 

随后将ESX02的电源拔掉,模拟主机故障。

 

p_w_picpath

 

如上图,显示ESX02无响应,检测到主机可能出现故障。

 

p_w_picpath

 

系统报警。

 

p_w_picpath

 

我们可以发现原本在ESX02上的VM自动在ESX01上启动了,主机HA实验成功。

 

p_w_picpath

 

这是切换时的记录下的事件。

 

 

(2)下面我们测试虚拟机监控(对VM的HA切换)

 

首先配置集群,选择“仅虚拟机监控”,保存配置。

 

p_w_picpath

 

查看Server2003-1主机的状态,如下图:

 

p_w_picpath

 

从控制台进入到测试的VM中,运行Not My Fault软件制造死机:

 

 

 

 

 

 

 

p_w_picpath

 

死机后大约过了1分钟,该虚拟机自动重新引导了

 

p_w_picpath

 

以下是故障发生时的报警:

 

p_w_picpath

 

至此,针对VM的HA切换也成功了。

 

 

(3)下面我们测试一下主机隔离响应

 

首先,除了management network以外,还应有第二个vmk(vmk1),并且默认网关一定要能ping通,当管理网络失效后,会通过vmk ping默认网关来识别自己是被孤立了还是仅仅是管理网络中断。

 

p_w_picpath

 

在我们的环境中Server2003-1在ESX02上,网卡连接在vm Network2上,ip为192.168.1.110.

下面我们开始,将ESX02的管理网络上行链路vmnic0拔掉,因为vmk1会去ping192.168.1.199,因此会作出相应的隔离响应策略,HA配置默认是保持虚拟机继续运行,因此Server2003-1的网络不会终端,我们一会用ping命令来验证效果。

拔掉ESX02的管理网络上行链路网线后,VC提示和主机ESX02通信出错:

 

p_w_picpath

 

随后显示ESX02和上面的虚拟机发生无响应和丢失,但是我们ping上面的虚拟机的IP却一直没有中断。

p_w_picpath

 

在ESX01上发现,ESX02上的虚机并没有在ESX01上重启

 

p_w_picpath

 

最后我们重新插上网线,ESX02恢复正常,发现Server2003-1依然在该主机上运行

 

p_w_picpath

 

小结

在集群中,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拥有冗余网络。

 

想更详细了解vSphere 5 HA,请查阅官网文档 “vSphere 可用性

http://pubs.vmware.com/vsphere-50/index.jsp?lang=zh_CN/topic=/com.vmware.ICbase/nl/zh/CN/PDF/ic_pdf.html