2014-11-12 1 views
0

У меня есть набор реплик, состоящий из четырех узлов (ux002, ux009, ux019, ux020). У меня есть программа, которую я хотел бы запускать параллельно на каждом из четырех узлов, которые подключаются к этой реплике с использованием драйвера Mongo Java.Соединение MongoDB отказалось от локального узла при подключении к набору реплик

Изучение состояния набора реплик показывает, что все четыре узла работают хорошо, однако программа выдает следующее предупреждающее сообщение на всех четырех узлов:

12 ноября 2014 2:34:40 PM ком .mongodb.ConnectionStatus $ Обновление обновляемого обновления ПРЕДУПРЕЖДЕНИЕ: Снятый сервер: ux009/127.0.1.1: 27017 - java.io.IOException - сообщение: не удалось подключиться к [ux009/127.0.1.1: 27017] bc: java.net. ConnectException: Соединение отклонено

Однако на каждом узле сервер, который отображается вниз, является тем, который показан програми m работает. То есть Я запускаю программу на 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 - баночка монго-test.jar ux002: 27017 ux009: 27017 ux019: 27017 ux020: 27017

Может быть, mongod не настроен правильно? Или, возможно, я злоупотребляю API Java?

Драйвер Mongo Java версии 2.9.3, а mongod - версия 2.6.5.

Большое спасибо заранее! -Джим

+1

У вас есть набор bind_ip? Если это так, возможно, MongoDB не настроен на прослушивание на localhost. Вы также можете дважды проверить журнал mongod, чтобы убедиться, что он запущен, проверьте наличие ошибок и дважды проверьте номер порта. – helmy

+0

Также возможно стоит обновить до последнего драйвера Java, если это возможно, 2.12.4 должен быть последним. – helmy

+0

Привет, helmy, спасибо! Похоже, что mongod был запущен с привязкой bind_ip к IP-адресу первичного узла. Кажется, все работает сейчас :) – jrwilliams

ответ

1

Проводя ответ здесь для полноты. Проблема заключалась в том, что параметр bind_ip в файле конфигурации mongod был установлен на IP-адрес только одного из узлов. Спасибо за то, что заметили это.

3

IP-это немного странен для локального хоста:

ux009/127.0.1.1:27017 

Я бы ожидать, что будет:

ux009/127.0.0.1:27017 

Скорее всего кто-то жир облапанного адреса IP-в/etc/hosts на каждой машине.