![失去网络连接时 hyper-v 群集的行为](https://linux22.com/image/531591/%E5%A4%B1%E5%8E%BB%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E6%97%B6%20hyper-v%20%E7%BE%A4%E9%9B%86%E7%9A%84%E8%A1%8C%E4%B8%BA.png)
设置:
- (相当新)Hyper-V R2 集群,有 2 个节点(在故障转移配置中)。物理主机操作系统:Windows Server 2008。
- 大约 8 台虚拟机(混合:Windows Server 2008 和 Linux)
昨天我们停电了大约 15 分钟。
我们的刀片服务器使用 UPS,因此物理主机 (Windows Server 2008) 从未出现故障。我们的主交换机尚未使用 UPS,我们看到了与以下类似的行为(从事件日志中提取)。
- 集群中的节点失去了通信手段(因为外部交换机发生故障)。
- 集群想要关闭其中一个
first
节点(以启动故障转移?)。 - 上一步会影响虚拟机 VHD 所在的集群存储。
- 所有虚拟机都被无情地终止,并在主机操作系统的故障转移管理器中被发现处于故障状态。Linux 虚拟机出现内核恐慌,看起来好像磁盘被扯掉了。
整个设置对于我们来说相当新颖,所以我们仍在学习。
问题:
我们很快就会在 UPS 上安装开关,但想知道上述情况是否是预期的行为(似乎相当脆弱)或者是否有明显的配置改进来处理这种情况?
如果有必要的话,我可以上传一个evtx
有关到底发生了什么事情的文件。
答案1
这种行为最可能的解释与仲裁配置有关。请查看http://technet.microsoft.com/en-us/library/cc731739.aspx。
基本上,当您的网络交换机发生故障时,两个节点就会彼此失去通信。此时,两个节点都不知道另一个节点在做什么。如果一个节点决定接管所有集群资源(即虚拟机)并启动它们,谁能保证另一个节点不会做同样的事情?您最终会陷入这样一种境地:两个节点都试图完全接管全部虚拟机,那么您的硬盘就会出现非常严重的损坏。
仲裁配置解决了这个问题,它规定节点要想运行,必须与大多数节点(以及磁盘或文件共享)保持联系。如果做不到这一点,它将停止作为集群成员运行。
要验证是否如此,请打开故障转移群集管理器并检查群集摘要页面上的“仲裁配置”。如果节点多数并且您有偶数个节点,那么我所描述的几乎肯定就是发生的事情。
解决方案是设置一个小磁盘,称为磁盘见证(50 MB 足够了),并将其添加到集群的存储中(但不是集群共享卷)。然后,将仲裁配置更改为节点和磁盘多数。使用此设置,如果您遇到与之前相同的故障,则故障时拥有磁盘所有权的节点将继续运行(并且实际上将从另一个节点接管所有资源的所有权),而另一个节点将停止运行。故障转移到运行节点的虚拟机将经历残酷的重启,但至少它们会尽快上线。
正如您所说,理想的情况是将交换机也安装在 UPS 上。这样可以完全避免故障;但是,您还应确保使用针对您拥有的节点数推荐的仲裁配置。