MongoDB仲裁服务器是否应包含在客户端连接配置中?

时间:2011-02-08 10:14:29

标签: mongodb cluster-computing

如果在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

......但我只是想仔细检查一下!

2 个答案:

答案 0 :(得分:7)

不,您不需要在连接中包含仲裁者。

毕竟,正如您所怀疑的那样,您的代码尝试连接到其中一个代码时没有什么意义,因为那里没有数据。他们只是在风险背后做他们的事情来帮助自动故障转移。

您甚至不必指定连接配置中的所有服务器(甚至不是主服务器) - 只要您提到的其中一个服务器返回响应,它就可以从那里找到主服务器。虽然恕我直言,你的名字越多越好,但只是让其中一些人失望。

答案 1 :(得分:1)

该列表只是一个种子列表。副本集的实际成员在连接到一个后确定。你可以在27017指定一个(但如果那个下来就会很糟糕)。