MongoDB分片,仲裁和集群设置

时间:2014-10-03 09:45:42

标签: mongodb cluster-computing sharding

有人可以帮助验证我们的设置

设置4节点MongoDB集群 1个主要(写入),3个辅助(读取)如果主要关闭,3个辅助可以打破平局并选择次要到主要

  1. 此设置是否有效?
  2. 是这种情况下需要的仲裁者吗?
  3. 一旦我在开始时以这种方式进行设置,那么当负载增加时,我需要做的就是继续成对地添加节点到集群。 (成对添加节点将有助于我们跟上性能并降低群集更改的频率,同时我们读取的内容比写入更多,在某些时候我们还必须考虑扩展写入)

    非常感谢帮助。

    感谢。

1 个答案:

答案 0 :(得分:0)

是的,需要仲裁者,否则如果2个节点出现故障或者不可用,则不会有主节点 - MongoDB需要严格多数(> 50%)的选票才能选出主节点,在您的情况下大多数是4分中的3分(4分中有2分不大于50%)。如果你添加一个仲裁器,那个数字仍然是3,但是你可以让一个主节点有2个数据承载节点。

至于为什么,请考虑以下可能性:

2个节点与其他2个节点隔离 - 它们仍处于运行状态,但无法相互通信。现在有两张选票和#34;分裂"并没有办法打破平局 - 每一方在主要投票方面同样有效,如果没有严格的多数规则,你最终会得到2个初选,并且一旦拆分自行解决,就无法解决写入问题。在分割的任一侧添加仲裁器,您就没有这种歧义。

这种情况有多种排列,当票数甚至是我不会进入这里时。可以说运行副本集时的最佳做法是始终拥有奇数票数,从而避免出现这些情况。