Назад | Перейти на главную страницу

mongodb: может ли клиент предложить переизбрание набора реплик?

Набор реплик Mongodb обеспечивает автоматическое переключение при отказе. Если первичный выходит из строя (т. Е. Возникает проблема с сетью между первичным и любым вторичным), происходит переизбрание.

Однако рассмотрим следующий случай:

Все серверы включены, сеть между первичным и вторичным сервером в порядке, поэтому набор реплик в порядке, насколько это возможно. Однако из-за другой сетевой проблемы (неизвестной набору реплик) клиент не может связаться с основным. Таким образом, HA теряется.

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

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

Что-то вроде:

cfg = rs.conf()
cfg.members[0].priority = 2
rs.reconfig(cfg, { force: true })

Где members [0] - заведомо «хороший» сервер.

Более безопасным способом сделать это, вероятно, было бы установить небольшую службу управления на каждом узле mongo, которую вы могли бы использовать через rest api. По возможности, команды администратора должны быть переданы на первичный сервер.

Автоматизировать такие вещи будет довольно сложно, поскольку для ваших приложений и серверов, вероятно, нет простого способа согласовать, какие серверы являются «хорошими», а какие - плохими.

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

Для получения дополнительной информации о принудительном изменении конфигурации читайте: https://docs.mongodb.com/v3.2/tutorial/reconfigure-replica-set-with-unavailable-members/

Изменить: я думаю, что у меня возникнет соблазн поиграть с арбитрами монго. Запустив арбитров монго в тех местах, где вы управляете клиентами, они смогут голосовать в процессе выборов. Серверы, которые не видны большинству серверов для голосования, не могут быть основными.