Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

副本集投票节点

在此页面上

  • 发布版本注意事项
  • PSA 副本集的性能问题
  • 分片键、交易和仲裁器
  • 有关多个仲裁节点的问题
  • 安全性
  • 例子

在某些情况下(例如,当您有主节点和从节点,但成本限制禁止添加其他从节点时),您可以选择向副本集添加投票节点。仲裁器参与 主节点的选举,但仲裁器没有数据集的副本,因此无法成为主节点。

仲裁节点正好有1 张选举票。默认情况下,仲裁节点具有优先级0

重要

不要在同时托管副本集主节点或从节点的系统上运行投票节点。

警告

如果承载数据的从节点不可用,则在分片分片集群中对分片使用从节点(secondary node from replica set)节点-从节点-仲裁节点 (PSA)架构可能会导致可用性丧失。 PSA集群与典型的副本集不同:在分片分片集群中,分片执行w: majority写关注(write concern)操作,如果确认操作所需的剩余集群节点具有仲裁节点,则这些操作无法完成。

要添加仲裁节点,请参阅将仲裁节点添加到自管理副本集。

季度快速发布不支持仲裁节点。如果您的部署包含仲裁节点,请仅使用 LTS 版本。

如使用主节点-从节点-仲裁节点 (PSA) 三成员架构,请考虑以下因素:

  • 如果从节点不可用或滞后,写关注 "majority" 可能会导致性能问题。有关如何缓解这些问题的建议,请参阅缓解自管理 PSA 副本集的性能问题

  • 如果使用的全局默认值 "majority",并且写关注小于大多数的大小,则您的查询可能会返回过时(未完全复制)的数据。

如果副本集具有仲裁节点节点,则无法使用ACID 事务更改分分片键。 仲裁节点无法参与多分片事务所需的数据操作。

如果任何事务操作读取或写入包含仲裁节点的分片,则写入操作跨越多个分片的事务将出现错误并中止。

使用单个仲裁节点避免数据一致性问题。多个仲裁节点会使多数写关注的使用不可靠。

为了确保在主节点发生故障后写入仍能持续,多数写关注需要多数节点确认写入操作。仲裁节点不存储数据,但确实会影响副本集中的节点数。当副本集具有多个仲裁节点时,多数承载数据的节点在出现节点故障后依然可用的可能性较低。

警告

如果从节点落后于主节点,并且集群为 reconfigured,则多个仲裁节点的投票可能选出落后的节点。新的主节点不会有未复制的写入,即使是旧配置可能已多数提交的写入。结果是数据丢失。

为避免这种情况,最多使用一个仲裁节点。

5.3 版本中的新增功能

从 MongoDB 5.3 开始,默认情况下禁用对副本集中多个仲裁节点的支持。如果尝试向副本集添加多个仲裁节点,服务器将返回错误:

MongoServerError: Multiple arbiters are not allowed unless all nodes
were started with --setParameter 'allowMultipleArbiters=true'

要使用 MongoDB 5.3 或更高版本向副本集添加多个仲裁节点,请在启动每个节点时将 allowMultipleArbiters 参数设置为 true

mongod --setParameter allowMultipleArbiters=true

使用 authorization 运行时,仲裁节点会与副本集的其他节点交换档案以进行身份验证。MongoDB 会对身份验证过程进行加密,MongoDB 身份验证交换也会经过安全加密。

由于仲裁节点不存储数据,因此,它们不具有用于身份验证的用户和角色映射的内部表。这样,当授权处于活动状态时,登录仲裁节点的唯一方法是使用本地主机异常

仲裁节点和其他副本集节点之间的唯一通信是:选举期间的投票、心跳和配置数据。这些交换未经加密。

但是,如果 MongoDB 部署使用 TLS/SSL,MongoDB 将加密副本集节点之间的所有通信。请参阅为 TLS/SSL 配置 mongodmongos,了解更多信息。

与所有 MongoDB 组件一样,在受信网络环境中运行仲裁节点。

例如,在以下具有 2 个数据承载节点(主节点和从节点)的副本集中,仲裁节点允许副本集拥有奇数票数来打破平局:

由一个主节点、一个从节点和一个仲裁节点组成的副本集示意图。

后退

延迟成员