Установка и обновление приложений в Масштабируемые наборы виртуальных машин
При развертывании приложения в масштабируемом наборе требуется механизм, который постоянно обновляет приложение во всех экземплярах масштабируемого набора. Этот результат можно достичь с помощью расширения пользовательских скриптов.
В сценарии компании по доставке требуется быстрый способ развертывания обновлений для приложения при минимальных помехах для работы конечных пользователей. Расширение пользовательских скриптов — идеальное решение.
На этом уроке вы узнаете, как использовать расширение пользовательских скриптов для обновления приложения, выполняющегося в масштабируемом наборе.
Что такое расширение пользовательских скриптов 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