OPTIONS
翻译或纠错本页面

配置一个不参与投票的节点

不参与投票的节点可以让我们在最大7个投票节点的基础上进行扩容。我们可以通过将 votes 设置为 0 来配置不参与投票的节点。

例子

为由四/五/六个节点组成的复制集设定不参与投票节点可以在主节点的 mongo 中通过如下的命令来设定。我们可以通过 members 的数组下表来定位我们需要的节点:

cfg = rs.conf()
cfg.members[3].votes = 0
cfg.members[4].votes = 0
cfg.members[5].votes = 0
rs.reconfig(cfg)

这些命令将 rs.conf() 输出中复制集 members 数组中的第四个,第五个,第六个节点的选票设置为 0 。这样的设置让这些节点可以在选举中升职为 primary 但是却步允许其参与投票。确保主节点能够与参与投票的大多数节点正常通讯。

当更新修改复制集配置的时候,我们通过 members数组下标 (array index)来指定需要修改的节点。数组下标从 0 开始。不要将数组下标与 members 中的 _id 字段混淆了。

警告

  • The rs.reconfig() shell method can force the current primary to step down, which causes an election. When the primary steps down, the mongod closes all client connections. While this typically takes 10-20 seconds, try to make these changes during scheduled maintenance periods.
  • 为了能让复制集的配置修改成功应用,我们需要确保复制集的多数节点是可用的。如果我们的复制集是由偶数个节点组成的,那就需要新增一个 arbiter 来确保选举的正常进行。

如果可能的话,每个节点都应该拥有一票选举票。这样可以防止选举僵局,死锁或是避免不当的节点成为主节点。通过 priority 参数来设置各个节点成为主节点的优先级。