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


Руководство. Установка приложений в Масштабируемые наборы виртуальных машин с помощью 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

Внимание

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

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

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

az vmss update-instances --resource-group myResourceGroup --name myScaleSet --instance-ids "*"

Разрешить трафик через порт 80

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

az network nsg rule create --name AllowHTTP --resource-group myResourceGroup --nsg-name myScaleSetNSG --access Allow --priority 1010 --destination-port-ranges 80 

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

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

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

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

Базовая веб-страница NGINX

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

Изменение политики обновления

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

az vmss update \
    --name myScaleSet \
    --resource-group myResourceGroup \
    --set upgradePolicy.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

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

Обновленная веб-страница NGINX

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

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

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

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

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

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

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