Установка и обновление приложений в Масштабируемые наборы виртуальных машин

Завершено

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

В сценарии компании по доставке требуется быстрый способ развертывания обновлений для приложения при минимальных помехах для работы конечных пользователей. Расширение пользовательских скриптов — идеальное решение.

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

Что такое расширение пользовательских скриптов Azure?

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

Пользовательские скрипты можно хранить в службе хранилища Azure или на GitHub. Добавить скрипт в виртуальную машину можно на портале Azure. Для выполнения пользовательских скриптов в рамках развертывания на основе шаблона используйте расширение пользовательских скриптов в сочетании с шаблонами Azure Resource Manager.

Установка приложения в масштабируемом наборе с помощью расширения пользовательских скриптов

Чтобы использовать расширение пользовательских скриптов с Azure CLI, создайте файл конфигурации, который определяет файлы для получения и команды для выполнения. Файл имеет формат JSON.

В следующем примере показана конфигурация пользовательского скрипта, который загружает приложение из репозитория в GitHub и устанавливает его в экземпляре узла, выполняя скрипт с именем custom_application_v1.sh:

# yourConfigV1.json 
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v1.sh"],
  "commandToExecute": "./custom_application_v1.sh"
}

Для развертывания этой конфигурации в масштабируемом наборе используется расширение пользовательских скриптов. В следующем коде показано, как создать расширение пользовательского скрипта для масштабируемого набора виртуальных машин с помощью Azure CLI. Эта команда устанавливает новое приложение в виртуальных машинах в масштабируемом наборе:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name yourScaleSet \
  --settings @yourConfigV1.json

Обновление приложения в масштабируемом наборе с помощью расширения пользовательских скриптов

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

# yourConfigV2.json
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v2.sh"],
  "commandToExecute": "./custom_application_v2.sh"
}

Для развертывания обновленного приложения можно использовать ту же az vmss extension set команду, что и ранее, но на этот раз вы будете ссылаться на новый файл конфигурации:

az vmss extension set \
    --publisher Microsoft.Azure.Extensions \
    --version 2.0 \
    --name CustomScript \
    --resource-group yourResourceGroup \
    --vmss-name yourScaleSet \
    --settings @yourConfigV2.json

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

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

Чтобы указать режим политики обновления при подготовке масштабируемого набора виртуальных машин, можно использовать upgrade-policy-mode параметр . В следующем коде используется Azure CLI:

az vmss create \
  --resource-group MyResourceGroup \
  --name MyScaleSet \
  --image Ubuntu2204 \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys