Azure 가상 머신 확장 집합에 사용자 지정 확장 정책 사용Use custom scale-in policies with Azure virtual machine scale sets

가상 머신 확장 집합 배포는 플랫폼 및 사용자 정의 사용자 지정 메트릭을 포함 하 여 메트릭 배열에 따라 확장 또는 축소할 수 있습니다.A virtual machine scale set deployment can be scaled-out or scaled-in based on an array of metrics, including platform and user-defined custom metrics. 스케일 아웃은 확장 집합 모델을 기반으로 새 가상 컴퓨터를 만들지만 확장 집합의 워크 로드가 진화 함에 따라 구성 및/또는 기능이 다를 수 있는 실행 중인 가상 컴퓨터에는 확장이 적용 됩니다.While a scale-out creates new virtual machines based on the scale set model, a scale-in affects running virtual machines that may have different configurations and/or functions as the scale set workload evolves.

규모 확장 정책 기능을 통해 사용자는 다음과 같은 세 가지 규모의 구성으로 가상 컴퓨터를 확장 하는 순서를 구성할 수 있습니다.The scale-in policy feature provides users a way to configure the order in which virtual machines are scaled-in, by way of three scale-in configurations:

  1. 기본값Default
  2. NewestVMNewestVM
  3. OldestVMOldestVM

기본 규모 조정 정책Default scale-in policy

기본적으로 가상 머신 확장 집합은이 정책을 적용 하 여 확장할 인스턴스를 결정 합니다.By default, virtual machine scale set applies this policy to determine which instance(s) will be scaled in. 기본 정책을 사용 하면 다음과 같은 순서로 확장을 위해 vm을 선택할 수 있습니다.With the Default policy, VMs are selected for scale-in in the following order:

  1. 가용성 영역 간 가상 머신 균형 조정 (확장 집합이 영역 구성에 배포 된 경우)Balance virtual machines across availability zones (if the scale set is deployed in zonal configuration)
  2. 장애 도메인 간 가상 머신 균형 조정 (최상의 활동)Balance virtual machines across fault domains (best effort)
  3. 가장 높은 인스턴스 ID의 가상 컴퓨터 삭제Delete virtual machine with the highest instance ID

기본 순서 지정을 수행 하려는 경우에는 사용자가 확장 정책을 지정할 필요가 없습니다.Users do not need to specify a scale-in policy if they just want the default ordering to be followed.

가용성 영역 또는 장애 도메인 간의 분산은 가용성 영역 또는 장애 도메인 간에 인스턴스를 이동 하지 않습니다.Note that balancing across availability zones or fault domains does not move instances across availability zones or fault domains. 분산은 가상 컴퓨터의 배포가 분산 될 때까지 불균형 가용성 영역 또는 장애 도메인에서 가상 컴퓨터를 삭제 하는 방식으로 이루어집니다.The balancing is achieved through deletion of virtual machines from the unbalanced availability zones or fault domains until the distribution of virtual machines becomes balanced.

NewestVM 확장 정책NewestVM scale-in policy

이 정책은 가용성 영역 (영역 배포의 경우)에서 Vm을 분산 한 후 확장 집합에서 가장 최근에 만든 가상 머신을 삭제 합니다.This policy will delete the newest created virtual machine in the scale set, after balancing VMs across availability zones (for zonal deployments). 이 정책을 사용 하도록 설정 하려면 가상 머신 확장 집합 모델에 대 한 구성을 변경 해야 합니다.Enabling this policy requires a configuration change on the virtual machine scale set model.

OldestVM 규모 조정 정책OldestVM scale-in policy

이 정책은 가용성 영역 (영역 배포의 경우)에서 Vm을 분산 한 후 확장 집합에서 가장 오래 전에 만든 가상 머신을 삭제 합니다.This policy will delete the oldest created virtual machine in the scale set, after balancing VMs across availability zones (for zonal deployments). 이 정책을 사용 하도록 설정 하려면 가상 머신 확장 집합 모델에 대 한 구성을 변경 해야 합니다.Enabling this policy requires a configuration change on the virtual machine scale set model.

규모 확장 정책 사용Enabling scale-in policy

