2016-07-08 29 views
0

我需要使用两个分片来设置MongoDB群集。每个分片包含3个副本成员:主要,次要和仲裁者。我已经为mongos打开防火墙规则来与主节点和次节点通话,但不是仲裁者。我尝试连接到mongos,做sh.addShard()并看到它工作正常。MongoDB是否与仲裁者进行交互

我的问题是,我们是否真的需要允许mongos与仲裁者进行交互? 从this link我们知道mongos不会与隐藏的成员交谈,但没有提及仲裁者。

+0

我的理解是仲裁者没有数据集,所以你不会读/写他们,但我认为他们确实有心跳,并且当主服务器出现故障时他们肯定需要进行轮询,以便你可以举行选举并选举你的次要成员作为新的主要成员。所以你需要允许访问它。 – Tiramisu

+0

谢谢@Tiramisu。但是mongos是否真的需要ping仲裁者,因为mongos与选举过程无关? – anhlc

+1

按需要转动它 - 分片群集中的每个非隐藏_node_必须能够到达任何其他节点。所有节点都需要查看配置服务器,原因很明显。所有分片节点都需要查看所有其他分片节点以进行平衡。 mongos需要查看所有节点才能提供透明的故障转移。没有理由阻止mongos与仲裁者进行交流。这个通用规则的唯一豁免是配置服务器iirc - 它们只需要能够解析所有其他节点。 –

回答

0

mongos需要看到的所有节点,包括仲裁者,以便提供透明的故障转移。

在正常情况下,当所有3个副本节点(主,仲裁和仲裁器)都启动时,mongos不需要看仲裁器。但是当只有一个主仲裁器和一个仲裁器时,mongos需要检查仲裁器以确保选举过程中没有网络分区错误。