Neo4j:“拆分”集群中的主节点

时间:2014-02-23 20:40:37

标签: neo4j

与Neo4j 1.9.3 HA群集相关,我们的团队对主节点如果由于网络问题导致HA群集“分裂”时的行为有不同的解释。我们试图了解主节点以及主机无法向从机提供更新时发生的分支数据库的影响。

给定5节点部署,网络故障将事物分成两组/子集:

  • 组[A]由2个节点组成
  • 组[B]由3个节点组成

给定组的每个成员可以相互通信,但[A]不能与[B]通信。在拆分之前,原始主节点(5节点集群)存在于新的[A]或[B]组中。

问题:

如果原始主节点位于[A]内(即在群集节点的少数非仲裁组中),它是否会写入锁定其数据库(知道此时它是分支),直到它可以重新加入整个节点集群在哪个时候它会尊重[B]中新当选的主人(由于它有法定人数而能够选出一位新的主人)?

如果原始主节点存在于[B]内(即在群集节点的多数仲裁组中),它是否会继续允许写入其数据库,而[A]将被写入,因为它没有主节点?或者是[A]中选出的主人,即使它没有整个集群的法定人数?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

Neo4j群集中始终只有一个主人。由于群集知道大师选举所需的成员数量超过一半的法定人数。如果您所描述的方式存在分歧,则会发生以下情况:

  • 原始主人居住在少数民族分区A:主人将降级为奴隶并仅提供读取请求但不接受写入。分区B有一个法定人数,并将选出一个新的主人。解析分区后,以前的主服务器将继续作为从服务器工作。

  • 原始主人居住在多数分区B:主人继续成为主人,并将交易传播给B的其他成员。当分区得到解决时,A的前成员将赶上缺失的交易。