Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

将仲裁节点添加到自管理副本集

在此页面上

  • Considerations
  • 主从仲裁副本集
  • 添加仲裁节点

在某些情况下(例如您有一个主节点 (primary node in the replica set)和一个从从节点(secondary node from replica set),但费用限制禁止添加另一个从从节点(secondary node from replica set)),您可以选择将一个 mongod实例添加到副本集,作为在选举中投票的仲裁节点

仲裁节点是 mongod 实例,它们是副本集的一部分,但不保存数据(即不提供数据冗余)。但是,仲裁节点可以参加选举。

仲裁节点的资源要求极低,并且不需要专用硬件。您可以将仲裁节点部署在应用服务服务器或监控主机上。

重要

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

警告

要将仲裁节点添加到现有副本集:

在使用具有一个仲裁节点的新副本集之前,您不需要更改集群范围的写关注(write concern)。

提示

另请参阅:

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

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

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

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

仲裁节点不存储数据,但在将仲裁节点的 mongod 进程添加到副本集中之前,仲裁节点会像其他 mongod 进程一样运行,启动时有一组数据文件和完整大小的日志

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

MongoDB 二进制文件 mongodmongos 默认绑定到本地主机。如果为此二进制文件设置了 net.ipv6 配置文件设置或 --ipv6 命令行选项,则该二进制文件还会绑定到本地主机 IPv6 地址。

默认情况下,绑定到本地主机的 mongodmongos 只接受来自同一计算机上运行的客户端的连接。这种绑定行为包括 mongosh 以及副本集或分片集群的其他成员。远程客户端无法连接到仅绑定到本地主机的二进制文件。

要覆盖默认绑定并绑定到其他 IP 地址,请使用 net.bindIp 配置文件设置或 --bind_ip 命令行选项来指定主机名或 IP 地址的列表。

例如,以下 mongod 实例会绑定到本地主机和主机名 My-Example-Associated-Hostname,而该主机名与 IP 地址 198.51.100.1 相关联:

mongod --bind_ip localhost,My-Example-Associated-Hostname

为了连接到此实例,远程客户端必须指定主机名或其关联的 IP 地址 198.51.100.1

mongosh --host My-Example-Associated-Hostname
mongosh --host 198.51.100.1

重要

要避免因 IP 地址变更而更新配置,请使用 DNS 主机名而非 IP 地址。在配置副本集成员或分片集群成员时,使用 DNS 主机名而非 IP 地址尤为重要。

在水平分割网络配置下,请使用主机名而非 IP 地址来配置集群。从 MongoDB 5.0 开始,仅配置了 IP 地址的节点将无法通过启动验证,因而不会启动。

警告

要将仲裁节点添加到现有副本集:

在使用具有一个仲裁节点的新副本集之前,您不需要更改集群范围的写关注(write concern)。

重要

要避免因 IP 地址变更而更新配置,请使用 DNS 主机名而非 IP 地址。在配置副本集成员或分片集群成员时,使用 DNS 主机名而非 IP 地址尤为重要。

在水平分割网络配置下,请使用主机名而非 IP 地址来配置集群。从 MongoDB 5.0 开始,仅配置了 IP 地址的节点将无法通过启动验证,因而不会启动。

  1. 为仲裁节点创建数据目录(例如 storage.dbPath)。mongod 实例使用该目录存储配置数据。该目录不会保存数据集。例如,创建 /var/lib/mongodb/arb 目录:

    mkdir /var/lib/mongodb/arb
  2. 启动仲裁节点,指定数据目录和要加入的副本集名称。使用 /var/lib/mongodb/arb 作为 dbPath,将 rs 作为副本集名称,启动仲裁节点:

    警告

    将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

    mongod --port 27017 --dbpath /var/lib/mongodb/arb --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  3. 连接到主节点,并将仲裁节点添加到副本集。使用 rs.addArb() 方法,如以下示例所示,该示例假设 m1.example.net 是与仲裁节点的指定 IP 地址关联的主机名:

    rs.addArb("m1.example.net:27017")

    此操作会添加在 m1.example.net 主机的 27017 端口上运行的仲裁节点。

后退

添加节点