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