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


Автоматическое восстановление экземпляров для масштабируемых наборов виртуальных машин Azure

Включение автоматического восстановления экземпляров для Масштабируемых наборов виртуальных машин Azure помогает достичь высокого уровня доступности для приложений, поддерживая набор исправных экземпляров. Если неработоспособный экземпляр найден с помощью расширения "Работоспособность приложений" или проверками работоспособности подсистемы балансировки нагрузки, автоматические сценарии восстановления попытаются его восстановить, запустив соответствующие действия по восстановлению, такие как удаление неработоспособного экземпляра и создание нового для его замены, повторное создание неработоспособного экземпляра или его перезапуск.

Требования к использованию автоматического восстановления экземпляров

Включение мониторинга работоспособности приложений для набора масштабирования

В наборе масштабов должен быть включен мониторинг работоспособности приложений для экземпляров. Мониторинг работоспособности можно выполнять с помощью расширения работоспособности приложений или проверок работоспособности балансировщика нагрузки, где одновременно можно включить только один. Расширение "Работоспособность приложений" или пробы балансировщика нагрузки проверяют связь с конечной точкой приложений, настроенной на экземплярах виртуальных машин, чтобы определить состояние работоспособности приложения. Это состояние работоспособности используется оркестратором набора масштабирования для отслеживания состояния экземпляров и их исправления при необходимости.

Настройка конечной точки для предоставления информации о состоянии

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

Например, для экземпляров, помеченных как "Неработоспособный" или "Неизвестный" (состояние Неизвестный доступно только с расширением "Работоспособность приложений" — расширенные состояния работоспособности), автоматические исправления активируются масштабируемым набором. Убедитесь, что конечная точка приложения настроена правильно, прежде чем включать политику автоматического исправления, чтобы избежать нежелательного исправления экземпляров, пока производится настройка конечной точки.

Версия API

Политика автоматического исправления поддерживается для API вычислений, начиная с версии 2018-10-01.

Параметр repairAction для повторного создания и перезапуска поддерживается для вычислительных API версии 2021-11-01 или более поздней.

Ограничения на перемещение ресурсов и подписок

В настоящее время для масштабируемых наборов со включенной функцией автоматического исправления перемещение ресурсов и подписок не поддерживается.

Ограничения для масштабируемых наборов Service Fabric

В настоящее время эта функция не поддерживается для наборов масштабирования Service Fabric.

Ограничение для виртуальных машин с ошибками подготовки

Автоматическое восстановление в настоящее время не поддерживает сценарии, в которых экземпляр виртуальной машины помечен как неработоспособный из-за сбоя подготовки. Виртуальные машины должны быть успешно инициализированы, чтобы обеспечить мониторинг работоспособности и возможности автоматического восстановления.

Как работает автоматическое восстановление экземпляров?

Функция автоматического исправления экземпляров основывается на мониторинге работоспособности отдельных экземпляров в масштабируемом наборе. Экземпляры виртуальных машин в масштабируемом наборе можно настроить на выдачу информации о состоянии работоспособности либо с помощью расширения "Работоспособность приложения", либо с помощью проб работоспособности балансировщика нагрузки. Если экземпляр неработоспособен, масштабируемый набор выполнит предварительно настроенное действие восстановления для неработоспособного экземпляра. Автоматическое восстановление экземпляров можно включить в модели масштабируемого набора виртуальных машин с помощью automaticRepairsPolicy объекта.

Процесс автоматического восстановления экземпляра выполняется следующим образом:

  1. Расширение "Работоспособность приложения" или проверки работоспособности балансировщика нагрузки пингуют конечную точку приложения внутри каждой виртуальной машины в наборе для определения состояния работоспособности приложения в каждом экземпляре.
  2. Если конечная точка отвечает, возвращая состояние 200 (ОК), экземпляр помечается как "Работоспособный". Во всех остальных случаях (в том числе при недоступности конечной точки) экземпляр помечается как "неисправный".
  3. Если экземпляр неработоспособен, масштабируемый набор применяет настроенное действие восстановления (по умолчанию — Замена) к неработоспособному экземпляру.
  4. Исправление экземпляров выполняется в пакетах. В любой момент времени может производиться исправление не более чем 5 % от общего количества экземпляров в масштабируемом наборе. Если масштабируемый набор содержит менее 20 экземпляров, то исправление производится по одному неработоспособному экземпляру за раз.
  5. Описанный выше процесс продолжается, пока не будут исправлены все неработоспособные экземпляры в масштабируемом наборе.

