Implementar VMs em grupos de colocação por proximidade com Azure PowerShell

Aplica-se a: ✔️ VMs windows de VMs ✔️ do Linux

Para colocar as VMs o mais perto possível, alcançando a latência mais baixa possível, deve implementá-las num grupo de colocação por proximidade.

Um grupo de colocação por proximidade é um agrupamento lógico utilizado para garantir que os recursos de computação do Azure estão fisicamente localizados perto uns dos outros. Os grupos de colocação por proximidade são úteis para cargas de trabalho em que a baixa latência é um requisito.

Criar um grupo de colocação em proximidade

Crie um grupo de colocação por proximidade com o cmdlet 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

Listar grupos de colocação por proximidade

Pode listar todos os grupos de colocação por proximidade com o cmdlet 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

Criar uma VM

Crie uma VM no grupo de colocação por proximidade utilizando -ProximityPlacementGroup $ppg.Id para fazer referência ao ID do grupo de colocação por proximidade quando utilizar New-AzVM para criar a VM.

$vmName = "myVM"

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

Pode ver a VM no grupo de colocação com Get-AzProximityPlacementGroup.

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

Mover uma VM existente para um grupo de colocação por proximidade

Também pode adicionar uma VM existente a um grupo de colocação por proximidade. Primeiro tem de parar\desalocar a VM e, em seguida, atualizar a VM e reiniciar.

$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

Mover uma VM existente para fora de um grupo de colocação por proximidade

Para remover uma VM de um grupo de colocação por proximidade, primeiro tem de parar\desalocar a VM e, em seguida, atualizar a VM e reiniciar.

$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

Conjuntos de Disponibilidade

Também pode criar um conjunto de disponibilidade no seu grupo de colocação por proximidade. Utilize o mesmo -ProximityPlacementGroup parâmetro com o cmdlet New-AzAvailabilitySet para criar um conjunto de disponibilidade e todas as VMs criadas no conjunto de disponibilidade também serão criadas no mesmo grupo de colocação por proximidade.

Para adicionar ou remover um conjunto de disponibilidade existente para um grupo de colocação por proximidade, primeiro tem de parar todas as VMs no conjunto de disponibilidade.

Mover um conjunto de disponibilidade existente para um grupo de colocação por proximidade

$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 
    } 

Mover um conjunto de disponibilidade existente para fora de um grupo de colocação por proximidade

$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 
    } 

Conjuntos de dimensionamento

Também pode criar um conjunto de dimensionamento no seu grupo de colocação por proximidade. Utilize o mesmo -ProximityPlacementGroup parâmetro com New-AzVmss para criar um conjunto de dimensionamento e todas as instâncias serão criadas no mesmo grupo de colocação por proximidade.

Para adicionar ou remover um conjunto de dimensionamento existente para um grupo de colocação por proximidade, primeiro tem de parar o conjunto de dimensionamento.

Mover um conjunto de dimensionamento existente para um grupo de colocação por proximidade

$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

Mover um conjunto de dimensionamento existente para fora de um grupo de colocação por proximidade

$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

Passos seguintes

Também pode utilizar a CLI do Azure para criar grupos de colocação por proximidade.