网站搜索

什么是 QUORUM 磁盘和击剑战争?


嗨伙计。这次我想详细回答我们的一位读者(Danielle)在评论中提出的问题,因为当你负责维护一个集群环境时,你可能也遇到过这个问题。

以下是丹尼尔·贝洛提出的问题。

“ 我有一个问题:我尝试在虚拟环境中设置围栏虚拟设备,但它对我不起作用,在我的配置的某些部分中,节点在发生故障后不会返回集群。所以我添加了一个仲裁磁盘,最后我的集群工作正常(节点宕机,故障后又回到集群),所以我的问题是:虚拟中的fence设备和仲裁磁盘有什么区别环境? ”

您可以参考下面我们之前的 Clustering 系列文章来了解什么是 fencing 设备。

  1. 隔离并向集群添加故障转移 – 第 3 部分

首先我们来看看什么是仲裁磁盘。

什么是仲裁磁盘?

仲裁磁盘是集群配置的存储类型。它就像一个数据库,保存与集群环境相关的数据,仲裁磁盘的职责是通知集群哪些节点要保持ALIVE状态。它允许从所有其他节点并发访问它以读取/写入数据。

当节点(可以是一个节点或多个节点)之间的连接断开时,仲裁会隔离没有连接的节点,并保持服务在其拥有的活动节点上正常运行。它将使没有连接的节点从集群中停止服务。

现在我们来回答这个问题。这看起来像是一个具有2 个节点的环境,其中一个已出现故障。 Danielle面临的情况看起来像是活跃两个节点之间的“击剑战争”。

考虑有一个集群环境,其中没有将仲裁磁盘添加到配置中。该集群有2 个节点,当前有一个节点出现故障。在这种特定场景中,节点 1节点 2 之间的连接完全丢失。

然后节点 1 发现节点 2 已发生故障,因为它无法与其建立连接,并且节点 1 决定隔离节点 2 。同时,节点 2 发现节点 1 已发生故障,因为它无法与其建立连接,并且节点 2 决定隔离节点 1 也是如此。

由于节点 1 已隔离节点 2,因此它接管了集群中的服务和资源。由于节点2中没有仲裁磁盘来验证这种情况,并且节点2可以重新启动服务器中的所有服务,而无需与节点1建立任何连接强>。

正如我之前提到的,节点 2 也屏蔽节点 1,因为它看不到从节点 2节点 1 的任何连接> 接下来发生的事情是节点 1 重新启动服务器中的所有服务,因为也没有法定人数来检查节点 1 的状态。

这被确定为击剑战争

现在这个循环将永远持续下去,直到工程师手动停止服务或关闭服务器或节点之间成功建立网络连接。这就是仲裁磁盘可以提供帮助的地方。仲裁配置中的投票过程是防止上述循环发生的机制。

概括 :

  1. 为了数据和服务的安全,集群环境无处不在,为最终用户提供最大的正常运行时间和实时数据体验。
  2. 栅栏设备用于集群环境中,以隔离其他节点不知道其状态的节点。集群将使用隔离设备自动隔离(删除)故障节点并保持服务正常运行并启动故障转移过程。
  3. 在集群环境中,仲裁磁盘并不是必需的,但最好在 2 节点集群中拥有一个仲裁磁盘,以避免栅栏战争。
  4. 在有超过 2 个节点的集群中拥有仲裁磁盘不是问题,但在这种特定环境中发生围栏战争的可能性较小。因此,在 3 或更多节点集群中拥有仲裁磁盘并不比在 2 节点集群中拥有仲裁磁盘重要。
  5. 顺便说一下,在多节点集群环境中最好有一个仲裁磁盘,这样您就可以在节点之间执行用户自定义的健康检查。

重要:请记住,向仲裁添加节点是有限制的。您最多可以向其中添加 16 个节点

希望您喜欢这篇文章。与 howtoing 保持联系以获得更方便的 Linux 技术指南。