资源池开启HA后主机保护机制分析

在前端时间曾今写过一篇文章分析过XenServer Resources Pool中开启HA机制后,导致的主机重启,Citrix称之为Host Fencing,也就是所谓的主机保护机制,用于确保存储中VM数据的安全性,具体参考另外一篇文章:XenServer Host Self-fense(主机保护)

今天发现了关于在HA情况下,当发生心跳丢失或者管理口连接丢失情况下究竟哪台主机会重启的官方说明。

在前一篇文章我们已经分析过了大多数情况下:

  • 存储心跳正常,但是管理口通信异常。此时,网络正常和网络异常的主机基本分为两组,数量较少的一组将self-fence。
  • 存储心跳异常,但是管理口通信正常。此时,hosts将在pool中检查各主机之间通信是否正常,如果全部OK,那么xenserver认为是心跳存储异常。

这个针对的是资源池中至少有三台主机,在HA的两种检测机制中有任何一种机制异常,能够在Pool中分出两组数量不同的主机来,此时,主机数较少的一组将会重启。

而如果是两台主机怎么办?

此时,XenServer会比较两台主机的UUID,UUID较大的一台主机讲会Host fencing,从而重启,不管VM是否运行在该主机上。

因为这种机制,如果VM运行在UUID较大的一台主机上,而发生故障的是UUID较小的主机时候,就会由于UUID较大主机的重启,从而导致业务的中断,所以为了尽可能的避免该情况,推荐资源池中主机的数量至少为3台,从而避免主机由于UUID的大小而导致错误的进入重启流程。