向自管理副本集添加仲裁者
在某些情况下(例如,您有一个主节点和一个辅助节点,但成本限制禁止添加另一个辅助节点),您可以选择添加一个mongod
实例到副本集作为 仲裁器 以在选举中投票。
仲裁器是 mongod
实例,它们是 副本集 的一部分,但不持有数据(即不提供数据冗余)。然而,它们可以参与 选举。
仲裁器对资源要求最小,不需要专用硬件。您可以在应用程序服务器或监控主机上部署仲裁器。
重要
不要在也托管副本集的主节点或辅助节点的系统上运行仲裁器。
警告
避免在一个 副本集 中部署超过一个 仲裁器。参见 多个仲裁器的相关问题。
要将仲裁器添加到现有的副本集
在启动一个新的带有仲裁器的副本集之前,您不需要更改集群级写关注。
考虑因素
主-副-仲裁者副本集
如果您使用的是由三个成员组成的主-副-仲裁器(PSA)架构,请考虑以下内容
当副节点不可用或延迟时,写入关注点
"majority"
可能会导致性能问题。有关缓解这些问题的建议,请参阅使用自管理的PSA副本集缓解性能问题。如果您使用全局默认的
"majority"
并且写入关注点小于多数节点的大小,则您的查询可能返回陈旧(未完全复制)的数据。
仲裁者
仲裁者不存储数据,但在仲裁者的 mongod
进程被添加到副本集之前,仲裁者将像任何其他 mongod
进程一样运行,并启动一组数据文件和完整大小的 日志。
IP 绑定
MongoDB的二进制文件,mongod
和mongos
,默认绑定到本地主机。如果二进制文件的配置文件设置或--ipv6
命令行选项设置了net.ipv6
,则二进制文件还会绑定到本地主机的IPv6地址。
默认情况下,仅绑定到本地主机的mongod
和mongos
仅接受在同一台计算机上运行的客户端的连接。这种绑定行为包括mongosh
和您的复制集或分片集群的其他成员。远程客户端无法连接到仅绑定到本地主机的二进制文件。
要覆盖默认绑定并绑定到其他IP地址,请使用配置文件设置net.bindIp
或命令行选项--bind_ip
来指定主机名或IP地址列表。
警告
从MongoDB 5.0开始,仅配置了IP地址的节点将失败启动验证并报告错误。请参阅disableSplitHorizonIPCheck
。
例如,以下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地址的节点将失败启动验证并无法启动。
添加仲裁者
警告
避免在一个 副本集 中部署超过一个 仲裁器。参见 多个仲裁器的相关问题。
要将仲裁器添加到现有的副本集
在启动一个新的带有仲裁器的副本集之前,您不需要更改集群级写关注。
重要
为了避免因IP地址更改而导致的配置更新,请使用DNS主机名而不是IP地址。在配置副本集成员或分片集群成员时,使用DNS主机名而不是IP地址尤为重要。
使用主机名而不是IP地址来配置跨分割网络视域的集群。从MongoDB 5.0开始,仅配置了IP地址的节点将失败启动验证并无法启动。
为仲裁者创建一个数据目录(例如
storage.dbPath
)。mongod
实例使用该目录进行配置数据。该目录 不会 存储数据集。例如,创建/var/lib/mongodb/arb
目录mkdir /var/lib/mongodb/arb 启动仲裁者,指定数据目录和要加入的副本集名称。以下示例使用
/var/lib/mongodb/arb
作为dbPath
和rs
作为副本集名称来启动仲裁者mongod --port 27017 --dbpath /var/lib/mongodb/arb --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)> 连接到主节点并将仲裁者添加到副本集。使用
rs.addArb()
方法,如下例所示,假设m1.example.net
是与指定IP地址关联的仲裁者主机名rs.addArb("m1.example.net:27017") 此操作将运行在
m1.example.net
主机上的端口27017
上的仲裁者添加。