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

Mongos подключается к набору реплик

Это довольно простой вопрос, но я не могу найти на него ответов. Я знаю, что вы используете монго для взаимодействия с сегментированной коллекцией. Однако, если у меня есть набор реплик, который не сегментирован, как мне настроить монго, чтобы мое приложение могло использовать как первичный, так и вторичный сервер в этом наборе? Нужно ли вообще использовать mongos, или если драйвер mongo моего приложения (в данном случае php) будет подключаться к одному серверу в наборе, он автоматически перечислит другие элементы в наборе и подключится к ним?

Вы можете подключиться к набору реплик напрямую из драйвера, mongos не требуется, если вы не работаете в сегментированной среде. Драйверы обычно используют isMaster команда для определения состояния набора и отправит команды на первичный и вторичный по мере необходимости (в зависимости от читать предпочтения установите, если вы используете последние версии). Драйверы также будут обрабатывать автоматическое переключение при отказе, если основной выходит из строя (конечно, с небольшой задержкой).

Как только некоторые люди пробуют шардинг, они предпочитают подключаться к mongos в целом и позволяя ему управлять обменом данными с наборами, как вы можете видеть из этот запрос. На данный момент, чтобы использовать mongos Таким образом, вам необходимо настроить минимальные части сегментированной среды, даже если у вас (фактически) всего один сегмент.

Кроме того, иногда люди будут знать, что в будущем им придется разделить сегмент и начать с одного сегмента в ожидании этой будущей потребности, так что им не нужно ничего делать, кроме добавления сегмента в конфигурацию.

В общем, главное условие иметь mongos запустить это config база данных (и, следовательно, ваш config серверов) в рабочем состоянии. Строка подключения, которую вы передаете mongos будет список тех config серверов (и должны быть одинаковыми на всех mongos вы начинаете) и по крайней мере один (из трех) должен быть здоровым для mongos функционировать.