VMware vSphere中的HA工作原理介绍
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拥有冗余网络。
关于vmware 推荐的ha群集最佳做法:
主要是分设计群集,网络配置,网络冗余.
一关于设计群集:
1)将警报设置为监控群集更改
当 VMware HA 或容错执行可用来维护可用性的操作时(例如,虚拟机故障切换),我们需要系统通知我们
此更改。可以将 vCenter Server 中的警报触发设置配置为在执行操作或向指定的一组管理员发送警示(如,电
子邮件)时触发。
2)监控群集有效性
有效群集是尚未违反接入控制策略的群集。
当已启动的虚拟机数超过了故障切换需求,即当前故障切换容量小于所配置的故障切换容量,则已启用 VMware
HA 的群集将会变为无效(红色)。如果禁用了接入控制,则群集不会变为无效。
vSphere Client 中的群集的“摘要”页面显示群集的配置问题的列表。该列表说明了造成群集无效或过载(黄色)
的原因。
如果群集是由于 VMware HA 问题而变为红色的,则 DRS 行为不会受到影响。
3)检查群集的操作状态
群集或其主机可能会出现一些配置问题和其他问题,这会对 VMware HA 的正常运行产生负面影响。可以查
看“群集操作状态”屏幕来监控这些错误,能够从 vSphere Client 中群集的摘要选项卡的 VMware HA 部分访
问此屏幕。大家应该解决此屏幕上列出的所有问题。
二关于网络配置(维护):
下列网络维护建议可以帮助我们避免对由于丢失 VMware HA 检测信号而发生故障的主机和网络隔离的意外检测。
1)对群集 ESX/ESXi 主机所在的网络进行更改时,VMware 建议我们挂起主机监控功能。更改网络硬件或网络
设置会中断 VMware HA 用于检测主机故障的检测信号,并且这可能导致不必要的虚拟机故障切换尝试。
2)在 ESX/ESXi 主机上更改网络配置时(例如,添加端口组或移除 vSwitch),VMware 建议除了挂起主机
监控以外,还应将主机置于维护模式。
群集范围的网络注意事项
为了使 VMware HA 运行,群集内的所有主机都必须有兼容网络。添加到群集的第一个节点指明为了使所有后
续主机成为群集成员还必须拥有的网络。如果 IP 地址和子网掩码的组合生成的网络与其他主机的网络相匹配,
则将此网络视为兼容网络。如果尝试添加具有太多或太少管理网络的主机,或者要添加的主机具有不兼容的网络,
则配置任务将失败,而且“任务详细信息”窗格中将指定该主机不兼容。
例如,如果添加到群集的第一个主机有两个网络用于 VMware HA 通信,10.10.135.0/255.255.255.0 和
10.17.142.0/255.255.255.0,则所有后续主机必须配置相同的两个网络,并用于 VMware HA 通信。
网络隔离地址
网络隔离地址是要 ping 的 IP 地址,以确定主机是否与网络隔离。只有当主机已停止从群集内的任何其他主机
接收检测信号时才 ping 此地址。如果主机可以 ping 其网络隔离地址,则说明该主机并未与网络隔离,并且群
集内的其他主机已发生故障。但是,如果主机无法 ping 其隔离地址,则可能该主机已与网络隔离,并且不会
执行故障切换操作。
默认情况下,网络隔离地址是主机的默认网关。无论已定义了多少管理网络,都只指定了一个默认网关,因此,
应当使用 das.isolationaddress[...] 高级属性为其他网络添加隔离地址。
指定额外的隔离地址时,VMware 建议将 das.failuredetectiontime 高级属性的设置增加到 20000 毫秒(20 秒)
或更长时间。如果主机隔离响应是为了故障切换虚拟机(而非将其保持为启动状态),则从网络隔离的节点需
要时间释放其虚拟机的 VMFS 锁。必须在其他节点将该节点声明为故障节点之前进行此操作,以便当它们启动
虚拟机时,不会由于虚拟机仍然被此隔离节点锁定而收到错误。
其他网络注意事项
配置交换机。如果连接服务器的物理网络交换机支持 PortFast(或等效)设置,请将其启用。此设置可防止主
机在执行冗长的跨树算法期间误认为网络已被隔离。
主机防火墙。在 ESX/ESXi 主机上,VMware HA 需要并自动打开以下防火墙端口。
A 入站端口:TCP/UDP 8042-8045
B 出站端口:TCP/UDP 2050-2250
端口组名称和网络标签。在 VLAN 上使用一致的公用网络端口组名称和网络标签。端口组名称用于重新配置虚
拟机对网络的访问。如果在原始服务器和故障切换服务器间使用的名称不一致,虚拟机将在故障切换后中断网
络连接。虚拟机使用这些标签在重新启动时重新建立网络连接。
三网络路径冗余
群集节点之间的网络路径冗余对 VMware HA 可靠性非常重要。单个管理网络会最终成为单一故障点。
如果当我们只有一个管理网络,则主机和群集之间的任何故障都可能导致不必要的(错误的)故障切换情况。可
能的故障包括网卡故障、网络电缆故障、网络电缆移除和交换机重置。考虑主机可能导致故障的上述原因,然
后尝试减少这些问题(通常通过提供网络冗余来实现此目的)。
可以使用网卡绑定在网卡级别或在管理网络级别实现网络冗余。在大多数实现中,网卡绑定可以提供足够的冗余,
但如果需要,可以使用或增加管理网络冗余。冗余管理网络可以可靠地检测故障并防止出现隔离的情况,因为
检测信号可以通过多个网络发送。
在群集内的服务器之间尽量少配置硬件分段,目的是为了限制单一故障点。此外,跃点过多的路由可能会导致
检测信号的网络数据包延迟,并增加潜在的故障点数目。
使用网卡绑定的网络冗余
如果用两个连接到不同物理交换机的网卡组成一个网卡组,则可以提高管理网络的可靠性。因为通过两个网卡
(并且通过单独的交换机)连接的服务器具有两条独立的路径来发送和接收检测信号,所以群集具有更好的弹性。
要为管理网络配置网卡组,请在活动或待机配置的 vSwitch 配置中配置 vNIC。推荐的 vNIC 参数设置如下:
A默认的负载平衡 = 基于源虚拟端口 ID 的路由
B 故障恢复 = 否
在为 VMware HA 群集内的主机添加网卡后,必须在该主机上重新配置 VMware HA。
使用辅助网络的网络冗余
除了使用网卡绑定提供检测信号冗余之外,还可以创建一个辅助管理网络连接,并将其连接到一个单独的虚拟
交换机上。主管理网络连接用于网络和管理。辅助管理网络连接创建之后,VMware HA 会同时通过主管理网
络连接和辅助管理网络连接发送检测信号。如果一条路径发生故障,VMware HA 仍可通过另一条路径发送和
接收检测信号。