Рекомендации по настройке проверок состояния Yandex Application Load Balancer
Для бэкендов, состоящих из целевых групп, рекомендуется настроить проверки состояния. L7-балансировщик будет отправлять проверочные запросы к эндпоинтам через определенные промежутки времени и ожидать ответа в течение определенного периода. В зависимости от результатов проверки будет регулироваться подача трафика к конкретному эндпоинту.
Преимущества
Высокая доступность приложений
Высокая доступность и надежность приложений зависят от правильно настроенных проверок состояния. Проверки позволяют своевременно исключить неработающие экземпляры приложения, оставив доступными только стабильные. А значит, пользователи будут реже сталкиваться с отказом вашего сервиса. Это улучшает пользовательский опыт и защищает от финансовых и репутационных рисков.
Проверка состояния выполняется так: L7-балансировщик периодически отправляет проверочные запросы к бэкендам, на которых развернуты и работают экземпляры приложений. Если в течение заданного времени ответа не поступает, балансировщик помечает бэкенд как неработоспособный и перенаправляет трафик на другие бэкенды. При этом балансировщик продолжает периодически отправлять проверочные запросы ко всем бэкендам. Если неработоспособный бэкенд восстанавливается и отвечает на запрос, он снова включается в работу.
Таким образом, проверки состояния помогают балансировщику правильно распределять нагрузку, определять доступные и восстановившиеся бэкенды и своевременно исключать вышедшие из строя.
Бесшовное сервисное обслуживание
Проверки состояния позволяют сохранить работоспособность приложения во время его последовательного обновления на бэкендах. Поскольку при обновлении ВМ может автоматически перезагружаться, в это время приложение будет недоступно. Благодаря проверкам состояния балансировщик вовремя отследит недоступный бэкенд и направит трафик на другие бэкенды. А после обновления трафик будет снова распределен на все бэкенды.
Таким образом, для пользователей обновление пройдет незаметно.
Разумное распоряжение ресурсами
Проверки состояния помогают вовремя выявить сбой в приложении и устранить его. А значит избежать потерь простоя: не оплачивать ресурсы, которые на самом деле недоступны, не оказывают услуг пользователям и не приносят прибыли.
Правила настройки
Выделенный эндпойнт для проверки состояния
Включите в логику приложения на бэкенде отдельный эндпоинт, который будет отвечать на запросы проверок состояния.
Это нужно, чтобы не загружать дополнительными запросами эндпоинты, которые выполняют полезную работу — обрабатывают запросы пользователей. Запросы проверок состояния не должны влиять на работу приложения. Например, частые запросы не должны загружать базы данных или другие критические компоненты.
При этом проверочный эндпоинт должен быть интегрирован с приложением, а не работать автономно. Работоспособность проверочного эндпойнта должна быть напрямую связана с работоспособностью приложения. Шифрование и протокол проверочного эндпоинта должны совпадать с рабочими эндпоинтами. Это позволит считать, что если проверочный эндпоинт не отвечает, то и весь бэкенд недоступен.
Интеграция с Instance Groups
Интеграция группы ВМ с L7-балансировщиком позволяет автоматически восстанавливать работоспособность приложений без участия администратора. Это возможно, поскольку группа может автоматически пересоздавать ВМ, на которую долгое время не поступает трафик с балансировщика.
При настройке интеграции нужно указать параметр max_opening_traffic_duration
. Это время, в течение которого новая ВМ в группе должна пройти проверку состояния от балансировщика.
Режим паники
В некоторых случаях проверки состояния можно автоматически отключать, чтобы сохранить работоспособность приложения при резком росте нагрузки. Для этого предусмотрен режим паники. В этом режиме балансировщик будет распределять запросы на все эндпоинты, не учитывая результаты проверок состояния. Для некоторых пользователей сервис будет недоступен, но для других он будет работать.
Когда режим паники не используется, отказ части бэкендов вызовет рост нагрузки на еще работающие бэкенды. Если приложение работает на пределе возможностей, это приведет к отказу всех бэкендов и полной недоступности сервиса для всех пользователей.
Практические рекомендации
Проверки состояния задаются при создании группы бэкендов. Для каждого бэкенда можно добавить одну или несколько проверок.
Внимание
Если в зоне доступности все бэкенды с подключенными проверками состояния не прошли проверки, трафик перестанет поступать в зону, даже если в ней есть рабочие бэкенды без проверок состояния.
Рекомендуется настраивать проверки состояния для всех бэкендов.
При настройке проверки состояния можно оставить предложенные параметры по умолчанию или указать свои. Проверки состояния должны учитывать возможности бэкенда и не перегружать его. Например, если время ответа бэкенда более 1 секунды, то таймаут должен быть больше этого значения.
Ниже приведены оптимальные параметры, которые подойдут при первой настройке Application Load Balancer. В дальнейшем вы можете скорректировать эти значения в зависимости от работы ваших бэкендов и L7-балансировщика.
- Таймаут, с —
1
. - Интервал —
1
. - Порог работоспособности —
2
. - Порог неработоспособности —
3
.