将仲裁器添加到副本集

在本页面

在某些情况下(例如,您有一个主服务器和一个辅助服务器,但由于成本限制,禁止添加另一个辅助服务器),您可以选择向副本集添加mongod实例作为arbiter进行投票。

仲裁器是mongod实例,它们是replica set的一部分,但不保存数据(即不提供数据冗余)。但是,他们可以参加elections

仲裁器具有最低的资源要求,并且不需要专用硬件。您可以在应用程序服务器或监视主机上部署仲裁程序。

Important

不要在还承载副本集主要成员或次要成员的系统上运行仲裁程序。

Warning

通常,避免每个副本集部署多个仲裁器。

Considerations

阅读关注多数和三成员 PSA

For 3-Member Primary-Secondary-Arbiter Architecture

如果您具有具有主次仲裁器(PSA)体系结构的三成员副本集,或者具有三成员 PSA 分片的分片群集,则如果任何数据承载节点关闭并且支持"majority"读取关注,则缓存压力将增加已启用。

为了防止存储高速缓存压力使具有三名成员的主从仲裁器(PSA)架构无法实现部署,可以为 MongoDB 3.6.1 禁用读取关注“多数”。有关更多信息,请参见禁用多数阅读关注

副本集协议版本

Note

对于以下 MongoDB 版本,具有仲裁器的副本集与pv0相比,pv1增加了w:1回滚的可能性:

  • MongoDB 3.4.1

  • MongoDB 3.4.0

  • MongoDB 3.2.11 或更早版本

See 副本集协议版本.

启动配置

仲裁程序不存储数据,但是在仲裁程序的mongod进程添加到副本集之前,仲裁程序将像其他mongod进程一样工作,并以一组数据文件和全尺寸journal开始。

为了尽量减少默认的数据创建,请在仲裁器的configuration file中设置以下内容:

Important

以下设置特定于仲裁程序。

除非特别指出,否则请勿在数据承载节点上设置storage.mmapv1.smallFiles

IP Binding

从 MongoDB 3.6 开始,默认情况下,MongoDB 二进制文件mongodmongos绑定到 localhost(127.0.0.1)。如果为二进制文件设置了net.ipv6配置文件设置或--ipv6命令行选项,则该二进制文件还会绑定到 IPv6 地址::1

以前,从 MongoDB 2.6 开始,默认情况下,只有正式 MongoDB RPM(Red Hat,CentOS,Fedora Linux 和派生版本)和 DEB(Debian,Ubuntu 和派生版本)程序包中的二进制文件绑定到 localhost。

当仅绑定到 localhost 时,这些 MongoDB 3.6 二进制文件只能接受来自同一台计算机上运行的 Client 端(包括mongo shell,副本集中的其他成员和分片群集)的连接。远程 Client 端无法连接到仅绑定到 localhost 的二进制文件。

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

Warning

绑定到非 localhost(例如可公开访问)的 IP 地址之前,请确保已保护群集免受未经授权的访问。有关安全建议的完整列表,请参见Security Checklist。至少考虑enabling authentication加强网络基础设施

例如,以下mongod实例同时绑定到 localhost 和示例 IP 地址198.51.100.1

mongod --bind_ip localhost,198.51.100.1

为了连接到该实例,远程 Client 端必须指定 IP 地址198.51.100.1或与该 IP 地址关联的主机名:

mongo --host 198.51.100.1

mongo --host My-Example-Associated-Hostname

添加仲裁人

Warning

通常,避免每个副本集部署多个仲裁器。

mkdir /var/lib/mongodb/arb

Warning

绑定到非 localhost(例如可公开访问)的 IP 地址之前,请确保已保护群集免受未经授权的访问。有关安全建议的完整列表,请参见Security Checklist。至少考虑enabling authentication加强网络基础设施

mongod --port 27017 --dbpath /var/lib/mongodb/arb --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
rs.addArb("m1.example.net:27017")

此操作将添加在m1.example.net主机上的端口27017上运行的仲裁程序。

首页