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


Развертывание ВМ в группах близкого размещения с использованием Azure PowerShell

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

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

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

Создание группы близкого размещения

Создайте группу близкого размещения с помощью командлета New-AzProximityPlacementGroup.

$resourceGroup = "myPPGResourceGroup"
$location = "East US"
$ppgName = "myPPG"
$zone = "1"
$vmSize1 = "Standard_E64s_v4"
$vmSize2 = "Standard_M416ms_v2"
New-AzResourceGroup -Name $resourceGroup -Location $location
$ppg = New-AzProximityPlacementGroup `
   -Location $location `
   -Name $ppgName `
   -ResourceGroupName $resourceGroup `
   -ProximityPlacementGroupType Standard `
   -Zone $zone `
   -IntentVMSizeList $vmSize1, $vmSize2

Список групп близкого размещения

Вы можете перечислить все группы приближения с помощью командлета Get-AzProximityPlacementGroup.

Get-AzProximityPlacementGroup -ResourceGroupName $resourceGroup -Name $ppgName   

ResourceGroupName           : myPPGResourceGroup
ProximityPlacementGroupType : Standard
Id                          : /subscriptions/[subscriptionId]/resourceGroups/myPPGResourceGroup/providers/Microsoft.Compute/proximityPlacementGroups/myPPG
Name                        : myPPG
Type                        : Microsoft.Compute/proximityPlacementGroups
Location                    : eastus
Tags                        : {}
Intent                      : 
  VmSizes[0]                : Standard_E64s_v4
  VmSizes[1]                : Standard_M416ms_v2
Zones[0]                    : 1

Создание виртуальной машины

Создайте виртуальную машину в группе проксимального размещения, используя -ProximityPlacementGroup $ppg.Id для указания идентификатора группы проксимального размещения при использовании New-AzVM для создания виртуальной машины.

$vmName = "myVM"

New-AzVm `
  -ResourceGroupName $resourceGroup `
  -Name $vmName `
  -Location $location `
  -ProximityPlacementGroup $ppg.Id

Вы можете увидеть виртуальную машину в группе размещения с помощью Get-AzProximityPlacementGroup.

Get-AzProximityPlacementGroup -ResourceId $ppg.Id |
    Format-Table -Property VirtualMachines -Wrap

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

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

$ppg = Get-AzProximityPlacementGroup -ResourceGroupName myPPGResourceGroup -Name myPPG
$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Update-AzVM -VM $vm -ResourceGroupName $vm.ResourceGroupName -ProximityPlacementGroupId $ppg.Id
Start-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

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

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

$ppg = Get-AzProximityPlacementGroup -ResourceGroupName myPPGResourceGroup -Name myPPG
$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
$vm.ProximityPlacementGroup = ""
Update-AzVM -VM $vm -ResourceGroupName $vm.ResourceGroupName 
Start-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Группы доступности

Вы также можете создать набор доступности в группе "близкое размещение". Используйте тот же -ProximityPlacementGroup параметр с командлетом New-AzAvailabilitySet, чтобы создать группу доступности, и все виртуальные машины, созданные в группе доступности, также будут распределены в той же группе близкого размещения.

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

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

$resourceGroup = "myResourceGroup"
$avSetName = "myAvailabilitySet"
$avSet = Get-AzAvailabilitySet -ResourceGroupName $resourceGroup -Name $avSetName
$vmIds = $avSet.VirtualMachinesReferences
foreach ($vmId in $vmIDs){
    $string = $vmID.Id.Split("/")
    $vmName = $string[8]
    Stop-AzVM -ResourceGroupName $resourceGroup -Name $vmName -Force
    } 

$ppg = Get-AzProximityPlacementGroup -ResourceGroupName myPPG -Name myPPG
Update-AzAvailabilitySet -AvailabilitySet $avSet -ProximityPlacementGroupId $ppg.Id
foreach ($vmId in $vmIDs){
    $string = $vmID.Id.Split("/")
    $vmName = $string[8]
    Start-AzVM -ResourceGroupName $resourceGroup -Name $vmName 
    } 

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

$resourceGroup = "myResourceGroup"
$avSetName = "myAvailabilitySet"
$avSet = Get-AzAvailabilitySet -ResourceGroupName $resourceGroup -Name $avSetName
$vmIds = $avSet.VirtualMachinesReferences
foreach ($vmId in $vmIDs){
    $string = $vmID.Id.Split("/")
    $vmName = $string[8]
    Stop-AzVM -ResourceGroupName $resourceGroup -Name $vmName -Force
    } 

$avSet.ProximityPlacementGroup = ""
Update-AzAvailabilitySet -AvailabilitySet $avSet 
foreach ($vmId in $vmIDs){
    $string = $vmID.Id.Split("/")
    $vmName = $string[8]
    Start-AzVM -ResourceGroupName $resourceGroup -Name $vmName 
    } 

Масштабируемые наборы

Вы также можете создать масштабируемый набор в группе размещения близкого взаимодействия. Используйте тот же -ProximityPlacementGroup параметр с New-AzVmss для создания масштабируемого набора, и все экземпляры будут созданы в одной группе размещения близкого взаимодействия.

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

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

$ppg = Get-AzProximityPlacementGroup -ResourceGroupName myPPG -Name myPPG
$vmss = Get-AzVmss -ResourceGroupName myVMSSResourceGroup -VMScaleSetName myScaleSet
Stop-AzVmss -VMScaleSetName $vmss.Name -ResourceGroupName $vmss.ResourceGroupName
Update-AzVmss -VMScaleSetName $vmss.Name -ResourceGroupName $vmss.ResourceGroupName -ProximityPlacementGroupId $ppg.Id
Start-AzVmss -VMScaleSetName $vmss.Name -ResourceGroupName $vmss.ResourceGroupName

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

$vmss = Get-AzVmss -ResourceGroupName myVMSSResourceGroup -VMScaleSetName myScaleSet
Stop-AzVmss -VMScaleSetName $vmss.Name -ResourceGroupName $vmss.ResourceGroupName
$vmss.ProximityPlacementGroup = ""
Update-AzVmss -VirtualMachineScaleSet $vmss -VMScaleSetName $vmss.Name -ResourceGroupName $vmss.ResourceGroupName  
Start-AzVmss -VMScaleSetName $vmss.Name -ResourceGroupName $vmss.ResourceGroupName

Дальнейшие действия

Вы также можете использовать Azure CLI для создания групп близкого размещения.