У нас есть веб-сайт с высокой доступностью, который мы пытаемся перенести в Azure. У нас в основном есть стандартный балансировщик нагрузки Azure с общедоступным IP-адресом и 2 виртуальными машинами в бэкэнд-пуле.
Мы заметили, что если одна из виртуальных машин выходит из строя (либо хост выходит из строя, либо что-то вроде отказа пула приложений), стандартный балансировщик нагрузки обнаруживает, что хост неисправен, но продолжает отправлять существующие соединения на хост.
Это означает, что конечные пользователи, у которых уже есть сеанс на неработающей серверной виртуальной машине, продолжают отправляться туда и часто просто получают общую ошибку HTTP. Пользователи, которые входят в качестве новых подключений, успешно отправляются на исправный хост в бэкэнд-пуле.
Наш балансировщик нагрузки настроен так, чтобы не удерживать состояние, поэтому теоретически новые соединения будут случайным образом распределяться между хостами внизу и с тайм-аутом сеанса в 4 минуты (самый низкий уровень Azure позволяет нам).
Что-то мы здесь упустили или это просто ожидаемое поведение балансировщиков нагрузки Azure?
Это ожидаемое поведение. Поведение зонда вниз выглядит как сильфон:
Новые TCP-соединения будут успешно подключаться к бэкэнд-экземпляру, который исправен и имеет гостевую ОС и приложение, способное принять новый поток.
Если проверка работоспособности внутреннего экземпляра завершается неудачно, установленные TCP-соединения с этим внутренним экземпляром продолжаются.
Если все зонды для всех экземпляров в серверном пуле завершатся сбоем, новые потоки не будут отправлены в серверный пул. Стандартный балансировщик нагрузки разрешит установленным потокам TCP продолжить работу. Базовый балансировщик нагрузки завершит все существующие потоки TCP к внутреннему пулу.
Поскольку поток всегда находится между клиентом и гостевой ОС виртуальной машины, пул со всеми отключенными зондами приведет к тому, что интерфейс не будет отвечать на попытки открытия TCP-соединения, поскольку нет работоспособного экземпляра серверной части для приема потока.