Доступные действия по восстановлению

Существует три доступных действия по восстановлению для автоматического восстановления экземпляра— замена, повторное создание и перезапуск. Действие восстановления по умолчанию — Replace, но вы можете настроить автоматическое восстановление для использования Reimage или Restart, изменив repairAction параметр в automaticRepairsPolicy объекте.

  • Заменяет удаляет неработоспособный экземпляр и создает новый экземпляр взамен. Последняя модель масштабируемого набора виртуальных машин используется для создания нового экземпляра. Это действие восстановления по умолчанию.

  • Повторное копирование применяет операцию повторного создания к неработоспособной экземпляру.

  • Перезапуск применяет операцию перезапуска к неработоспособному экземпляру.

В следующей таблице сравниваются различия между всеми тремя действиями восстановления:

Ремонтные действия Идентификатор экземпляра виртуальной машины сохранен? Частный IP-адрес сохранен? Управляемый диск данных сохранён? Управляемый диск ОС сохранен? Локальный (временный) диск сохранен?
Замена (по умолчанию) Нет Нет No Нет Нет
Пересоздание образа Да Да Да Нет Да
Перезагрузить Да Да Да Да Да

Дополнительные сведения об обновлении действия восстановления в политике автоматического восстановления см . в разделе "Настройка действия восстановления" для раздела политики автоматического восстановления.

Пакетная обработка

Операции автоматического исправления экземпляров выполняются в пакетах. В любой момент времени с помощью политики автоматического исправления может происходить исправление не более чем 5 % экземпляров из масштабируемого набора. Этот процесс помогает избежать одновременного удаления и повторного создания большого количества экземпляров, если они одновременно признаны неработоспособными.

Льготный период

Когда экземпляр проходит через операцию изменения состояния из-за действия PUT, PATCH или POST, выполняемого в масштабируемом наборе, все действия по восстановлению этого экземпляра выполняются только после окончания льготного периода. Период отсрочки — это промежуток времени, в течение которого экземпляру дается возможность вернуться в работоспособное состояние. Льготный период начинается после завершения изменения состояния, что помогает избежать преждевременных или случайных операций восстановления. Льготный период учитывается для любого созданного экземпляра в масштабируемом наборе, включая созданный в результате операции восстановления. Период отсрочки задается в минутах в формате ISO 8601. Его можно установить с помощью свойства automaticRepairsPolicy.gracePeriod. Льготный период может варьироваться от 10 минут до 90 минут и имеет значение по умолчанию 10 минут.

Приостановка исправлений

Масштабируемые наборы виртуальных машин предоставляют возможность при необходимости временно приостановить автоматическое восстановление экземпляров. Свойство serviceState для автоматических восстановлений в свойстве orchestrationServices в представлении экземпляра масштабируемого набора виртуальных машин показывает текущее состояние автоматических восстановлений. Если для масштабируемого набора выбирается автоматическое восстановление, параметр serviceState устанавливается в значение Running. Если автоматическое исправление для масштабируемого набора приостановлено, параметр serviceState имеет значение Suspended (Приостановлено). Если параметр automaticRepairsPolicy определен в масштабируемом наборе, но функция автоматического восстановления не включена, то параметр serviceState имеет значение Not Running.

Если экземпляры, создаваемые для замены неработоспособных экземпляров в масштабируемом наборе, будут оставаться неработоспособными даже после повторных выполнений операций исправления, то в качестве меры безопасности платформа меняет значение параметра serviceState для автоматических исправлений на Suspended (Приостановлено). Возобновить автоматическое исправление можно, установив значение serviceState для автоматических исправлений равным Running (Работает). Подробные указания приведены в разделе просмотр и обновление состояния службы политики автоматического исправления для масштабируемого набора.

Вы также можете настроить правила оповещений Azure для отслеживания изменений serviceState и получать уведомления, если автоматическое восстановление в вашем масштабируемом наборе будет приостановлено. Дополнительные сведения см. в статье "Использование правил оповещений Azure для мониторинга изменений состояния службы автоматического восстановления экземпляров".

Защита экземпляров и автоматическое восстановление

Если экземпляр в масштабируемом наборе защищен путем применения одной из политик защиты, автоматическое восстановление не выполняется в этом экземпляре. Это поведение применяется как к политикам защиты: защита от масштабирования и защита от масштабируемого набора.