규모 확장 정책은 가상 머신 확장 집합 모델에서 정의 됩니다.A scale-in policy is defined in the virtual machine scale set model. 위의 섹션에서 설명한 것 처럼 ' NewestVM ' 및 ' OldestVM ' 정책을 사용할 때 확장 정책 정의가 필요 합니다.As noted in the sections above, a scale-in policy definition is needed when using the ‘NewestVM’ and ‘OldestVM’ policies. 확장 집합 모델에 확장 정책 정의가 없는 경우 가상 머신 확장 집합에서 ' 기본 ' 확장 정책을 자동으로 사용 합니다.Virtual machine scale set will automatically use the ‘Default’ scale-in policy if there is no scale-in policy definition found on the scale set model.

다음과 같은 방법으로 가상 머신 확장 집합 모델에 대 한 확장 정책을 정의할 수 있습니다.A scale-in policy can be defined on the virtual machine scale set model in the following ways:

Azure portalAzure portal

다음 단계는 새 확장 집합을 만들 때 확장 정책을 정의 합니다.The following steps define the scale-in policy when creating a new scale set.

  1. 가상 머신 확장 집합 으로 이동 합니다.Go to Virtual machine scale sets .
  2. + 추가 를 선택 하 여 새 확장 집합을 만듭니다.Select + Add to create a new scale set.
  3. 크기 조정 탭으로 이동 합니다.Go to the Scaling tab.
  4. 크기 조정 정책 섹션을 찾습니다.Locate the Scale-in policy section.
  5. 드롭다운에서 확장 정책을 선택 합니다.Select a scale-in policy from the drop-down.
  6. 새 확장 집합 만들기를 완료 한 후 검토 + 만들기 단추를 선택 합니다.When you are done creating the new scale set, select Review + create button.

API 사용Using API

API 2019-03-01를 사용 하 여 가상 머신 확장 집합에 대 한 배치를 실행 합니다.Execute a PUT on the virtual machine scale set using API 2019-03-01:

PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01

{ 
"location": "<VMSS location>", 
    "properties": { 
        "scaleInPolicy": {  
            "rules": ["OldestVM"]  
        } 
    }    
} 

Azure PowerShellAzure PowerShell

리소스 그룹을 만든 다음, 확장 정책을 Oldestvm 으로 설정 하 여 새 확장 집합을 만듭니다.Create a resource group, then create a new scale set with scale-in policy set as OldestVM .

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "<VMSS location>" `
  -VMScaleSetName "myScaleSet" `
  -ScaleInPolicy “OldestVM”

Azure CLI 2.0Azure CLI 2.0

다음 예에서는 새 확장 집합을 만드는 동안 확장 정책을 추가 합니다.The following example adds a scale-in policy while creating a new scale set. 먼저 리소스 그룹을 만든 다음, 확장 정책을 사용 하 여 새 확장 집합을 Oldestvm 으로 만듭니다.First create a resource group, then create a new scale set with scale-in policy as OldestVM .

az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --image UbuntuLTS \
  --admin-username <azureuser> \
  --generate-ssh-keys \
  --scale-in-policy OldestVM

템플릿 사용Using Template

템플릿에서 "속성" 아래에 다음을 추가 합니다.In your template, under “properties”, add the following:

"scaleInPolicy": {  
      "rules": ["OldestVM"]  
}

위의 블록은 크기 조정을 트리거할 때 (자동 크기 조정 또는 수동 삭제를 통해) 가상 머신 확장 집합을 통해 영역 균형 확장 집합에서 가장 오래 된 VM을 삭제 하도록 지정 합니다.The above blocks specify that the virtual machine scale set will delete the Oldest VM in a zone-balanced scale set, when a scale-in is triggered (through Autoscale or manual delete).

가상 머신 확장 집합이 영역 균형이 맞지 않으면 확장 집합은 먼저 불균형 영역에서 Vm을 삭제 합니다.When a virtual machine scale set is not zone balanced, the scale set will first delete VMs across the imbalanced zone(s). 불균형 영역 내에서 확장 집합은 위에서 지정 된 확장 정책을 사용 하 여 확장할 VM을 결정 합니다.Within the imbalanced zones, the scale set will use the scale-in policy specified above to determine which VM to scale in. 이 경우 불균형 영역 내에서 확장 집합은 삭제할 해당 영역에서 가장 오래 된 VM을 선택 합니다.In this case, within an imbalanced zone, the scale set will select the Oldest VM in that zone to be deleted.

비 영역 가상 머신 확장 집합의 경우 정책은 삭제를 위해 확장 집합에서 가장 오래 된 VM을 선택 합니다.For non-zonal virtual machine scale set, the policy selects the oldest VM across the scale set for deletion.

위의 확장 정책에서 ' NewestVM '를 사용 하는 경우에도 동일한 프로세스가 적용 됩니다.The same process applies when using ‘NewestVM’ in the above scale-in policy.

