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