Прекратить уведомление и автоматические исправления

Если функция уведомления о завершении включена в масштабируемом наборе, то во время операции замены удаление неработоспособного экземпляра будет следовать конфигурации функции уведомления о завершении. Уведомление о завершении отправляется через службу метаданных Azure — запланированные события, а удаление экземпляра отложено во время настроенного времени ожидания задержки. Однако создание нового экземпляра для замены неработоспособного экземпляра не ожидает завершения времени ожидания задержки.

Включение политики автоматического исправления при создании нового масштабируемого набора

Внимание

Начиная с ноября 2023 года масштабируемые наборы виртуальных машин, созданные с помощью PowerShell и Azure CLI, по умолчанию будут использоваться в режиме гибкой оркестрации, если режим оркестрации не указан. Дополнительные сведения об этом изменении и о действиях, которые необходимо предпринять, см. в руководстве по критическим изменениям для клиентов VmSS PowerShell/CLI — Microsoft Community Hub

Чтобы включить автоматическую политику исправления при создании нового масштабируемого набора, убедитесь, что выполнены все требования к включению этой функции. Конечная точка приложения должна быть правильно настроена для экземпляров масштабируемых наборов, чтобы избежать инициации нежелательных исправлений, во время настройки конечной точки. Для недавно созданных масштабируемых наборов исправления экземпляров выполняются только после завершения периода ожидания. Чтобы включить автоматическое восстановление экземпляра в масштабируемом наборе, используйте объект automaticRepairsPolicy в модели масштабируемого набора виртуальных машин.

Вы также можете использовать этот шаблон быстрого старта для развертывания масштабируемого набора виртуальных машин. В кратком руководстве масштабируемый набор включает проверку работоспособности балансировщика нагрузки и автоматическое восстановление экземпляров с настроенным грейс-периодом в 30 минут.

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

  1. Перейдите к Масштабируемые наборы виртуальных машин.
  2. Нажмите кнопку + Добавить, чтобы создать новый масштабируемый набор.
  3. Перейдите на вкладку Работоспособность.
  4. Откройте раздел Работоспособность.
  5. Включите параметр Мониторинг работоспособности приложений.
  6. Откройте раздел Политика автоматического восстановления.
  7. Установите параметр Автоматическое восстановление в значение Вкл.
  8. В льготный период (мин)укажите льготный период в минутах, допустимые значения — от 10 до 90 минут.
  9. После создания нового масштабируемого набора нажмите кнопку "Проверить и создать ".

Включение политики автоматического исправления при обновлении существующего масштабируемого набора

Перед включением автоматической политики исправления в существующем масштабируемом наборе убедитесь, что выполняются все требования к включению этой функции. Конечная точка приложения должна быть правильным образом настроена для экземпляров масштабируемых наборов, чтобы избежать инициации нежелательного исправления экземпляров, пока производится настройка конечной точки. Чтобы включить автоматическое восстановление экземпляра в масштабируемом наборе, используйте объект automaticRepairsPolicy в модели масштабируемого набора виртуальных машин.

После обновления модели существующего масштабируемого набора убедитесь, что ко всем экземплярам в наборе применена новейшая версия модели. См. указания в статье Как обновить виртуальные машины в соответствии с последней моделью масштабируемого набора.

Политику автоматического исправления у существующего масштабируемого набора можно изменить на портале Microsoft Azure.

Примечание.

Включите расширение работоспособности приложения или проверки работоспособности Load Balancer на ваших масштабируемых наборах виртуальных машин перед началом следующих шагов.

  1. Перейдите в существующий масштабируемый набор виртуальных машин.0
  2. В разделе Параметры в меню слева выберите Работоспособность и восстановление.
  3. Включите параметр Мониторинг работоспособности приложений.

Если вы отслеживаете масштабируемый набор с помощью расширения "Работоспособность приложений":

  1. Выберите Расширение работоспособности приложений в раскрывающемся списке монитора работоспособности приложений.

  2. В раскрывающемся списке "Протокол" выберите сетевой протокол, используемый приложением для отчета о работоспособности. Выберите соответствующий протокол на основе требований приложения. Параметры протокола: HTTP, HTTPS или TCP.

  3. В поле конфигурации номера порта введите сетевой порт, используемый для мониторинга работоспособности приложений.

  4. Для пути укажите путь конечной точки приложения (например, "/"), используемый для отчета о работоспособности приложения.

    Примечание.

    Расширение "Работоспособность приложений" будет обращаться к этому пути внутри каждой виртуальной машины в масштабируемом наборе, чтобы получить состояние работоспособности приложения каждого экземпляра. Если вы используете Бинарные состояния работоспособности, а узел отвечает со статусом 200 (ОК), экземпляр помечается как "Работоспособный". Во всех остальных случаях (в том числе при недоступности конечной точки) экземпляр помечается как "нездоровый". Для получения дополнительных вариантов состояний здоровья изучите Богатые состояния здоровья.

