Rails автоматически определяет первичку в наборе реплик MongoDB, если настроен только один хост? - PullRequest
0 голосов
/ 09 мая 2019

Вот сценарий:

Узел1:

  • Док-контейнер Rails, monogid.yml имеет только один хост : mongo: 27017

  • Контейнер-монтер Mongo (с именем 'mongo'), настроенный как набор реплик с mongo в Node2 и арбитром.

Node2:

  • Док-контейнер Rails, monogid.yml имеет только один хост : mongo: 27017

  • Контейнер монго (названный 'mongo'), настроенный как набор реплик с монго в Node1 и арбитре.

Я знаю, что конфигурация mongoid должна иметьсписок хостов в наборе реплик, а не только один,

Но при тестировании вышеописанного я вижу, что если перейти в Интернет в Node2 , монго в Node1 получает нагрузку, даже если этот хост не настроен в конфигурации Node2.

Итак, могу ли я оставить конфигурацию mongoid на обоих узлах таким же образом?

Действительно ли необходимо использовать список хостов в конфиге или драйвер в Rails сам определит это?

Дайте мне знать, если будет полезно больше подробностей или еслиОбъяснение не ясно.

Обновление: загрузка из Интернета как для чтения, так и для записи.

1 Ответ

0 голосов
/ 10 мая 2019

Большинство драйверов при подключении вызывают db.isMaster (), который возвращает набор узлов в наборе реплик. Это позволяет драйверу обнаруживать другие узлы и повторно подключаться к основному. Обычно вы должны перечислить все известные узлы на случай, если тот, который вы запустили, временно недоступен. Поскольку вы настроили набор реплик, у вас уже должен быть адрес для всех узлов, так почему бы просто не указать его в URI соединения? Подсказка: вы можете использовать псевдоним в / etc / hosts, если не можете установить правильную ссылку на DNS для всех хостов

...