Azure PowerShell을 사용하여 근접 배치 그룹에 VM 배포

적용 대상: ✔️ Linux VM ✔️ Windows VM

VM을 최대한 가깝게 유지하고, 대기 시간을 최대한 줄이려면, VM을 근접 배치 그룹 내에 배포해야 합니다.

근접 배치 그룹은 Azure 컴퓨팅 리소스가 물리적으로 서로 가까운 위치에 있도록 하는 데 사용되는 논리적 그룹화입니다. 근접 배치 그룹은 짧은 대기 시간이 필요한 워크로드에 유용합니다.

근접 배치 그룹 만들기

New-AzProximityPlacementGroup cmdlet을 사용하여 근접 배치 그룹을 만듭니다.

$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 cmdlet을 사용하여 모든 근접 배치 그룹을 나열할 수 있습니다.

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

VM 만들기

New-AzVM을 사용하여 VM을 만들 경우 -ProximityPlacementGroup $ppg.Id를 사용하여 근접 배치 그룹 ID를 참조하여 근접 배치 그룹에 VM을 만듭니다.

$vmName = "myVM"

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

Get-AzProximityPlacementGroup를 사용하여 배치 그룹에서 VM을 확인할 수 있습니다.

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

기존 VM을 근접 배치 그룹으로 이동

근접 배치 그룹에 기존 VM을 추가할 수도 있습니다. 먼저 VM의 할당을 취소한 다음에 VM을 업데이트하고 다시 시작해야 합니다.

$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

기존 VM을 근접 배치 그룹에서 제거

근접 배치 그룹에서 VM을 제거하려면 먼저 VM의 할당을 취소한 다음 VM을 업데이트하고 다시 시작해야 합니다.

$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

가용성 집합

또한 근접 배치 그룹에 가용성 집합을 만들 수 있습니다. New-AzAvailabilitySet cmdlet과 동일한 -ProximityPlacementGroup 매개 변수를 사용하여 가용성 집합을 만들면 가용성 집합에서 만든 모든 VM이 동일한 근접 배치 그룹에도 만들어집니다.

근접 배치 그룹에 기존 가용성 집합을 추가하거나 제거하려면 먼저 가용성 집합의 모든 VM을 중지해야 합니다.

기존 가용성 집합을 근접 배치 그룹으로 이동

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

확장 집합

또한 근접 배치 그룹에 확장 집합을 만들 수 있습니다. New-AzVmss와 동일한 -ProximityPlacementGroup 매개 변수를 사용하여 확장 집합을 만들면 모든 인스턴스가 동일한 근접 배치 그룹에 만들어집니다.

근접 배치 그룹에 기존 확장 집합을 추가하거나 제거하려면 먼저 확장 집합을 중지해야 합니다.

기존 확장 집합을 근접 배치 그룹으로 이동

$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를 사용하여 근접 배치 그룹을 만들 수도 있습니다.