Поделиться через


Настройка проб работоспособности и льготных периодов завершения для приложений, размещенных в Azure Spring Apps

Эта статья применима к: ✔️ 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, выполните следующие действия.

  1. В разделе Параметры выберите "Приложения" и выберите приложение из списка.

    Screenshot of Azure portal showing the Apps page.

  2. Выберите "Конфигурация" в области навигации слева, выберите пробы работоспособности и укажите свойства пробы работоспособности.

    Screenshot of the Azure portal Configuration page showing the Health probes tab.

  3. Чтобы задать льготный период завершения, выберите общие параметры и укажите значение в поле льготного периода завершения.

    Screenshot of the Azure portal Configuration page showing the General settings tab.

Рекомендации

При добавлении проб работоспособности в 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
    }
    

Следующие шаги