Назад | Перейти на главную страницу

набор реплик с несколькими первичными узлами

Я пытаюсь настроить набор реплик с тремя узлами: узел A, B и C. Я выполняю rs.add()из узла A и после этого rs.status() показывает, что три узла являются ПЕРВИЧНЫМИ. Кроме того, узлы B и C имеют 0 pingM. Если я выполню rs.status() из узла B или C в списке указан только сам (как ПЕРВИЧНЫЙ). Я попытался добавить арбитра, но это не сработало (он вел себя как узлы B и C). Я думаю, это может быть проблема с сетью, но я не могу этого понять.

Изменить: это результат для netstat -anp|grep 27017:

tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      -
tcp        0      0 10.0.1.211:55772        10.0.1.213:27017        TIME_WAIT   -
tcp        0      0 127.0.0.1:50509         127.0.0.1:27017         ESTABLISHED -
tcp        0      0 127.0.0.1:27017         127.0.0.1:50509         ESTABLISHED -
tcp        0      0 10.0.1.211:55774        10.0.1.213:27017        TIME_WAIT   -
tcp        0      0 10.0.1.211:55776        10.0.1.213:27017        ESTABLISHED -
tcp        0      0 10.0.1.211:39180        10.0.1.212:27017        ESTABLISHED -
tcp        0      0 10.0.1.211:39178        10.0.1.212:27017        TIME_WAIT   -
tcp        0      0 10.0.1.211:39176        10.0.1.212:27017        TIME_WAIT   -
unix  2      [ ACC ]     STREAM     LISTENING     3291267  -                   /tmp/mongodb-27017.sock

частные IP-адреса для узлов B и C - 10.0.1.212 и 10.0.1.213 соответственно (они, по-видимому, имеют установленное соединение с портом 27017 в соответствии с выводом netstat).

Похоже, процессу mongo на узле A на самом деле не удалось связаться с двумя другими узлами. На это указывают три большие стрелки:

  1. Все отчеты узла А находятся на ПЕРВИЧНОМ. Первичные выборы происходят после соединение установлено. Если соединение еще не установлено, на всем будет отображаться ПЕРВИЧНОЕ.
  2. Пинг = 0. Если соединение установлено, оно должно быть ненулевым.
  3. Узлы B и C не слышали ни о каких других узлах. Если бы соединение произошло, им бы сказали, что есть другие узлы.

На этом этапе я дважды удостоверился, что ...

  • Любые брандмауэры пропускают правильный порт (обычно 27017, но проверьте /etc/mongodb.conf быть уверенным)
  • Mongo прослушивает ожидаемые порты на узлах B и C.
    • netstat -anp должен показать порт LISTEN для процесса Mongo. Убедитесь, что порт именно тот, на который вы рассчитываете.