Краткое руководство. Создание масштабируемого набора виртуальных машин Linux с помощью шаблона ARM

Область применения: ✔️ Виртуальные машины Linux ✔️ Универсальные масштабируемые наборы

Примечание.

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

Масштабируемый набор виртуальных машин позволяет развертывать и управлять набором виртуальных машин автоматического масштабирования. Вы можете вручную изменить число виртуальных машин в масштабируемом наборе или определить правила для автоматического масштабирования в зависимости от использования ЦП, объема памяти или сетевого трафика. После этого Azure Load Balancer будет распределять трафик между экземплярами виртуальных машин в масштабируемом наборе. В этом кратком руководстве описано, как создать масштабируемый набор виртуальных машин и развернуть пример приложения с помощью шаблона Azure Resource Manager (шаблона ARM).

Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.

Шаблоны ARM позволяют развертывать группы связанных ресурсов. В одном шаблоне можно создать масштабируемый набор виртуальных машин, установить приложения и настроить правила автомасштабирования. Вы можете повторно использовать этот шаблон, применив переменные и параметры, чтобы обновить существующие или создать дополнительные масштабируемые наборы. Шаблоны можно развернуть с помощью портала Azure, Azure CLI или Azure PowerShell либо же на основе конвейеров непрерывной интеграции и непрерывной поставки (CI/CD).

Если среда соответствует предварительным требованиям и вы знакомы с использованием шаблонов ARM, нажмите кнопку Развертывание в Azure. Шаблон откроется на портале Azure.

Button to deploy the Resource Manager template to Azure.

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

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

Изучение шаблона

Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure.

В шаблоне определены следующие ресурсы:

Определение масштабируемого набора

Чтобы создать масштабируемый набор с помощью шаблона, определите необходимые ресурсы. Основные части типа ресурсов масштабируемого набора виртуальных машин:

Свойство Описание свойства Пример значения в шаблоне
type Создаваемый тип ресурса Azure Microsoft.Compute/virtualMachineScaleSets;
name Имя масштабируемого набора myScaleSet
расположение Расположение для создания масштабируемого набора Восточная часть США
sku.name Размер виртуальной машины для каждого экземпляра в масштабируемом наборе Standard_A1
sku.capacity Количество экземпляров виртуальных машин, которое требуется изначально создать 2
upgradePolicy.mode Режим обновления экземпляра виртуальной машины при внесении изменений Автоматически
imageReference Платформа или пользовательский образ, используемые для экземпляров виртуальных машин Сервер Canonical Ubuntu 16.04-LTS
osProfile.computerNamePrefix Префикс имени для каждого экземпляра виртуальной машины myvmss
osProfile.adminUsername Имя пользователя для каждого экземпляра виртуальной машины azureuser
osProfile.adminPassword Пароль для каждого экземпляра виртуальной машины P@ssw0rd!

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

Добавление примера приложения

Для проверки масштабируемого набора установите базовое веб-приложение. Когда вы развертываете масштабируемый набор, расширения виртуальных машин могут предусматривать задачи автоматизации и настройки после развертывания, например задачи установки приложения. Сценарии можно скачать из службы хранилища Azure или GitHub или передать на портал Azure во время выполнения расширения. Чтобы применить расширение к масштабируемому набору, добавьте раздел extensionProfile в предыдущий пример ресурса. Как правило, профиль расширения определяет следующие свойства:

  • тип расширения;
  • издатель расширения;
  • версия расширения;
  • расположение скриптов настройки или установки;
  • команды для выполнения на экземплярах виртуальных машин.

В шаблоне используется настраиваемое расширение скриптов для установки Bottle, веб-платформы Python и простого HTTP-сервера.

Два скрипта определены в файлах fileUris - installserver.sh и workserver.py. Эти файлы скачиваются из GitHub, затем commandToExecute выполняет bash installserver.sh для установки и настройки приложения.

Развертывание шаблона

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

Button to deploy the Resource Manager template to Azure.

Вы также можете развернуть шаблон Resource Manager с помощью Azure CLI:

# Create a resource group
az group create --name myResourceGroup --location EastUS

# Deploy template into resource group
az deployment group create \
    --resource-group myResourceGroup \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/python/vmss-bottle-autoscale/azuredeploy.json

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

Проверка развертывания

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

az network public-ip list \
    --resource-group myResourceGroup \
    --query [*].ipAddress -o tsv

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

Default web page in NGINX

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

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

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

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

Выполнив инструкции из этого краткого руководства, вы создали масштабируемый набор Linux с помощью шаблона ARM и применили расширение пользовательского скрипта, чтобы установить базовый веб-сервер Python на экземплярах виртуальной машины. Дополнительные сведения см. в руководстве по созданию Масштабируемые наборы виртуальных машин Azure и управлению ими.