Distribuera virtuella datorer till närhetsplaceringsgrupper med hjälp av Azure PowerShell

Gäller för: ✔️ Virtuella Linux-datorer ✔️ med Windows

För att få virtuella datorer så nära som möjligt och uppnå lägsta möjliga svarstid bör du distribuera dem inom en närhetsplaceringsgrupp.

En närhetsplaceringsgrupp är en logisk gruppering som används för att se till att Azure-beräkningsresurserna finns fysiskt nära varandra. Närhetsplaceringsgrupper är användbara för arbetsbelastningar där låg svarstid är ett krav.

Skapa en närhetsplaceringsgrupp

Skapa en närhetsplaceringsgrupp med cmdleten 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

Lista närhetsplaceringsgrupper

Du kan lista alla närhetsplaceringsgrupper med hjälp av cmdleten 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

Skapa en virtuell dator

Skapa en virtuell dator i närhetsplaceringsgruppen med hjälp av -ProximityPlacementGroup $ppg.Id för att referera till närhetsplaceringsgruppens ID när du använder New-AzVM för att skapa den virtuella datorn.

$vmName = "myVM"

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

Du kan se den virtuella datorn i placeringsgruppen med hjälp av Get-AzProximityPlacementGroup.

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

Flytta en befintlig virtuell dator till en närhetsplaceringsgrupp

Du kan också lägga till en befintlig virtuell dator i en närhetsplaceringsgrupp. Du måste stoppa\frigöra den virtuella datorn först och sedan uppdatera den virtuella datorn och starta om.

$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

Flytta en befintlig virtuell dator från en närhetsplaceringsgrupp

Om du vill ta bort en virtuell dator från en närhetsplaceringsgrupp måste du först stoppa/frigöra den virtuella datorn och sedan uppdatera den virtuella datorn och starta om.

$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

Tillgänglighetsuppsättningar

Du kan också skapa en tillgänglighetsuppsättning i närhetsplaceringsgruppen. Använd samma -ProximityPlacementGroup parameter med cmdleten New-AzAvailabilitySet för att skapa en tillgänglighetsuppsättning och alla virtuella datorer som skapas i tillgänglighetsuppsättningen skapas också i samma närhetsplaceringsgrupp.

Om du vill lägga till eller ta bort en befintlig tillgänglighetsuppsättning i en närhetsplaceringsgrupp måste du först stoppa alla virtuella datorer i tillgänglighetsuppsättningen.

Flytta en befintlig tillgänglighetsuppsättning till en närhetsplaceringsgrupp

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

Flytta en befintlig tillgänglighetsuppsättning från en närhetsplaceringsgrupp

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

Skalningsuppsättningar

Du kan också skapa en skalningsuppsättning i närhetsplaceringsgruppen. Använd samma -ProximityPlacementGroup parameter med New-AzVmss för att skapa en skalningsuppsättning och alla instanser skapas i samma närhetsplaceringsgrupp.

Om du vill lägga till eller ta bort en befintlig skalningsuppsättning i en närhetsplaceringsgrupp måste du först stoppa skalningsuppsättningen.

Flytta en befintlig skalningsuppsättning till en närhetsplaceringsgrupp

$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

Flytta en befintlig skalningsuppsättning från en närhetsplaceringsgrupp

$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

Nästa steg

Du kan också använda Azure CLI för att skapa närhetsplaceringsgrupper.