mongodb не использует локальную базу данных в наборе реплик - PullRequest
0 голосов
/ 30 января 2019

У меня есть 4 сервера, на каждом из которых размещен веб-сайт, и набор реплик монго.

  • Версия MongoDB: v3.4.13
  • Драйвер: PHP

Сервер 1 является ПЕРВИЧНЫМ.

  • Расположен на западном побережье

Сервер 2 является ВТОРИЧНЫМ с тегом: {location: 'east'}

  • Расположен на восточном побережье

  • Я подключаюсь к БД с помощью строки подключения: mongodb: // localhost:27017 /? ReplicaSet = rs & readPreference = ближайшие & readPreferenceTags = местоположение: восток

Сервер 3 и 4 являются ВТОРИЧНЫМИ без тегов.

Я хочу сервер 2читать из своей локальной базы данных, но вместо этого она читает из основной (или другой дополнительной, я не могу сказать, но она определенно не читает из своей локальной базы данных)

  • Я подозреваю, что она не читает изэто собственный ВТОРИЧНЫЙ БД, потому что для любого выполняемого запроса задержка составляет около 3 секунд.

Как мне сказать серверу 2 прочитатьиз собственной локальной вторичной базы данных?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

РЕШЕНИЕ: Все серверы в кластере должны иметь возможность подключаться ко всем другим серверам в кластере.

Оказывается, некоторые из моих вторичных серверов не смогли подключиться к другим вторичным серверам из-за некоторыхправила, помещенные в мои iptables.

Как только все серверы в кластере смогли соединиться друг с другом, скорость резко возросла.

0 голосов
/ 30 января 2019

Включите readPreferenceTags в строку подключения.Обратитесь к онлайн-документу .

Кстати, у вас не должно быть четного количества узлов в наборе реплик, если только один из них не имеет права голоса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...