Руководство. Установка приложений в Масштабируемые наборы виртуальных машин с помощью Azure CLI

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

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

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Необходимые компоненты

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для работы с этой статьей требуется Azure CLI версии 2.0.29 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

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

Расширение настраиваемых сценариев скачивает и выполняет сценарии на виртуальных машинах Azure. Это расширение можно использовать для настройки после развертывания, установки программного обеспечения и других задач настройки или управления. Сценарии можно скачать из службы хранилища Azure или GitHub или передать на портал Azure во время выполнения расширения.

Расширение пользовательских сценариев интегрируется с шаблонами Azure Resource Manager, и его также можно использовать с Azure CLI, Azure PowerShell, порталом Azure или REST API. Дополнительные сведения см. в статье Расширение Custom Script в ОС Windows.

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

Создание определения для расширения настраиваемых скриптов

Чтобы увидеть расширение настраиваемых скриптов в действии, создайте масштабируемый набор, который устанавливает веб-сервер NGINX и отображает имя узла экземпляра виртуальной машины масштабируемого набора. Приведенное ниже определение расширения настраиваемых скриптов скачивает пример скрипта из репозитория GitHub, устанавливает необходимые пакеты, а затем записывает имя узла экземпляра виртуальной машины на базовую HTML-страницу.

В текущей оболочке создайте файл customConfig.json и вставьте в него следующую конфигурацию. Например, создайте файл в Cloud Shell, не на локальном компьютере. Вы можете использовать любой редактор. В этом руководстве мы будем использовать Vi. Введитеvi в Cloud Shell. Вставьте приведенный ниже код JSON в редактор и введите :w customConfig.json.

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh"],
  "commandToExecute": './automate_nginx.sh'
}

Примечание.

Возможно, вам потребуется инвертировать одинарные (') и двойные кавычки (") в блоке JSON, если вы решите ссылаться на код JSON напрямую (а не через файл customConfig.json) в параметре --settings ниже.

Создание масштабируемого набора

Важно!

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

Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Теперь создайте масштабируемый набор виртуальных машин с помощью az vmss create. В следующем примере создаются масштабируемый набор myScaleSet и ключи SSH, если они еще не созданы.

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image Ubuntu2204 \
  --orchestration-mode Flexible \
  --admin-username azureuser \
  --generate-ssh-keys

Создание и настройка всех ресурсов и виртуальных машин масштабируемого набора занимает несколько минут.

Применение расширения настраиваемых скриптов

Примените конфигурацию расширения настраиваемых сценариев к экземплярам виртуальных машин в своем масштабируемом наборе командой az vmss extension set. В следующем примере применяется конфигурация customConfig.json к экземплярам виртуальных машин набора myScaleSet в группе ресурсов myResourceGroup.

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

Каждый экземпляр виртуальной машины в масштабируемом наборе скачивает и запускает скрипт из репозитория GitHub. В более сложном примере можно установить несколько компонентов и файлов приложения. Если масштабируемый набор развернут, новые экземпляры виртуальных машин автоматически будут применять одно и то же расширение настраиваемых скриптов и устанавливать нужное приложение.

Внимание

Имена файлов чувствительны к регистру. Используйте точное имя файла, указанное в этих инструкциях, чтобы избежать сбоя.

Проверка масштабируемого набора

Чтобы разрешить передачу трафика в веб-сервер, создайте правило подсистемы балансировки нагрузки с помощью команды az network lb rule create. В следующем примере создается правило myLoadBalancerRuleWeb.

az network lb rule create \
  --resource-group myResourceGroup \
  --name myLoadBalancerRuleWeb \
  --lb-name myScaleSetLB \
  --backend-pool-name myScaleSetLBBEPool \
  --backend-port 80 \
  --frontend-ip-name loadBalancerFrontEnd \
  --frontend-port 80 \
  --protocol tcp

Чтобы посмотреть, как работает веб-сервер, получите общедоступный IP-адрес подсистемы балансировки нагрузки с помощью команды az network public-ip show. Следующий пример получает IP-адрес для myScaleSetLBPublicIP, созданного ранее вместе с масштабируемым набором.

az network public-ip show \
  --resource-group myResourceGroup \
  --name myScaleSetLBPublicIP \
  --query [ipAddress] \
  --output tsv

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

Basic web page in Nginx

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

Обновление развертывания приложения

На протяжении всего жизненного цикла масштабируемого набора может потребоваться развернуть обновленную версию приложения. Расширение пользовательских скриптов позволяет ссылаться на обновленный скрипт развертывания и повторно применять расширение к масштабируемому набору. Когда на предыдущем шаге создавался масштабируемый набор, для параметра --upgrade-policy-mode было задано значение automatic. Этот параметр позволяет экземплярам виртуальных машин в масштабируемом наборе автоматически обновлять и применять последнюю версию приложения.

В текущей оболочке создайте файл customConfigv2.json и вставьте в него следующую конфигурацию. Это определение позволяет запустить обновленную версию v2 скрипта установки приложения.

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx_v2.sh"],
  "commandToExecute": "./automate_nginx_v2.sh"
}

Примените конфигурацию расширения настраиваемых скриптов к экземплярам виртуальных машин в своем масштабируемом наборе. Для этого выполните команду az vmss extension set. Этот файл customConfigv2.json используется для применения обновленной версии приложения.

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

Все экземпляры виртуальной машины в масштабируемом наборе автоматически обновляются до последней версии примера веб-страницы. Чтобы просмотреть обновленную версию, обновите веб-сайт в браузере:

Updated web page in Nginx

Очистка ресурсов

Чтобы удалить масштабируемый набор и дополнительные ресурсы, удалите группу ресурсов и все входящие в нее ресурсы с помощью команды az group delete. При использовании параметра --no-wait управление возвращается в командную строку без ожидания завершения операции. Параметр --yes подтверждает, что вы хотите удалить ресурсы без дополнительного запроса.

az group delete --name myResourceGroup --no-wait --yes

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

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

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

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