一、背景介绍
某企业在成生产环境中使用8台Esxi5.1物理服务器和1台vCenter5.1物理服务器组虚拟化平台,拓扑如下图所示,为了验证平台故障发生时的高可用性,计划分别对2台Esxi物理主机采取拔电源线和拔网线的方式模拟主机和网络故障,由于vCenter是物理主机,所以不用考虑vCenter与集群中Master主机同时挂掉的情况,且主机断电故障情景简单(vmware HA细节可参考文章http://arkling.blog.51cto.com/2844506/1722470),本处只讨论网络故障时vmware HA的场景
二、准备工作
1.在模拟故障发生前首先确认集群HA功能是否启用,否则高可用就是空谈
2.在要进行模拟故障的目标Esxi物理主机上确认主机监控已开启,否则故障发生时不会进行切换
3.确认目标Esxi物理主机上的VM虚拟机已受到vSphere HA保护
三、网络故障场景详细介绍
vSphere 5以后的版本HA的判断除了需要共享存储外,还需要网络心跳(管理网络)、隔离网关和存储心跳(存储网络)。本次由于没有详细说明模拟网络故障具体切断的网络,所以需要将每种情况都考虑进去,于是网络层面故障造成的结果就分为:主机分区(管理网络故障)和主机隔离(管理网络和隔离网关同时故障)
1.主机分区
集群中部分host主机无法通过管理网络与Master通信,但隔离网关(host主机通过管理网络与隔离网关通信)和存储心跳通信正常,此时就会触发主机分区。这种场景下被分区的host主机和位于其上的VM虚拟机此时对外仍然正常提供服务,HA不会做任何操作。此时集群会变为下图所示的这种情况:
虚拟机保护:vCenter允许虚拟机打开电源,但仅当虚拟机与负责它的首选主机在相同的分区中运行时,才能对其进行保护
集群管理:vCenter只能与群集中的部分host主机进行通信,且只能连接到一台首选主机。因此,只有在解决分区之后,配置中影响 vSphere HA的更改才能生效。此故障可能会导致其中一个分区在旧配置下操作,而另一个分区使用新的设置
2.主机隔离
集群中部分host主机丢失网络心跳和隔离网关,只与存储网络通信正常,此时就会触发主机隔离。此时集群会变为下图所示的这种情况:
被隔离的host主机和位于其上的VM虚拟机此时对外无法正常提供服务,HA会按照预先设置好的策略执行,每个VM虚拟机还可以自定义各自的启动优先级和隔离响应策略
以下对这两个策略进行详细介绍:
重启优先级:定义了当故障发生时,VM虚拟机重启的先后顺序,策略由低到高分为 禁用——低——中等——高 4个选项,缺省的配置重启优先级为中等
主机隔离相应:定义了当VM虚拟机所在的host主机被隔离时,位于其上的VM虚拟机所执行的操作,有保持电源打开、关闭电源和关机三个选择,缺省的主机隔离响应策略为保持电源打开
四、故障切换测试
针对主机隔离响应和虚拟机重启优先级这两个策略产生的不同结果如下所示:
场景1:该场景下不进行故障切换,虚拟机会一直等待网络恢复正常,此时只是host主机无法与Master主机和隔离网关进行通信,业务网络可能是正常的,即VM虚拟机可以正常对外提供服务,不必要因为网络的故障而重启虚拟机
名称 |
虚拟机重启优先级 |
主机隔离响应 |
状态 |
低/中等/高 |
保持打开电源 |
场景2:该场景下不会进行故障切换,虚拟机一直保持打开电源状态,即使主机隔离响应选择的是关机或关闭电源。如果选择“禁用”,则会为虚拟机禁用vSphere HA,这意味着当其主机出现故障时不会在其他ESXi主机上重新启动虚拟机
名称 |
虚拟机重启优先级 |
主机隔离响应 |
状态 |
禁用 |
保持打开电源/关机/关闭电源 |
场景3:该场景下被隔离主机上承载的虚拟机会进行关机操作,并在集群内其他未隔离的物理主机上重启,继续对外提供服务。要求VM虚拟机必须安装vmware tools(经测试未安装的VM虚拟机也可以完成关机,但还是按照官方解释为准)
名称 |
虚拟机重启优先级 |
主机隔离响应 |
状态 |
低/中等/高 |
关机 |
场景4:该场景下被隔离主机上承载的虚拟机会进行关闭电源操作,并在集群内其他未隔离的物理主机上重启,继续对外提供服务。与关机不同处在于,关机操作会先将内存中的数据写入硬盘,而关闭电源相当于直接拔掉电源,内存中的数据会丢失
名称 |
虚拟机重启优先级 |
主机隔离响应 |
状态 |
低/中等/高 |
关闭电源 |
五、补充说明
1.裂脑情况的产生
如果主机禁用其隔离响应(即隔离时使虚拟机处于打开电源状态)且无法访问管理和存储网络,则可能发生“裂脑”情况。在这种情况下,即使虚拟机的原始实例仍在独立主机上运行,独立主机也会丢失磁盘锁且虚拟机会 故障切换至另一主机。主机能够重新访问虚拟机的数据存储时,将会有两个虚拟机副本,但原来独立主机上的副本无权访问vmdk文件,这样便避免了数据损坏(实际测试中没有出现裂脑的情况,不确定可能的几率有多大)
2.虚拟机和应用程序监控
vSphereHA的虚拟机/应用程序监控功能会忽略虚拟机重启优先级中“已禁用”设置,因为该功能可保护虚拟机免受操作系统级别故障而不是虚拟机故障。当出现操作系统级别故障时,vSphereHA将重新引导操作系统,而虚拟机则在同一台主机上继续运行