如果在Mongo中设置了只有两个节点的副本集,则使用仲裁器needs to be added来确保对新主节点的投票占多数。仲裁者本身永远不会成为主人,纯粹是在那里举行投票选举。
将客户端(在我的Java中)连接到MongoDB集群时,我们应该在连接配置中specify all the nodes of the cluster:
List addrs = new ArrayList();
addrs.add( new ServerAddress( "localhost" , 27017 ) );
addrs.add( new ServerAddress( "localhost" , 27018 ) );
Mongo mongo = new Mongo(addrs);
仲裁者是否应包含在连接配置中?我猜不会像他们一样:
没有数据副本,永远不会成为主节点(甚至是可读的辅助节点)
(取自here)
......但我只是想仔细检查一下!
答案 0 :(得分:7)
不,您不需要在连接中包含仲裁者。
毕竟,正如您所怀疑的那样,您的代码尝试连接到其中一个代码时没有什么意义,因为那里没有数据。他们只是在风险背后做他们的事情来帮助自动故障转移。
您甚至不必指定连接配置中的所有服务器(甚至不是主服务器) - 只要您提到的其中一个服务器返回响应,它就可以从那里找到主服务器。虽然恕我直言,你的名字越多越好,但只是让其中一些人失望。
答案 1 :(得分:1)
该列表只是一个种子列表。副本集的实际成员在连接到一个后确定。你可以在27017指定一个(但如果那个下来就会很糟糕)。