HA的基本工作过程

VI3的HA为处于同一个HA Cluster中的ESX服务器提供互相检测的功能.
一旦一台ESX服务器被确认为故障. 则剩余正常的ESX服务器会启动原来在故障ESX上运行的VM, 从而提供VM一级的高可用性.
ESX之间互相检测是由心跳(heartbeat)来完成的.
心跳的传输在Service Console Network上进行. 当一台ESX没有接收到来自其他服务器的心跳信号, 有两种可能性:
1. 是其它ESX服务器发生了故障,
2. 是本机的网络连接 (指Service Console Network) 发生故障, 也称为被孤立(Isolation) 为了区分这两种情形, ESX会试图PING一个网络地址, 并以能否收到应答来确定本机是否被孤立. 这个网络地址一般默认为SC的网关. 你也可以在HA的高级选项中重新设定(加选项: das.isolationaddress). 如果ESX认为自己被孤立, 默认的动作是它Power-Off(不是安全Shutdown)在该ESX上运行的所有VM.
这样做的目的是释放对那些VM的盘文件的锁定, 以便其他正常的ESX服务器可以接管对这些VM的控制. 如果ESX认为是其他的ESX故障, 它则会启动原来在故障ESX上运行的VM.
这个过程中有几个比较重要的时序 (有的用户找到一些更详细的数据, 但未经VMWARE证实): 在ESX停止接受到心跳的12秒后, 如果它认自己已被孤立, 既POWER-OFF自己的VM.
正常ESX在停止接到故障ESX的15秒后, 开始启动原来在故障ESX上运行的VM.
这个时间差有可能导致混乱: 比如发生网络故障的ESX在第12秒POWER-OFF VM.
如果网络在15秒之前恢复, 正常运行的ESX并不启动在曾经发生网络故障的ESX上的VM,
尽管故障ESX已将那些VM POWER-OFF了. 还有一种称为脑裂的情况, 在两节点的CLUSTER中很常见:
假设ESX1崩溃, ESX2失去来自ESX1的心跳. 这时候它并不知道是被孤立了还是ESX1出现故障,
于是它要靠PING指定的网络地址来做判断. 如果该网络地址设置的不好. PING 失败的话,
ESX2会以为自己是被孤立了, 这时候它不但不启动原来在ESX1上的VM,
而且还可能按默认设置将自己的VM也POWER-OFF.

建国大业  发表于: 2009-09-28

我要回答

电子邮件地址不会被公开。 必填项已用*标注

敬请读者进行回答,本站保留删除与本问题无关和不雅内容的权力。