규모 확장 정책 수정Modifying scale-in policies

규모 확장 정책을 수정 하는 것은 규모 확장 정책을 적용 하는 것과 동일한 프로세스를 따릅니다.Modifying the scale-in policy follows the same process as applying the scale-in policy. 예를 들어 위의 예제에서 ' OldestVM '의 정책을 ' NewestVM '로 변경 하려면 다음을 수행 합니다.For example, if in the above example, you want to change the policy from ‘OldestVM’ to ‘NewestVM’, you can do so by:

Azure portalAzure portal

Azure Portal를 통해 기존 확장 집합의 확장 정책을 수정할 수 있습니다.You can modify the scale-in policy of an existing scale set through the Azure portal.

  1. 기존 가상 머신 확장 집합의 왼쪽에 있는 메뉴에서 크기 조정 을 선택 합니다.In an existing virtual machine scale set, select Scaling from the menu on the left.
  2. 크기 조정 정책 탭을 선택 합니다.Select the Scale-In Policy tab.
  3. 드롭다운에서 확장 정책을 선택 합니다.Select a scale-in policy from the drop-down.
  4. 작업이 완료되면 저장 을 선택합니다.When you are done, select Save .

API 사용Using API

API 2019-03-01를 사용 하 여 가상 머신 확장 집합에 대 한 배치를 실행 합니다.Execute a PUT on the virtual machine scale set using API 2019-03-01:

PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01 

{ 
"location": "<VMSS location>", 
    "properties": { 
        "scaleInPolicy": {  
            "rules": ["NewestVM"]  
        } 
    }    
}

Azure PowerShellAzure PowerShell

기존 확장 집합의 규모 확장 정책을 업데이트 합니다.Update the scale-in policy of an existing scale set:

