我有一个由四个节点组成的副本集(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
答案 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发现它。