Схема определения LoadBalancerProbe для Облачных служб Azure (расширенная поддержка)
Проверка подсистемы балансировки нагрузки — пользовательский процесс проверки работоспособности конечных точек UDP и конечных точек в экземплярах ролей. Он LoadBalancerProbe
не является автономным элементом. Он сочетается с веб-ролью или рабочей ролью в файле определения службы. Несколько ролей могут использовать LoadBalancerProbe
.
По умолчанию определения службы хранятся в файле с расширением .csdef.
Функционирование проверки подсистемы балансировки нагрузки
Azure Load Balancer отвечает за маршрутизацию входящего трафика к экземплярам ролей. Подсистема балансировки нагрузки определяет, какие экземпляры могут принимать трафик. Она регулярно проверяет каждый экземпляр, чтобы определить его работоспособность. Эта подсистема проверяет все экземпляры по несколько раз в минуту. Существует два варианта, с помощью которых подсистема балансировки нагрузки может узнать о работоспособности экземпляров: проба по умолчанию и пользовательская проба, для реализации которой нужно определить LoadBalancerProbe в CSDEF-файле.
Проба подсистемы балансировки нагрузки по умолчанию использует гостевой агент внутри виртуальной машины, который прослушивает и реагирует на ответ HTTP 200 OK только в том случае, если экземпляр находится в состоянии готовности (например, если экземпляр не находится в состоянии "Занят", "Перезапуск", "Остановка" и т. д.). Если гостевой агент не отправляет ответ HTTP 200 ОК, Azure Load Balancer отмечает экземпляр как неотвечающий и перестает отправлять к нему трафик. Azure Load Balancer продолжит проверять связь с экземпляром и снова направит трафик к нему, если агент даст ответ HTTP 200. При использовании веб-роли код веб-сайта обычно выполняется в w3wp.exe, который не отслеживается структурой Azure или гостевым агентом, что означает сбои в w3wp.exe (например, ответы HTTP 500) не передаются гостевому агенту, а подсистема балансировки нагрузки не знает, чтобы вывести этот экземпляр из смены.
Пользовательская проверка подсистемы балансировки нагрузки переопределяет проверку гостевого агента по умолчанию и позволяет создать собственную пользовательскую логику для определения работоспособности экземпляра роли. Подсистема балансировки нагрузки регулярно проверяет конечную точку (каждые 15 секунд, по умолчанию) и экземпляр считается в повороте, если он отвечает с помощью TCP ACK или HTTP 200 в течение периода ожидания (по умолчанию — 31 секунд). Это может быть полезным для реализации логики, где из работы подсистемы балансировки нагрузки будут изыматься экземпляры, возвращающие, например, состояние, отличающееся от 200, если экземпляр использует более 90 % ресурсов ЦП. Для веб-ролей, использующих w3wp.exe, также предоставляется автоматический мониторинг веб-сайта, так как при возникновении ошибок в коде веб-сайта проверке подсистемы балансировки нагрузки будет возвращено состояние, отличное от 200. Если вы не определяете LoadBalancerProbe в файле csdef, используется поведение подсистемы балансировки нагрузки по умолчанию (как описано ранее).
Если вы определили пользовательскую проверку подсистемы балансировки нагрузки, необходимо убедиться, что логика учитывает метод RoleEnvironment.OnStop. При использовании пробы подсистемы балансировки нагрузки по умолчанию экземпляр удаляется из поворота перед вызовом OnStop, но пользовательская проба подсистемы балансировки нагрузки может продолжать возвращать 200 ОК во время события OnStop. Если вы используете событие OnStop для очистки кэша, остановки службы или изменения, которые могут повлиять на поведение среды выполнения службы, необходимо убедиться, что пользовательская логика пробы подсистемы балансировки нагрузки удаляет экземпляр из поворота.
Базовая схема определения службы для проверки подсистемы балансировки нагрузки
Ниже приведен базовый формат файла определения службы, содержащий проверку подсистемы балансировки нагрузки.
<ServiceDefinition …>
<LoadBalancerProbes>
<LoadBalancerProbe name="<load-balancer-probe-name>" protocol="[http|tcp]" path="<uri-for-checking-health-status-of-vm>" port="<port-number>" intervalInSeconds="<interval-in-seconds>" timeoutInSeconds="<timeout-in-seconds>"/>
</LoadBalancerProbes>
</ServiceDefinition>
Элементы схемы
Элемент LoadBalancerProbes
файла определения службы содержит следующее:
Элемент LoadBalancerProbes
LoadBalancerProbes
описывает коллекцию проверок подсистемы балансировки нагрузки. Это родительский элемент для LoadBalancerProbe.
Элемент LoadBalancerProbe
LoadBalancerProbe
определяет проверку работоспособности для модели. Вы можете указать несколько проверок подсистемы балансировки нагрузки.
В таблице ниже описаны атрибуты элемента LoadBalancerProbe
.
Атрибут | Тип | Описание |
---|---|---|
name |
string |
Обязательное. Имя проверки подсистемы балансировки нагрузки. Имя должно быть уникальным. |
protocol |
string |
Обязательный. Указывает протокол конечной точки. Возможные значения: http или tcp . Если указано значение tcp , чтобы проверка считалась успешной, требуется ответ ACK. Если указано http , проверка считается успешной, если от ресурса с указанным URI получен ответ 200 ОК. |
path |
string |
URI используется, чтобы запросить состояние работоспособности у виртуальной машины. Атрибут path обязателен, если для protocol задано значение http . В противном случае это не разрешено.Значение по умолчанию отсутствует. |
port |
integer |
Необязательно. Порт связи с проверкой. Этот атрибут является необязательным для любой конечной точки, так как для пробы используется тот же порт. Вы также можете настроить другой порт для их проверки. Диапазон возможных значений: от 1 до 65 535 включительно. Значение по умолчанию, заданное конечной точкой. |
intervalInSeconds |
integer |
Необязательно. Интервал в секундах, определяющий частоту, с которой проверяется состояние работоспособности конечной точки. Обычно интервал немного меньше, чем половина выделенного времени ожидания (в секундах), что позволяет провести две полные проверки, прежде чем исключить экземпляр из работы. Значение по умолчанию ― 15. Минимальное значение равно 5. |
timeoutInSeconds |
integer |
Необязательно. Период времени ожидания (в секундах) применяется к пробе, в которой ответ не приводит к остановке дальнейшего трафика от доставки в конечную точку. Это значение позволяет изымать конечные точки из работы раньше или позже, чем это произошло бы при использовании обычного параметра количества попыток в Azure (для которого используется значение по умолчанию). Значение по умолчанию — 31. Минимальное значение равно 11. |
См. также
Схема определения для Облачной службы (с расширенной поддержкой).