Аварийное переключение репликации MongoDB

Я хочу иметь репликацию mongod для избыточности на нескольких сайтах.

Я думаю о развертывании следующего: разверните 5 экземпляров Mongod (должно быть нечетное число, иначе нужен арбитр), 3 на сайте A и 2 на сайте B.

Если сайт B выйдет из строя, все в порядке, у нас все еще есть 3 работающих на сайте A. Но если сайт A выйдет из строя, у нас будет только 2 Mongods. Это нормально? Кто из них станет мастером? Могут ли они управлять им сами, пока я вручную не запущу третий?

Второй вопрос, как монго поступит после того, как сайты будут переподключены?


person Reza S    schedule 03.04.2014    source источник
comment
Ответ в значительной степени описан здесь: docs.mongodb.org /ручной/ядро/   -  person Reza S    schedule 06.04.2014


Ответы (1)


Набор реплик mongo будет доступен только в том случае, если доступно более 50% узлов.

В вашем случае, если сайт А вышел из строя, ваш набор реплик перейдет в автономный режим.

Возможная альтернатива — запустить 2 узла реплики в A и 2 в B. Затем во внешнем расположении либо запустить арбитр, либо отложенную реплику.

Отложенная реплика обеспечит дополнительную резервную копию ваших данных, однако я бы убедился, что вы установили ее приоритет на 0, это гарантирует, что, пока она является участником с правом голоса, она не будет повышена до основной.

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

Сложности, очевидно, возникнут при обеспечении безопасности связи между Сайтом A -> Сайтом C, Сайтом B -> Сайтом C.

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

person SCB    schedule 03.04.2014
comment
Чтобы было ясно. Набор реплик не перейдет в автономный режим, он не сможет выбрать первичный и, следовательно, не сможет выполнять запись. Вы по-прежнему можете читать из этого набора с предпочтением чтения second/secondaryPreferred или установкой rs.slaveOk() - person daveh; 17.04.2014