Настройка проб работоспособности и льготных периодов завершения для приложений, размещенных в Azure Spring Apps
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья применима к: ✔️ Java ✔️ C#
Эта статья относится к: ✔️ Basic/Standard ✔️ Enterprise
В этой статье показано, как настроить приложения, работающие в Azure Spring Apps с помощью проб работоспособности и льготных периодов завершения.
Проба — это диагностическое действие, выполняемое azure Spring Apps периодически в экземпляре приложения. Чтобы выполнить диагностику, Azure Spring Apps выполняет одно из следующих действий:
- Выполняет произвольную команду вашего выбора в экземпляре приложения.
- Устанавливает подключение сокета TCP.
- Выполняет HTTP-запрос.
Azure Spring Apps предлагает правила пробы работоспособности по умолчанию для каждого приложения. В этой статье показано, как настроить приложение с тремя типами проб работоспособности:
Пробы активности определяют, когда перезапустить приложение. Например, пробы активности могут определить взаимоблокировку, например, когда приложение запущено, но не может выполнить ход выполнения. Перезапуск приложения в состоянии взаимоблокировки может сделать приложение доступным, несмотря на ошибки.
Пробы готовности определяют, когда экземпляр приложения готов к приему трафика. Например, пробы готовности могут управлять тем, какие экземпляры приложений используются в качестве серверных элементов для приложения. Если экземпляр приложения не готов, он удаляется из обнаружения службы Kubernetes. Дополнительные сведения см. в статье "Обнаружение и регистрация приложений Spring Boot". Дополнительные сведения об обнаружении служб с помощью плана Enterprise см. в разделе "Использование реестра служб Tanzu".
Пробы запуска определяют, когда приложение запущено. Проба запуска отключает проверку активности и готовности до успешного запуска, что гарантирует, что пробы активности и готовности не влияют на запуск приложения. Пробы запуска можно использовать для выполнения проверок активности при медленном запуске приложений, предотвращая завершение приложения до его запуска и запуска.
Необходимые компоненты
Azure CLI с расширением Azure Spring Apps. Используйте следующую команду, чтобы удалить предыдущие версии и установить последнее расширение. Если вы ранее установили расширение Spring-Cloud, удалите его, чтобы избежать несоответствий конфигурации и версий.
az extension remove --name spring az extension add --name spring az extension remove --name spring-cloud
Настройка проб работоспособности и корректное завершение для приложений
В следующих разделах описано, как настроить пробы работоспособности и корректное завершение с помощью Azure CLI.
Корректное завершение
В следующей таблице описано terminationGracePeriodSeconds
свойство, которое можно использовать для настройки корректного завершения.
Имя свойства | Description |
---|---|
terminationGracePeriodSeconds |
Длительность в секундах после выполнения процессов в экземпляре приложения отправляет сигнал завершения перед принудительной остановкой. Задайте это значение дольше ожидаемого времени очистки для процесса. Значением должно быть неотрицательное целое число. Установка льготного периода на 0 останавливает экземпляр приложения сразу через сигнал убийства без возможности завершить работу. Если значение равно nil, Azure Spring Apps использует льготный период по умолчанию. Значение по умолчанию равно 90. |
Свойства пробы работоспособности
В следующей таблице описаны свойства, которые можно использовать для настройки проб работоспособности.
Имя свойства | Description |
---|---|
initialDelaySeconds |
Количество секунд после запуска экземпляра приложения перед запуском проб. Значение по умолчанию равно 0, минимальное значение. |
periodSeconds |
Частота в секундах для выполнения пробы. Значение по умолчанию ― 10. Минимальное значение равно 1. |
timeoutSeconds |
Количество секунд до истечения времени ожидания пробы. Значение по умолчанию — 1, минимальное значение. |
failureThreshold |
Минимальное количество последовательных сбоев для проверки, которые будут считаться неудачными после успешного выполнения. Значение по умолчанию — 3. Минимальное значение равно 1. |
successThreshold |
Минимальное число последовательных успехов для пробы, которые будут считаться успешными после сбоя. Значение по умолчанию — 1. Значение должно быть 1 для жизни и запуска. Минимальное значение равно 1. |
Свойства действия пробы
Существует три способа проверки экземпляра приложения с помощью пробы. Каждая проба должна определить одно из следующих действий пробы:
HTTPGetAction
Выполняет HTTP-запрос GET к экземпляру приложения по указанному пути. Диагностика считается успешной, если ответ имеет код состояния больше или равен 200 и менее 400.
Имя свойства Description scheme
Схема, используемая для подключения к узлу. Значение по умолчанию — HTTP. path
Путь к доступу на HTTP-сервере экземпляра приложения, например /healthz. ExecAction
Выполняет указанную команду внутри экземпляра приложения. Диагностика считается успешной, если команда завершает работу с кодом состояния 0.
Имя свойства Description command
Команда, выполняемая внутри экземпляра приложения. Рабочий каталог команды — это корневой каталог (/) в файловой системе экземпляра приложения. Так как команда выполняется с помощью exec
оболочки, а не внутри оболочки, инструкции оболочки не будут работать. Чтобы использовать оболочку, явно вызовите оболочку. Состояние выхода 0 рассматривается как живое или работоспособное, и ненулевое состояние неработоспособно.TCPSocketAction
Выполняет проверку TCP для экземпляра приложения.
Для действия нет доступных свойств
TCPSocketAction
.
Настройка приложения
Чтобы настроить приложение с помощью портал Azure, выполните следующие действия.
В разделе "Параметры" выберите "Приложения" и выберите приложение из списка.
Выберите "Конфигурация" в области навигации слева, выберите пробы работоспособности и укажите свойства пробы работоспособности.
Чтобы задать льготный период завершения, выберите общие параметры и укажите значение в поле льготного периода завершения.
Рекомендации
При добавлении проб работоспособности в Azure Spring Apps используйте следующие рекомендации.
Совместно используйте пробы активности и готовности. Azure Spring Apps предоставляет два подхода к обнаружению служб одновременно. При сбое пробы готовности экземпляр приложения удаляется только из обнаружения службы Kubernetes. Правильно настроенная проба активности может удалить выданный экземпляр приложения из обнаружения службы Eureka, чтобы избежать непредвиденных случаев. Дополнительные сведения об обнаружении служб см. в статье "Обнаружение и регистрация приложений Spring Boot". Дополнительные сведения об обнаружении служб с помощью плана Enterprise см. в разделе "Использование реестра служб Tanzu".
При запуске экземпляра приложения первая проверка происходит после задержки, указанной в параметре
initialDelaySeconds
. Последующие проверки периодически происходят в соответствии с периодом, указанным в параметреperiodSeconds
. Если приложение не может отвечать на запросы несколько раз, как указаноfailureThreshold
, экземпляр приложения перезапускается. Убедитесь, что приложение может запуститься достаточно быстро или обновить эти параметры, чтобы общее время ожиданияinitialDelaySeconds + periodSeconds * failureThreshold
больше времени начала приложения.Для приложений Spring Boot Spring Boot поставляется с поддержкой групп работоспособности, что позволяет разработчикам выбирать подмножество индикаторов работоспособности и группировать их в соответствии с одним соответствующим состоянием работоспособности. Дополнительные сведения см. в статье Liveness и Readiness Probes with Spring Boot в блоге Spring Boot .
В следующем примере показана проба активности с spring Boot:
"probe": { "initialDelaySeconds": 30, "periodSeconds": 10, "timeoutSeconds": 1, "failureThreshold": 30, "successThreshold": 1, "probeAction": { "type": "HTTPGetAction", "scheme": "HTTP", "path": "/actuator/health/liveness" } }
В следующем примере показана проба готовности с помощью Spring Boot:
"probe": { "initialDelaySeconds": 0, "periodSeconds": 10, "timeoutSeconds": 1, "failureThreshold": 3, "successThreshold": 1, "probeAction": { "type": "HTTPGetAction", "scheme": "HTTP", "path": "/actuator/health/readiness" } }
Часто задаваемые вопросы
В этом разделе приведены ответы на часто задаваемые вопросы об использовании проб работоспособности в Azure Spring Apps.
Я получил ответ 400 при создании приложений с настраиваемыми пробами работоспособности. Что это значит?
Сообщение об ошибке указывает, какая проба отвечает за сбой подготовки. Убедитесь, что правила пробы работоспособности верны и что время ожидания достаточно долго, чтобы приложение было в состоянии выполнения.
Каковы параметры пробы по умолчанию для существующего приложения?
В следующем примере показаны параметры по умолчанию:
"startupProbe": null, "livenessProbe": { "disableProbe": false, "failureThreshold": 3, "initialDelaySeconds": 300, "periodSeconds": 10, "probeAction": { "type": "TCPSocketAction" }, "successThreshold": 1, "timeoutSeconds": 3 }, "readinessProbe": { "disableProbe": false, "failureThreshold": 3, "initialDelaySeconds": 0, "periodSeconds": 5, "probeAction": { "type": "TCPSocketAction" }, "successThreshold": 1, "timeoutSeconds": 3 }