Проверка состояния набора реплик MongoDB — HostUnreachable

У меня возникли проблемы с настройкой набора/кластера реплик Mongo v3.2. Я включил журналы mongods со встроенными комментариями из A) узла, с которого я инициализировал набор реплик, и B) другого узла (остальные узлы имеют ту же проблему). Короче говоря, проблема в том, что сердцебиение от всех других узлов к узлу, на котором я изначально настроил набор реплик, не работает из-за HostUnreachable, но я не уверен, как дальше отлаживать, так как mongo <initial node> отлично работает со всеми другими узлами поэтому я не думаю, что это проблема доступа к сети. После некоторого поиска в Google я предположил, что это связано с настройкой bindIp, которая была у меня в моем конфигурационном файле Mongo (или ее отсутствием), но перечисление всех IP-адресов узлов, похоже, не помогает.

Смотрите файлы конфигурации и журналы mongodb здесь -

https://gist.github.com/tejasmanohar/f0e705fb0d9e96f68e05e1ab20c478be

Почему эта проверка работоспособности может дать сбой и/или как я могу продолжить отладку или, возможно, воспроизвести неудачное соединение отдельно от mongod (я могу ping и подключиться через mongo ко всем одноранговым узлам с каждого хоста)? Спасибо!

Обновление: options: { config: "/etc/mongod.conf", net: { bindIp: true }, replication: { replSet: "rs0" } } я заметил, что в журналах mongod отображается bindIp: true, а не список, заданный в моем файле конфигурации Mongo. Это проблематично? Я попытался указать строку с разделителями-запятыми вместо массива, поскольку тип поля немного неясно в документах, но результат тот же.


person Tejas Manohar    schedule 15.10.2016    source источник


Ответы (2)


Итак, решение пока не имеет для меня 100% смысла, но мне пришлось изменить настройку bindIps на строку с разделителями-запятыми вместо массива. Массив работает в YAML, но не в JSON. До сих пор не понимаю, почему раньше он выходил из системы как bool. @andresk указал на еще одну ошибку в моем решении: в моей настройке bindIp были IP-адреса моих одноранговых узлов, но не собственный хост.

person Tejas Manohar    schedule 15.10.2016

Кажется, вы устанавливаете IP-адреса других машин на bindIp, но вы должны использовать IP-адрес машины, доступный другим.

Например, на вашей машине mongo-initial.q ваш bindIp должен выглядеть так:

"bindIp": "127.0.0.1,10.0.11.2"

Подробнее здесь.

Не знаю, исправит ли это все, но это только начало.

person andresk    schedule 15.10.2016
comment
Ах, правильно... но все равно не повезло :(. Я вижу "Did not find local replica set configuration document at startup; NoMatchingDocument: Did not find replica set configuration document in local.system.replset" при запуске на всех узлах. Это проблематично? Опция bindIp также регистрируется как true в журналах mongod, а не как массив (см. суть из исходного сообщения) Я чувствую, что что-то неправильно настраиваю, но не могу понять что. - person Tejas Manohar; 15.10.2016
comment
Вот и все... должна была быть строка, разделенная запятыми, а не список. - person Tejas Manohar; 15.10.2016
comment
Вау я этого не видел. Я обновлю свой ответ, чтобы отразить его - person andresk; 15.10.2016
comment
Я до сих пор не понимаю, почему это логическое значение в выводе mongod, ха-ха - person Tejas Manohar; 15.10.2016
comment
все равно не могу представить, как они используют эти значения XD, обновил ответ правильным значением - person andresk; 15.10.2016
comment
ха-ха я ни ТБХ. упс, я уже ответил на свой вопрос в SO, но, кстати, вам нужно включить IP-адреса в свой обновленный ответ с помощью . это не YAML, ха-ха (ну, я думаю, это так, поскольку JSON является подмножеством) - person Tejas Manohar; 15.10.2016
comment
Я вижу, я перепутал вещи :( ТЕПЕРЬ это должно быть правильно - person andresk; 15.10.2016