我有两个节点主动-被动集群。
如果集群分裂为两个(或更多)组节点,而这些节点无法再相互通信(也称为分区),则可以使用仲裁来防止资源在多于所需的节点上启动,这将带来数据损坏的风险。当超过一半的已知节点在同一分区中在线时,集群具有法定人数
根据上面的定义,双节点集群只有在两个节点都运行时才具有仲裁。这将使创建两节点集群毫无意义,但 corosync 能够将两节点集群视为仲裁只需要一个节点。 pcs cluster setup 命令将自动在 corosync.conf 中配置two_node: 1,因此两节点集群将“正常工作”。
这是我的配置:
那么集群现在如何决定哪一个拥有法定人数呢?
答案1
没有决定:
两个节点:1
启用两个节点集群操作(默认值:0)。
“双节点集群”是一个需要特别考虑的用例。对于标准的两节点集群,每个节点只有一票,集群中有 2 票。使用简单多数计算(50% 的选票 + 1)来计算法定人数,法定人数将为 2。这意味着两个节点必须始终处于活动状态,集群才能法定并运行。
启用two_node: 1,quorum被人为设置为1。
以上内容来自于votequorum 的手册页(或在第 5 节中本地获取)。
还有相关的:
它的工作方式是,如果发生网络中断,两个节点都会竞相尝试互相隔离,第一个成功的节点将继续在集群中运行。系统管理员还可以将延迟与隔离代理关联起来,以便在这种情况下可以赋予一个节点优先权,使其始终赢得比赛。
也可以看看:Corosync 2 中的新仲裁功能作者:克里斯汀·考尔菲尔德