Update-AzVmss `
 -ResourceGroupName "myResourceGroup" `
 -VMScaleSetName "myScaleSet" `
 -ScaleInPolicy “OldestVM”

Azure CLI 2.0Azure CLI 2.0

기존 확장 집합의 규모 확장 정책을 업데이트 하는 예는 다음과 같습니다.The following is an example for updating the scale-in policy of an existing scale set:

az vmss update \  
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --scale-in-policy OldestVM

템플릿 사용Using Template

템플릿의 "속성"에서 템플릿을 아래와 같이 수정 하 고 다시 배포 합니다.In your template, under “properties”, modify the template as below and redeploy:

"scaleInPolicy": {  
      "rules": ["NewestVM"]  
} 

' NewestVM '를 ' Default ' 또는 ' OldestVM '으로 변경 하기로 결정 한 경우에도 동일한 프로세스가 적용 됩니다.The same process will apply if you decide to change ‘NewestVM’ to ‘Default’ or ‘OldestVM’

인스턴스 보호 및 규모 확장 정책Instance protection and scale-in policy

가상 머신 확장 집합은 다음과 같은 두 가지 유형의 인스턴스 보호를 제공 합니다.Virtual machine scale sets provide two types of instance protection:

  1. 규모 감축으로부터 보호Protect from scale-in
  2. 크기 집합 작업에서 보호Protect from scale-set actions

보호 된 가상 컴퓨터는 적용 된 확장 정책에 관계 없이 스케일 인 작업을 통해 삭제 되지 않습니다.A protected virtual machine is not deleted through a scale-in action, regardless of the scale-in policy applied. 예를 들어 VM_0 (확장 집합에서 가장 오래 된 VM)이 규모 확장에서 보호 되 고 확장 집합에 ' OldestVM ' 스케일 인 정책이 설정 된 경우 확장 집합에서 가장 오래 된 VM 인 경우에도에서 크기를 조정 하는 것으로 간주 되지 않습니다 VM_0.For example, if VM_0 (oldest VM in the scale set) is protected from scale-in, and the scale set has ‘OldestVM’ scale-in policy enabled, VM_0 will not be considered for being scaled in, even though it is the oldest VM in the scale set.

확장 집합에서 사용 하도록 설정 된 확장 정책에 관계 없이 언제 든 지 보호 된 가상 컴퓨터를 수동으로 삭제할 수 있습니다.A protected virtual machine can be manually deleted by the user at any time, regardless of the scale-in policy enabled on the scale set.

사용 예Usage examples

아래 예제에서는 가상 머신 확장 집합이 확장 이벤트를 트리거할 때 삭제할 Vm을 선택 하는 방법을 보여 줍니다.The below examples demonstrate how a virtual machine scale set will select VMs to be deleted when a scale-in event is triggered. 인스턴스 Id가 가장 높은 가상 머신은 확장 집합의 최신 Vm으로 간주 되며, 인스턴스 Id가 가장 작은 Vm은 확장 집합에서 가장 오래 된 Vm으로 간주 됩니다.Virtual machines with the highest instance IDs are assumed to be the newest VMs in the scale set and the VMs with the smallest instance IDs are assumed to be the oldest VMs in the scale set.

OldestVM 규모 조정 정책OldestVM scale-in policy

이벤트Event 영역 1의 인스턴스 IdInstance IDs in Zone1 영역 2의 인스턴스 IdInstance IDs in Zone2 영역 3의 인스턴스 IdInstance IDs in Zone3 선택 영역 확장Scale-in Selection
InitialInitial 3, 4, 5, 103, 4, 5, 10 2, 6, 9, 112, 6, 9, 11 1, 7, 81, 7, 8
규모 확장Scale-in 3, 4, 5, 103, 4, 5, 10 *2 _, 6, 9, 11*2 _, 6, 9, 11 1, 7, 81, 7, 8 영역 3에 가장 오래 된 VM이 있는 경우에도 영역 1와 2 중에서 선택 합니다.Choose between Zone 1 and 2, even though Zone 3 has the oldest VM. 해당 영역에서 가장 오래 된 VM 인 영역 2 V M 2에서 삭제 합니다.Delete VM2 from Zone 2 as it is the oldest VM in that zone.
규모 확장Scale-in 3 , 4, 5, 103 , 4, 5, 10 6, 9, 116, 9, 11 1, 7, 81, 7, 8 영역 3에 가장 오래 된 VM이 있는 경우에도 영역 1을 선택 합니다.Choose Zone 1 even though Zone 3 has the oldest VM. 해당 영역에서 가장 오래 된 VM 인 영역 1 V M 3에서 삭제 합니다.Delete VM3 from Zone 1 as it is the oldest VM in that zone.
규모 확장Scale-in 4, 5, 104, 5, 10 6, 9, 116, 9, 11 1 , 7, 81 , 7, 8 영역의 균형이 조정 됩니다.Zones are balanced. 크기 집합에서 가장 오래 된 VM 이므로 영역 3 VM1에서 삭제 합니다.Delete VM1 in Zone 3 as it is the oldest VM in the scale set.
규모 확장Scale-in 4 , 5, 104 , 5, 10 6, 9, 116, 9, 11 7, 87, 8 영역 1와 영역 2 중에서 선택 합니다.Choose between Zone 1 and Zone 2. 영역 1에서 VM4는 두 영역에서 가장 오래 된 VM 이므로 삭제 합니다.Delete VM4 in Zone 1 as it is the oldest VM across the two Zones.
규모 확장Scale-in 5, 105, 10 6 , 9, 116 , 9, 11 7, 87, 8 영역 1에 가장 오래 된 VM이 있는 경우에도 영역 2을 선택 합니다.Choose Zone 2 even though Zone 1 has the oldest VM. 영역 1에서 V M 6는 해당 영역에서 가장 오래 된 VM 이므로 삭제 합니다.Delete VM6 in Zone 1 as it is the oldest VM in that zone.
규모 확장Scale-in 5 , 105 , 10 9, 119, 11 7, 87, 8 영역의 균형이 조정 됩니다.Zones are balanced. 크기 집합에서 가장 오래 된 VM 이므로 영역 1 VM5에서 삭제 합니다.Delete VM5 in Zone 1 as it is the oldest VM in the scale set.

비 영역 가상 머신 확장 집합의 경우 정책은 삭제를 위해 확장 집합에서 가장 오래 된 VM을 선택 합니다.For non-zonal virtual machine scale sets, the policy selects the oldest VM across the scale set for deletion. "보호 된" VM은 삭제를 건너뛸 수 있습니다.Any “protected” VM will be skipped for deletion.

NewestVM 확장 정책NewestVM scale-in policy

이벤트Event 영역 1의 인스턴스 IdInstance IDs in Zone1 영역 2의 인스턴스 IdInstance IDs in Zone2 영역 3의 인스턴스 IdInstance IDs in Zone3 선택 영역 확장Scale-in Selection
InitialInitial 3, 4, 5, 103, 4, 5, 10 2, 6, 9, 112, 6, 9, 11 1, 7, 81, 7, 8
규모 확장Scale-in 3, 4, 5, 103, 4, 5, 10 2, 6, 9, 112, 6, 9, 11 1, 7, 81, 7, 8 영역 1와 2 중에서 선택 합니다.Choose between Zone 1 and 2. 영역 2에서 VM11는 두 영역에 있는 최신 VM 이므로 삭제 합니다.Delete VM11 from Zone 2 as it is the newest VM across the two zones.
규모 확장Scale-in 3, 4, 5, 103, 4, 5, 10 2, 6, 92, 6, 9 1, 7, 81, 7, 8 다른 두 영역 보다 더 많은 Vm이 있으므로 영역 1을 선택 합니다.Choose Zone 1 as it has more VMs than the other two zones. 영역 1에서 VM10을 삭제 합니다 .이는 해당 영역에서 최신 VM입니다.Delete VM10 from Zone 1 as it is the newest VM in that Zone.
규모 확장Scale-in 3, 4, 53, 4, 5 2, 6, 92, 6, 9 1, 7, 81, 7, 8 영역의 균형이 조정 됩니다.Zones are balanced. 크기 집합의 최신 VM 이므로 영역 2 VM9에서 삭제 합니다.Delete VM9 in Zone 2 as it is the newest VM in the scale set.
규모 확장Scale-in 3, 4, 53, 4, 5 2, 62, 6 1, 7, 81, 7, 8 영역 1와 영역 3 중에서 선택 합니다.Choose between Zone 1 and Zone 3. 영역 3에서 VM8는 해당 영역에서 최신 VM 이므로 삭제 합니다.Delete VM8 in Zone 3 as it is the newest VM in that Zone.
규모 확장Scale-in 3, 4, 53, 4, 5 2, 62, 6 1, 71, 7 영역 3에 최신 VM이 있는 경우에도 영역 1을 선택 합니다.Choose Zone 1 even though Zone 3 has the newest VM. 영역 1에서 VM5는 해당 영역에서 최신 VM 이므로 삭제 합니다.Delete VM5 in Zone 1 as it is the newest VM in that Zone.
규모 확장Scale-in 3, 43, 4 2, 62, 6 1, _ 7*1, _ 7* 영역의 균형이 조정 됩니다.Zones are balanced. 크기 집합의 최신 VM 이므로 영역 3 VM7에서 삭제 합니다.Delete VM7 in Zone 3 as it is the newest VM in the scale set.

비 영역 가상 머신 확장 집합의 경우 정책은 삭제를 위해 확장 집합에서 최신 VM을 선택 합니다.For non-zonal virtual machine scale sets, the policy selects the newest VM across the scale set for deletion. "보호 된" VM은 삭제를 건너뛸 수 있습니다.Any “protected” VM will be skipped for deletion.

문제 해결Troubleshoot

  1. ' 속성 ' 형식의 개체에서 ' scaleInPolicy ' 멤버를 찾을 수 없습니다. 라는 오류 메시지와 함께 ' BadRequest ' 오류가 발생 하는 경우 scaleInPolicy를 사용 하도록 설정 하지 못했습니다. 가상 머신 확장 집합에 사용 되는 API 버전을 확인 하세요.Failure to enable scaleInPolicy If you get a ‘BadRequest’ error with an error message stating "Could not find member 'scaleInPolicy' on object of type 'properties'”, then check the API version used for virtual machine scale set. 이 기능을 수행 하려면 API 버전 2019-03-01 이상이 필요 합니다.API version 2019-03-01 or higher is required for this feature.

  2. 규모 확장을 위해 Vm을 잘못 선택 하는 것은 위의 예를 참조 하세요.Wrong selection of VMs for scale-in Refer to the examples above. 가상 머신 확장 집합이 영역 배포 인 경우 확장 정책은 먼저 불균형 영역에 적용 된 후 영역에 분산 된 후에 확장 집합 전체에 적용 됩니다.If your virtual machine scale set is a Zonal deployment, scale-in policy is applied first to the imbalanced Zones and then across the scale set once it is zone balanced. 규모의 순서가 위의 예제와 일치 하지 않는 경우 문제 해결을 위해 가상 머신 확장 집합 팀을 사용 하 여 쿼리를 발생 시킵니다.If the order of scale-in is not consistent with the examples above, raise a query with the virtual machine scale set team for troubleshooting.

다음 단계Next steps

가상 머신 확장 집합에 애플리케이션을 배포하는 방법에 대해 알아봅니다.Learn how to deploy your application on virtual machine scale sets.