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

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

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

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

Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.

Начало работы с Azure Cloud Shell

Вариант Пример и ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. Screenshot that shows an example of Try It for Azure Cloud Shell.
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. Button to launch Azure Cloud Shell.
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Чтобы использовать Azure Cloud Shell, выполните следующие действия:

  1. Запустите Cloud Shell.

  2. Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.

  3. Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.

  4. Нажмите клавишу ВВОД, чтобы запустить код или команду.

Создание или изменение группы ресурсов

Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. Перед масштабируемым набором виртуальных машин необходимо создать группу ресурсов. Создайте группу ресурсов с помощью команды New-AzResourceGroup. В примере создается группа ресурсов под названием myResourceGroup в регионе EastUS.

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "EastUS"

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

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

Первым делом настройте имя и пароль администратора для экземпляров виртуальных машин с помощью командлета Get-Credential:

$cred = Get-Credential

Теперь создайте масштабируемый набор виртуальных машин с помощью New-AzVmss. Чтобы распределить трафик между отдельными экземплярами виртуальных машин, создается еще и подсистема балансировки нагрузки. Подсистема балансировки нагрузки включает правила для распределения трафика через TCP-порт 80 и разрешить трафик удаленного рабочего стола через TCP-порт 3389 и удаленное взаимодействие PowerShell через TCP-порт 5985:

Внимание

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

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -Location "EastUS" `
  -Credential $cred

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

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

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

Get-AzVM -ResourceGroupName "myResourceGroup"

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

ResourceGroupName                Name Location          VmSize  OsType      ProvisioningState 
-----------------                ---- --------          ------  ------       ----------------- 
myResourceGroup   myScaleSet_instance1   eastus Standard_DS1_v2 Windows         Succeeded     
myResourceGroup   myScaleSet_instance2   eastus Standard_DS1_v2 Windows         Succeeded     

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

Get-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1" 
ResourceGroupName      : myresourcegroup
Id                     : /subscriptions/resourceGroups/myresourcegroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_instance1
VmId                   : d27b5fde-d469-4087-b08f-87d0bd8df786
Name                   : myScaleSet_instance1
Type                   : Microsoft.Compute/virtualMachines
Location               : eastus
Tags                   : {}
HardwareProfile        : {VmSize}
NetworkProfile         : {NetworkInterfaces}
OSProfile              : {ComputerName, AdminUsername, WindowsConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState      : Succeeded
StorageProfile         : {ImageReference, OsDisk, DataDisks}
VirtualMachineScaleSet : {Id}
TimeCreated            : 11/16/2022 11:02:02 PM

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

При создании масштабируемого набора в начале этого руководство для экземпляров виртуальной машины был указан стандартный номер SKU виртуальной машины Standard_D1_v2. Можно указать другой размер экземпляра виртуальной машины с -VMSize параметром, чтобы указать размер экземпляра виртуальной машины Standard_F1.

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -VMSize "Standard_F1" `
  -Location "EastUS" `
  -Credential $cred

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

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

Сначала создайте объект масштабируемого набора с помощью командлета Get-AzVmss, затем укажите новое значение для sku.capacity. С помощью командлета Update-AzVmss примените изменение емкости. В следующем примере число экземпляров виртуальных машин в масштабируемом наборе определяется равным 3:

# Get current scale set
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

# Set and update the capacity of your scale set
$vmss.sku.capacity = 3
Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -VirtualMachineScaleSet $vmss 

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

Get-AzVm -ResourceGroupName "myResourceGroup" 

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

ResourceGroupName                Name Location          VmSize  OsType    ProvisioningState 
-----------------                ---- --------          ------  ------    ----------------- 
myResourceGroup   myScaleSet_instance1   eastus Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance2   eastus Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance3   eastus Standard_DS1_v2 Windows       Succeeded   

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

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

Stop-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

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

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

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

Start-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" 

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

Start-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

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

Чтобы перезапустить все виртуальные машины в масштабируемом наборе, используйте Restart-AzVmss.

Restart-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Чтобы перезапустить отдельный экземпляр, используйте [Restart-AzVM] и укажите имя экземпляра.

Restart-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

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

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

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

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

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

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

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