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

Ric*_*ich 8 cluster-computing mongodb

如果在Mongo中仅使用两个节点设置副本集,则需要添加仲裁器以确保对新主节点的投票总是占多数.仲裁者本身永远不会成为主人,只是在其他方面进行选举时提供投票.

将客户端(在我的Java中)连接到MongoDB集群时,我们应该在连接配置中指定集群的所有节点:

List addrs = new ArrayList();
addrs.add( new ServerAddress( "localhost" , 27017 ) );
addrs.add( new ServerAddress( "localhost" , 27018 ) );

Mongo mongo = new Mongo(addrs);
Run Code Online (Sandbox Code Playgroud)

仲裁器是否应包含在连接配置中?我猜不会像他们一样:

没有数据的副本,永远不会成为主要节点(甚至是可读的次要节点)

(摘自这里)

...但我只想仔细检查!

Ada*_*Dev 7

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

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

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