Если я разверну набор реплик MongoDb только в 2 центрах обработки данных, то в случае отказа одного центра обработки данных может ли быть реализован автоматический переход на другой центр обработки данных?
Рассмотрим ситуацию, когда в одном центре обработки данных есть первичный, вторичный и арбитр, а во втором центре обработки данных есть 2 вторичных члена. По сути, набор реплик из 5 членов.
Если центр обработки данных 2 выйдет из строя, в наборе реплик в центре обработки данных 1 все еще останется 3 участника. Это здорово.
В обратном случае, если центр обработки данных 2 останется в рабочем состоянии, а центр обработки данных 1 выйдет из строя, из набора реплик из 5 участников останется только 2 участника. Этого недостаточно, чтобы любой из вторичных участников сам проголосовал за то, чтобы стать первичным.
Это правильно? Если нет, то что я делаю не так.
Если это невозможно, сообщите мне, пожалуйста, чтобы я мог рассмотреть другие варианты.
Добавление третьего центра обработки данных для размещения арбитра не представляется возможным.
решение1
Ответ на ваш вопрос заключается в том, что невозможно обойтись только двумя локациями.
Причину, по которой это невозможно, можно объяснить следующим образом: если оба местоположения полностью функциональны, но сетевое соединение между ними неисправно, то функциональным может оставаться только одно из них. В этом случае неприемлемо, чтобы оба местоположения одновременно выбирали первичное.
Нет возможности для одного местоположения определить разницу между полным отказом другого местоположения и его работоспособностью, но сетевое соединение между ними отсутствует.
Таким образом, если бы каждое местоположение независимо могло выбирать основной, когда другое местоположение было бы недоступно, следствием было бы то, что в случае сбоя сети возможно существование двух основных. Наличие двух основных является неприемлемым сценарием, и именно поэтому только одно из двух местоположений могло бы выбрать основной.
Достаточно будет трех локацийесли вы делаете предположения о поведении отказов.Любое решение, работающее без предположений о сбоях, потребует по крайней мере четырех локаций, чтобы выдержать отключение одной локации. Это требование следует из одной из ключевых теорем в области византийских соглашений.
решение2
Одним из возможных вариантов является размещение основного и резервного серверов в первом центре обработки данных, двух резервных серверов во втором центре обработки данных, а арбитра можно разместить в третьем центре обработки данных.