什么是“脑裂”以及如何避免它
正如我们所讨论的,在一个高可用性集群环境中有一个活动节点和一个或多个备用节点,当活动节点发生故障或停止响应时,它们将接管服务。
在考虑节点之间的网络层之前,这听起来像是一个合理的假设。 如果节点之间的网络路径出现故障怎么办?
任何一个节点现在都不能与另一个节点通信,在这种情况下,备用服务器可能会在它认为活动节点发生故障的基础上将自己提升为活动服务器。 这导致两个节点都变得“活跃”,因为每个节点都会认为另一个节点已经死了。 结果,数据完整性和一致性受到损害,因为两个节点上的数据都会发生变化。 这被称为“裂脑” .
为避免出现脑裂情况,应在集群中安装 Quorum 节点(也称为“见证人”)。 添加仲裁节点(到由偶数个节点组成的集群)会创建奇数个节点(3、5、7 等),节点投票决定哪个应该充当集群中的活动节点。
在下面的示例中,包含节点 B 的服务器机架丢失了局域网连接性。 在这种情况下,通过在集群环境中添加第 3 个节点,系统仍然可以确定哪个节点应该是活动节点。
Quorum/Witness 功能包含在西欧保护套件。 安装时,在所有节点(不仅是仲裁节点)上选择 Quorum / Witness,并在所有节点(包括仲裁节点)之间定义通信路径。
仲裁节点不托管任何活动服务。 它的唯一作用是参与节点通信,以确定哪些是活动的,并在通信中断的情况下提供“平局投票”。
西欧也支持IO 防护和存储作为仲裁设备,在这些配置中不需要额外的仲裁节点。