Если вы отслеживаете масштабируемый набор с помощью проб работоспособности SLB:

  • Выберите пробу подсистемы балансировки нагрузки из раскрывающегося списка монитора работоспособности приложений. Для пробы работоспособности Load Balancer выберите существующую пробу работоспособности или создайте новую пробу работоспособности для мониторинга.

Чтобы включить автоматическое восстановление, выполните приведенные действия.

  1. Откройте раздел Политика автоматического восстановления.
  2. Установите параметр Автоматическое восстановление в значение Вкл.
  3. В льготный период (мин)укажите льготный период в минутах. Допустимые значения : от 10 до 90 минут.
  4. По завершении выберите Сохранить.

Настройка действия восстановления для политики автоматического восстановления

Параметр в repairAction разделе automaticRepairsPolicy позволяет указать требуемое действие восстановления, выполняемое в ответ на неработоспособный экземпляр. Если вы обновляете действие восстановления в существующей политике автоматического восстановления, необходимо сначала отключить автоматическое восстановление в наборе масштабируемости и повторно включить его с обновленным действием восстановления. Этот процесс показан в приведенных ниже примерах.

В этом примере показано, как обновить действие восстановления в масштабируемом наборе с помощью существующей политики автоматического восстановления. Используйте API версии 2021-11-01 или более поздней.

Отключение существующей политики автоматического восстановления в масштабируемом наборе

PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
  "properties": {
    "automaticRepairsPolicy": {
            "enabled": "false"
        }
    }
}

Повторно включите политику автоматического восстановления с помощью требуемого действия восстановления

PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
  "properties": {
    "automaticRepairsPolicy": {
            "enabled": "true",
            "gracePeriod": "PT40M",
            "repairAction": "Reimage"
        }
    }
}

Просмотр и обновление состояния политики автоматического восстановления экземпляров

Используйте Получить представление экземпляра с версией API 2019-12-01 или выше для масштабируемого набора виртуальных машин, чтобы просмотреть serviceState для автоматического восстановления в свойстве orchestrationServices.

GET '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2019-12-01'
{
  "orchestrationServices": [
    {
      "serviceName": "AutomaticRepairs",
      "serviceState": "Running"
    }
  ]
}

Используйте Установить состояние службы оркестрации для приостановки или возобновления serviceState для автоматического восстановления.

POST '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2023-07-01'

{
  "serviceName": "AutomaticRepairs",
  "action": "Suspend"
}

Устранение неполадок

Не удается включить политику автоматического исправления

Если вы получите ошибку BadRequest с сообщением "Не удалось найти член 'automaticRepairsPolicy' для объекта типа 'properties'", тогда проверьте версию API, используемую для масштабируемого набора виртуальных машин. Для этой функции требуется API версии 2018-10-01 или более поздней.

Экземпляр не ремонтируется, даже когда политика включена

Возможно, экземпляр находится в периоде отсрочки. Этот период — это время ожидания после любого изменения состояния экземпляра перед выполнением восстановления, что помогает избежать преждевременного или случайного восстановления. Действие исправления должно начаться, как только закончится период отсрочки для экземпляра.

Просмотр состояния работоспособности приложения для экземпляров масштабируемых наборов

Для просмотра состояния работоспособности приложения вы можете использовать API для просмотра экземпляров в масштабируемом наборе виртуальных машин. При использовании Azure PowerShell можно применить командлет Get-AzVmssVM с флагом -InstanceView. Состояние работоспособности приложения указывается в свойстве vmHealth.

Также состояние работоспособности можно просматривать на портале Microsoft Azure. Перейдите к существующему масштабируемому набору, выберите Экземпляры в меню слева и просмотрите в столбце Состояние работоспособности состояние работоспособности для каждого из экземпляров масштабируемого набора.

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

Узнайте, как настроить расширение "Работоспособность приложения" или запросы на проверку работоспособности балансировщика нагрузки для ваших наборов масштабирования.