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

Внутренняя балансировка нагрузки при отказе в Azure

У меня есть кластер MongoDB, развернутый в Azure. Обычно кластер MongoDB имеет по крайней мере пару экземпляров маршрутизатора mongo (mongos), к которым должно подключаться приложение (приложение также размещается в лазурном).

Я хочу «отработать отказ» и сбалансировать трафик от приложения к экземплярам mongodb. Я имею в виду, что хочу подключить свое приложение к одному экземпляру, а в случае сбоя (и только в случае сбоя) к другому. Я не хочу, чтобы мой трафик был сбалансирован с помощью циклического перебора:

Я вижу, что такими вещами можно управлять с помощью диспетчера трафика или ILB (внутренней балансировки нагрузки) в Azure. Но у меня проблема, потому что, насколько я понимаю, балансировка переключения при отказе доступна только с диспетчером трафика, а ILB допускает только циклический перебор.

Поскольку мое приложение также находится в Azure, я не хочу открывать для общественности порты mongodb, поэтому я понимаю, что не могу использовать диспетчер трафика, который является службой, позволяющей балансировать нагрузку при отказе.

Как правильно это реализовать?

Единственный способ иметь программный балансировщик нагрузки с отработкой отказа в Azure - использовать диспетчер трафика. Вы можете установить ACL, чтобы только Ваше собственное приложение могло подключаться к БД на указанной конечной точке. Или вы можете настроить аварийное переключение в своем приложении - без балансировщика нагрузки, потому что вам не нужна балансировка нагрузки (просто аварийное переключение).