连接到副本集时,MongoDB连接拒绝本地节点

时间:2014-11-12 14:59:38

标签: mongodb mongodb-java

我有一个由四个节点组成的副本集(ux002,ux009,ux019,ux020)。我有一个程序,我希望在使用Mongo Java驱动程序连接到此副本集的相同四个节点中的每个节点上并行运行。

检查副本集的状态显示所有四个节点都运行正常,但程序会在所有四个节点上抛出以下警告消息:

  

2014年11月12日下午2:34:40 com.mongodb.ConnectionStatus $ UpdatableNode update   警告:服务器被忽略:ux009 / 127.0.1.1:27017 - java.io.IOException - 消息:无法连接到[ux009 / 127.0.1.1:27017] bc:java.net.ConnectException:连接被拒绝

但是,在每个节点上,向下看的服务器是程序运行的服务器。即我在ux009上运行程序,它告诉我ux009已关闭。我在ux002上运行它,它告诉我ux002已关闭。

我做了一个非常简单的程序来测试我的原始代码是否有问题,但同样的警告仍然存在:

public static void main(String[] args) throws Exception {
  List<ServerAddress> addrs = new ArrayList<>();

  if (args.length == 0) {
    addrs.add(new ServerAddress("localhost", 27017));
  } else {
    for (String a : args) {
      String[] host = a.split(":");
      addrs.add(new ServerAddress(host[0], Integer.valueOf(host[1])));
    }
  }

  mongo = new Mongo(addrs);
  Thread.sleep(5000); // Sleep to give it time to print messages
  mongo.close();
}

我按如下方式运行:

  

java -jar mongo-test.jar ux002:27017 ux009:27017 ux019:27017 ux020:27017

mongod是否未正确配置?或许我在滥用Java API?

Mongo Java驱动程序是版本2.9.3,而mongod是版本2.6.5。

非常感谢提前! -Jim

2 个答案:

答案 0 :(得分:3)

对于本地主机来说,IP有点奇怪:

ux009/127.0.1.1:27017

我原以为:

ux009/127.0.0.1:27017

很可能有人在每台机器的/ etc / hosts中找到了ip地址。

答案 1 :(得分:1)

在此处发布答案以确保完整性。问题是mongod配置文件中的bind_ip参数已设置为仅其中一个节点的IP地址。感谢Helmy发现它。