В шаблоне ARM для службы приложений Azure есть параметр для настройки алгоритма балансировки нагрузки - loadBalancing. Согласно документация он доступен через объект SiteConfig и может иметь следующие значения: WeightedRoundRobin, LeastRequests, LeastResponseTime, WeightedTotalTraffic, RequestHash.
Мы провели некоторое тестирование с планом обслуживания приложений Standard S1 с двумя экземплярами. Первый экземпляр отвечал на все запросы без задержки, второй экземпляр отвечал на все запросы с задержкой в 3 секунды, привязка ARR была отключена.
Тест показал, что все настройки работают одинаково - после некоторого времени нарастания все запросы равномерно распределяются между двумя экземплярами. Этого не ожидалось, по крайней мере, для LeastResponseTime, который интуитивно предполагает направить больше трафика на первый экземпляр (с низким временем отклика).
Итак, вопрос в том, работает ли эта настройка? И если да, то в какой конфигурации службы приложений он соблюдается?
Мы использовали Netling для генерации множества HTTP-запросов GET к сервису приложения. Служба приложений запускала простое приложение ASP.NET MVC, которое отвечает HTTP 200 на все запросы получения с помощью «OK» в теле ответа. Приложение было настроено таким образом, что первый экземпляр отвечал немедленно (время ответа ниже 100 мс), а второй экземпляр добавлял 3-секундную задержку. В этом тесте мы попытались смоделировать случай, когда один из серверов испытывает большую нагрузку.
Служба приложений Azure имеет параметр внутри шаблона ARM, называемый loadBalancing. Установка имени и поддерживаемых значений предполагает, что необходимо каким-то образом указать, как запросы распределяются между экземплярами. Однако мы не смогли увидеть никакой разницы при использовании разных значений параметра loadBalancing для нашего тестового примера. 50% запросов были серверами первого экземпляра, 50% запросов были серверами второго экземпляра, для всех поддерживаемых значений значений параметров: WeightedRoundRobin, LeastRequests, LeastResponseTime, WeightedTotalTraffic, RequestHash.
Для взвешенного кругового алгоритма вы можете установить вес 5 для instance1 и вес 1 для instance2, каков результат? и вы можете сослаться на эти описание алгоритма балансировки нагрузки.
Служба приложений Azure использует внутреннюю подсистему балансировки нагрузки, которая не отображается и не настраивается напрямую (за исключением параметра misterios loadBalancing в ARM). Значит, нет возможности изменить вес.
Просто подумайте, вы пытались проверить это из другого региона. Этот инструмент задержки может быть полезен azurespeed.com
Вы можете взглянуть на этот кейс. Само масштабирование - это балансировка нагрузки.


Не уверен в своем вопросе, не могли бы вы описать, что вы сделали в своем тесте? или что такое настройка балансировки нагрузки? и чего вы ждете от результата?