Шардинг набора реплик. Может ли второй центр обработки данных выполнять аварийное переключение?

У нас есть 3 шарда, реплицированных по 3 бокса каждый (всего 9 боксов). 2 реплики находятся у нашего основного хостинг-провайдера (сайт A), а у нас есть третья реплика (только для вторичного) у другого хостинг-провайдера (сайт B). Если сайт А выходит из строя, (как) мы можем автоматически принимать запросы от сайта Б?

Мы настроили реплику сайта B только как вторичную, как указано в http://docs.mongodb.org/manual/core/replication/ Я знаю, что вы можете использовать rs.SlaveOk() для этих блоков и принимать запросы, но это будет работать только с локальным сегментом, который составляет треть базы данных.

Вся помощь приветствуется!


person user1556658    schedule 19.03.2013    source источник


Ответы (1)


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

Потеря сайта A означает, что вы потеряли 2/3 своих узлов-реплик. Чтобы узлы сайта B могли принимать операции чтения и записи, необходимо перенастроить набор реплик. Вы можете либо удалить узлы на сайте A из конфигурации, либо добавить арбитров, чтобы восстановить «большинство».

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

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

person Asya Kamsky    schedule 20.03.2013
comment
Спасибо за это. Я думал о случае, когда сайт А временно недоступен. Таким образом, я мог бы вручную настроить сайт B, чтобы забыть о сайте A, но затем, если сайт A вернется, я мог бы снова вручную настроить его? - person user1556658; 21.03.2013
comment
это конечно вариант. - person Asya Kamsky; 21.03.2013