了解仲裁对系统行为的影响

SplitSite系统中的仲裁服务器会改变系统的可用性和恢复行为。要了解仲裁对系统行为的影响,您首先需要了解系统在没有仲裁服务器时的行为。

先决条件首先阅读创建SplitSite配置并按照其说明操作,计划和创建 SplitSite 配置(如果尚未这样做)。

everRun系统旨在为一个或多个客人 VM 提供高可用性,这可使这些 VM 即使在发生将导致应用程序停机的故障期间也能继续运行。例如,即使在失去单个网络连接、一块硬盘甚至整个计算机的情况下,everRun系统也能够继续运行客人 VM。

但如果发生更多灾难性故障(例如,所有可能的网络路径均中断),everRun系统将尝试确定整个系统的整体状态。然后,系统会采取必要的行动来保护客人 VM 的完整性。

以下示例说明了在灾难性故障期间系统的过程。

示例 1:无仲裁服务器的系统遇到脑裂情况

在这个 SplitSite示例中,everRun 系统包含 node0 和 node1,但不包含仲裁服务器。操作正常;当前没有检测到任何故障。这两个节点通过 A-Link 连接传达它们的状态和可用性,就像它们在正常(无故障)操作期间那样。下图显示了正常连接。

灾难性故障

一个粗心的叉车操作员将墙撞穿了,切断了所有网络连接(业务和 A-Link),同时供电仍未中断并且系统正在运行。下图显示了故障情况。

故障处理

这两个节点按照以下方式处理故障:

从应用程序客户端或外部观察者的角度来看,这些客人 VM 均处于活动状态,并且生成具有相同返回地址的网络消息。这两个客人 VM 均生成数据并看到不同数量的通信故障。这些客人 VM 的状态随时间而变得更加不同。

恢复和修复

一段时间后,网络连接恢复:修好了墙壁并更换了网络电缆。

当 AX 对的每个 AX 均意识到其配对节点重新联机时,具有故障处理程序规则的 AX 对选择继续处于活动状态的 AX。该选择是不可预测的,并且对于在脑裂情况下哪个节点的性能更准确没有任何考虑。

活动节点的重新同步覆盖了从(现在)备用节点生成的数据,因此(现在)备用节点上的数据永久丢失。

在脑裂情况下,系统需要几分钟的时间进行重新同步,这取决于需要将多少磁盘活动发送到备用节点。如果多个客人 VM 正在使用不同的活动节点运行,则可能在两个方向上发生同步流量。

注意在某些情况下,everRun系统可能无法确定在发生灾难性故障后继续运行的最佳方式。在这种情况下需要恢复系统。建议的恢复方法是使用everRun Availability Console来关闭并重启一个节点,而另一个节点继续运行。此方法一般会强制正在运行的节点成为主节点,并且该节点上的 AX 变为活动状态。当正在运行的节点变为主节点后,可启动另一个节点。 如果重新同步已经在进行,不要关闭任何一个节点。

示例 2:具有仲裁服务器的SplitSite系统可避免脑裂情况

在这个 SplitSite示例中,everRun 系统包含 node0 和 node1,它们的连接与示例 1 中系统的连接相同。此外,示例 2 中的系统还包含仲裁服务器。下图显示了这些连接。

灾难性故障

那个粗心的叉车操作员又将墙撞穿了,切断了所有网络连接,同时供电仍未中断并且系统正在运行。下图显示了故障情况。

故障处理

这两个节点按照以下方式处理故障:

注意如果 node1 AX 先前未处于活动状态,并且客人 VM 是 HA VM,则 node1 上的客人 VM 可能需要从 node1 的硬盘驱动器启动。在这种情况下,当客人 VM 启动时,应用程序会经历短暂的停机。(FT VM 继续运行。)

从应用程序客户端或外部观察者的角度来看,node1 上的客人 VM 保持活动状态,并且在 node0 上的 VM 关闭时生成数据。不存在脑裂情况。

恢复和修复

一段时间后,网络连接恢复:修好了墙壁并更换了网络电缆。

当 node1 AX 意识到其配对节点重新联机时,node0 AX 变为备用节点。由于 node0 先前未运行,因此从 node1 开始将数据同步到 node0。

由于没有发生脑裂情况,因此数据未丢失。

系统需要几分钟进行重新同步,这取决于需要将多少磁盘活动发送到备用节点。

示例 2,已修改:在灾难性故障期间仲裁服务器不可及

在具有仲裁服务器的SplitSite系统中,当灾难性故障切断所有网络连接时,仲裁服务器可能脱机或不可及,但供电仍未中断且系统仍在运行。下图显示了仲裁服务器为脱机状态的这种情况下的系统。

故障处理类似于示例 2 的故障处理,对于 node1 而言有一个重要区别:

node1 AX 也检测到两个 A-Link 中断,但 ibiz0 仍可用。node1 AX 尝试联系仲裁服务器,但通信失败。此 AX 终止了客人 VM。

在这种情况下,客人 VM 在 node0 和 node1 上均关闭,从而防止发生脑裂。折衷方法是在恢复与 node0 或仲裁服务器的连接前,客人 VM 不可用。

在这种情况下,确定您不想运行的节点并将其关闭。然后,强制启动您想要运行的节点,之后强制启动 VM。有关关闭 VM 然后启动它的信息,请参阅管理虚拟机的运行。)

示例 2,已修改:在无灾难性故障时仲裁服务器不可及

在某些情况下,即使没有发生灾难性的物理故障,仲裁服务器也可能不可及。一个示例是当重启仲裁计算机进行例行维护时,例如应用 OS 补丁。在这些情况下,AX 检测到仲裁服务无响应,因此 AX 会暂停同步流量,直至恢复与仲裁服务器的连接为止。当连接中断时,客人 VM 继续在处于活动状态的节点上运行。但由于可能会发生其他故障,此客人 VM 不移到备用节点。恢复仲裁服务后,只要保持与仲裁服务器的连接,AX 就会继续进行同步和正常故障处理。

从电源故障中恢复

如果在断电或系统关闭后重启系统,everRun系统将在启动任何客人 VM 前无限期等待其配对系统启动并在做出响应。如果先前处于活动状态的 AX 能够联系仲裁服务器,则该 AX 会立即启动客人 VM,不等待其配对节点启动。如果先前备用的 AX 首先启动,则它会等待其配对节点。

如果系统收到来自配对节点或仲裁服务器的响应,则系统将继续正常运行,并且 VM 将启动,这需要遵守在其他情况下适用的相同故障处理程序规则。

如果系统未收到来自仲裁服务器的响应,或者系统没有仲裁服务器,则必须强制启动客人 VM,这会覆盖 AX 或故障处理程序做出的任何决定。您必须确保两个人没有在 node0 和 node1 上强制启动同一客人 VM。无意中这样做会导致脑裂情况。