Руководство. Создание масштабируемого набора виртуальных машин и управление ими с помощью 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 и управление ими. Перед масштабируемым набором виртуальных машин необходимо создать группу ресурсов. Создайте группу ресурсов с помощью команды az group create. В этом примере создается группа ресурсов с именем myResourceGroup в регионе eastus.

az group create --name myResourceGroup --location eastus

Имя группы ресурсов указывается при создании или изменении масштабируемого набора в этом руководстве.

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

Внимание

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

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

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image <SKU image> \
  --admin-username azureuser \
  --generate-ssh-keys

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

Просмотр сведений об экземплярах виртуальных машин в масштабируемом наборе

Чтобы просмотреть список экземпляров виртуальных машин в масштабируемом наборе, используйте az vm list следующим образом:

az vm list --resource-group myResourceGroup --output table

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

Name                 ResourceGroup    Location    Zones
-------------------  ---------------  ----------  -------
myScaleSet_instance1  myResourceGroup  eastus
myScaleSet_instance2  myResourceGroup  eastus

Чтобы просмотреть дополнительные сведения о конкретном экземпляре виртуальной машины, используйте az vm show и укажите имя виртуальной машины.

az vm show --resource-group myResourceGroup --name myScaleSet_instance1
{
  "hardwareProfile": {
    "vmSize": "Standard_DS1_v2",
  },
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_instance1",
  "location": "eastus",
  "name": "myScaleSet_instance1",
  "networkProfile": {
    "networkInterfaces": [
      {
        "deleteOption": "Delete",
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-0396c71c",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      }
    ]
  },
  "osProfile": {
    "adminUsername": "azureuser",
    "allowExtensionOperations": true,
    "computerName": "myScaleSN30BP1",
    "linuxConfiguration": {
      "disablePasswordAuthentication": true,
      "enableVmAgentPlatformUpdates": false,
      "patchSettings": {
        "assessmentMode": "ImageDefault",
        "patchMode": "ImageDefault"
      },
      "provisionVmAgent": true,
      "ssh": {
        "publicKeys": [
          {
            "keyData": "ssh-rsa",
            "path": "/home/azureuser/.ssh/authorized_keys"
          }
        ]
      }
    },
    "requireGuestProvisionSignal": true,
    "secrets": [],
  },
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "storageProfile": {
    "dataDisks": [],
    "imageReference": {
      "exactVersion": "XXXXX",
      "offer": "myOffer",
      "publisher": "myPublisher",
      "sku": "mySKU",
      "version": "latest"
    },
    "osDisk": {
      "caching": "ReadWrite",
      "createOption": "FromImage",
      "deleteOption": "Delete",
      "diskSizeGb": 30,
      "managedDisk": {
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myScaleSet_instance1_disk1",
        "resourceGroup": "myResourceGroup",
        "storageAccountType": "Premium_LRS"
      },
      "name": "myScaleSet_instance1_disk1",
      "osType": "Linux",
    }
  },
  "tags": {},
  "timeCreated": "2022-11-16T20:32:15.024581+00:00",
  "type": "Microsoft.Compute/virtualMachines",
  "virtualMachineScaleSet": {
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
    "resourceGroup": "myResourceGroup"
  },
}

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

При создании масштабируемого набора в начале этого руководство для экземпляров виртуальной машины был указан стандартный номер SKU виртуальной машины Standard_D1_v2. Вы можете указать другой размер экземпляра виртуальной машины на основе выходных данных команды az vm list-sizes. В указанном ниже примере будет создан масштабируемый набор с использованием параметра --vm-sku, который позволяет указать размер экземпляра виртуальной машины Standard_F1. Так как создание и настройка всех ресурсов и экземпляров виртуальных машин масштабируемого набора занимает несколько минут, вам не нужно развертывать следующий масштабируемый набор.

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image <SKU image> \
  --vm-sku Standard_F1 \
  --admin-user azureuser \
  --generate-ssh-keys

Изменение емкости масштабируемого набора

При создании масштабируемого набора в начале этого руководства по умолчанию было развернуто два экземпляра. Вы можете указать параметр --instance-count в команде az vmss create, чтобы изменить число экземпляров, создаваемых в масштабируемом наборе. Чтобы увеличить или уменьшить число экземпляров виртуальных машин в имеющемся масштабируемом наборе, можно изменить его емкость вручную. Масштабируемый набор создает или удаляет необходимое количество экземпляров виртуальной машины, а затем настраивает подсистему балансировки нагрузки для распределения трафика.

Чтобы вручную увеличить или уменьшить число экземпляров виртуальных машин в масштабируемом наборе, выполните команду az vmss scale. В следующем примере число экземпляров виртуальных машин в масштабируемом наборе определяется равным 3:

az vmss scale \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --new-capacity 3

Обновление емкости масштабируемого набора занимает несколько минут. Чтобы просмотреть количество экземпляров, которые теперь есть в масштабируемом наборе, используйте az vm list и запрос к связанной группе ресурсов.

az vm list --resource-group myResourceGroup --output table
Name                 ResourceGroup    Location    Zones
-------------------  ---------------  ----------  -------
myScaleSet_instance1  myResourceGroup  eastus
myScaleSet_instance2  myResourceGroup  eastus
myScaleSet_instance3  myResourceGroup  eastus

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

Чтобы остановить все экземпляры виртуальных машин в масштабируемом наборе, используйте az vmss stop.

az vmss stop \
  --resource-group myResourceGroup \
  --name myScaleSet

Чтобы остановить отдельные экземпляры виртуальных машин в масштабируемом наборе, используйте az vm stop и укажите имя экземпляра.

az vm stop \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Остановленные экземпляры виртуальных машин остаются выделенными, и за них по-прежнему взимается плата за вычислительные операции. Если вы хотите, чтобы экземпляры виртуальных машин были освобождены, а только взимается плата за хранение, используйте az vm deallocate и укажите имена экземпляров, которые требуется освободить.

az vm deallocate \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Запуск экземпляров виртуальных машин в масштабируемом наборе

Чтобы запустить все экземпляры виртуальных машин в масштабируемом наборе, используйте az vmss start.

az vmss start \
  --resource-group myResourceGroup \
  --name myScaleSet

Чтобы запустить отдельные экземпляры виртуальных машин в масштабируемом наборе, используйте az vm start и укажите имя экземпляра.

az vm start \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Перезапуск экземпляров виртуальных машин в масштабируемом наборе

Чтобы перезапустить все экземпляры виртуальных машин в масштабируемом наборе, используйте az vmss restart.

az vmss restart \
  --resource-group myResourceGroup \
  --name myScaleSet

Чтобы перезапустить отдельные экземпляры виртуальных машин в масштабируемом наборе, используйте az vm restart и укажите имя экземпляра.

az vm restart \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

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

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

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

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

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

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

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