调整副本集节点的优先级
概述
副本集节点的priority
设置会影响主要选举的时间和结果。优先级高的节点更有可能发起选举,也更有可能获胜。使用此设置可确保某些节点更有可能成为主节点,而其他节点永远不会成为主节点。
节点 priority
设置的值决定了节点的priority
参选。数字越大,优先级越高。
注意事项
要修改优先级,请更新members
副本配置对象中的数组。数组索引以 0
. 不要将此索引值与数组中副本集节点字段的值混淆members[n\]._id
的值可以是和priority
之间的任意浮点数(即十进制)。该字段的默认值为。0``1000``priority``1
要阻止节点寻求选举为主节点,请为其分配优先级0
。隐藏节点和 延迟节点已 priority
设置为0
。
仲裁者优先0
。
在计划的维护窗口期间调整优先级设置。重新配置优先级可以强制当前的主节点下台,从而导致选举。在选举之前,主节点关闭所有打开的 客户端连接。
优先权和投票
members[n\].priority
并且members[n\].votes
有如下关系:
因此,增加非投票节点需要*设置并增加投票副本集节点的数量。在增加无投票权节点的优先级之前,请考虑以下事项:priority
votes
1
- MongoDB 副本集最多可以有 7 个有投票权的节点。如果副本集已经有 7 个投票节点,则不能将副本集中任何剩余节点的优先级修改为大于
0
。 - 从 MongoDB 4.4 开始,副本重新配置一次只能添加或删除一个投票节点。要将多个非投票节点的优先级更改为大于
0
,请发出一系列replSetReconfig
orrs.reconfig()
操作以一次修改一个节点。有关详细信息,请参阅 重新配置一次最多只能添加或删除一个投票节点。
程序
WARNING
- shell 方法可以强制当前
rs.reconfig()
primary 下台,从而导致选举。当主要步骤关闭时,mongod
关闭所有客户端连接。虽然这通常需要 10-20 秒,但请尝试在计划的维护期间进行这些更改。- 避免重新配置包含不同 MongoDB 版本成员的副本集,因为验证规则可能因 MongoDB 版本而异。
将副本集配置复制到一个变量。
在mongosh
,用于rs.conf()
检索副本集配置并将其分配给变量。例如:
cfg = rs.conf()
更改每个节点的优先级值。
按照数组中的配置更改每个节点的members[n].priority
值。members
cfg.members[0].priority = 0.5
cfg.members[1].priority = 2
cfg.members[2].priority = 2
此操作序列修改 的值以设置数组cfg
中定义的前三个节点的优先级 。members
3个
为副本集分配新配置。
用于rs.reconfig()
应用新配置。
rs.reconfig(cfg)
此操作使用 的值定义的配置更新副本集的配置cfg
。
← Member Configuration TutorialsPrevent Secondary from Becoming Primary →
原文链接 - https://docs.mongodb.com/manual/tutorial/adjust-replica-set-member-priority/
译者:陆文龙