다음을 통해 공유


Azure에서의 VM 및 확장 집합용 자동 확장 업그레이드

자동 확장 업그레이드는 Azure VM 및 Azure Virtual Machine Scale Sets에 사용할 수 있습니다. VM 또는 확장 집합에서 자동 확장 업그레이드를 사용하도록 설정하면 확장 게시자가 해당 확장에 대한 새 버전을 릴리스할 때마다 확장이 자동으로 업그레이드됩니다.

자동 확장 업그레이드의 기능은 다음과 같습니다.

  • Azure VM 및 Azure Virtual Machine Scale Sets에 지원됩니다.
  • 업그레이드는 가용성 우선 배포 모델에 적용됩니다.
  • Virtual Machine Scale Set의 경우 확장 집합 가상 머신의 20% 이하가 단일 일괄 처리로 업그레이드됩니다. 최소 일괄 처리 크기는 하나의 가상 머신입니다.
  • 모든 VM 크기와 Windows 및 Linux 확장 모두에서 작동합니다.
  • 자동 업그레이드는 언제든지 취소할 수 있습니다.
  • 자동 확장 업그레이드는 모든 크기의 Virtual Machine Scale Sets에서 사용하도록 설정할 수 있습니다.
  • 지원되는 각 확장은 개별적으로 등록되며, 자동으로 업그레이드할 확장을 선택할 수 있습니다.
  • 모든 퍼블릭 클라우드 지역에서 지원됩니다.

자동 확장 업그레이드 작동 방식

확장 업그레이드 프로세스는 VM에서의 기존 확장 버전을 확장 게시자가 게시한 시점에 적용된 확장의 새 버전으로 대체합니다. 새 확장을 설치한 후에는 VM의 상태를 모니터링합니다. 업그레이드 완료 후 5 분 이내에 VM의 상태가 정상 상태를 벗어나면 확장 버전은 이전 버전으로 롤백됩니다.

실패한 확장 업그레이드는 자동으로 다시 시도됩니다. 재시도는 사용자 개입 없이 며칠마다 자동으로 실행됩니다.

가용성 우선 업데이트

플랫폼 오케스트레이션 업그레이드에 대한 가용성 우선 모델은 Azure의 가용성 구성이 여러 가용성 수준에서 적용되게 합니다.

Azure 플랫폼은 업그레이드를 진행 중인 가상 머신 그룹을 대상으로 업그레이드를 오케스트레이션합니다.

지역 간:

  • Azure 전역에서의 배포 실패를 방지하기 위해 업그레이드는 Azure 전역에서 단계적으로 이동합니다.
  • '단계'에는 지역이 하나 이상 존재할 수 있으며, 업그레이드는 이전 단계의 적격 VM의 업그레이드가 성공했을 때만 다른 단계로 이동합니다.
  • 지리적으로 쌍을 이루는 지역은 동시에 업그레이드되지 않으며 동일한 지역적 단계에 존재할 수 없습니다.
  • 업그레이드 성공 여부는 VM 사후 업그레이드의 상태를 추적하여 결정합니다. VM 상태는 VM에 대한 플랫폼 상태 표시기를 통해 추적합니다. Virtual Machine Scale Sets의 경우 VM 상태는 애플리케이션 상태 프로브 또는 (확장 집합에 적용된) 애플리케이션 상태 확장을 통해 추적합니다.

지역 내에서:

  • 서로 다른 가용성 영역에 있는 VM은 동일한 업그레이드로 동시에 업그레이드되지 않습니다.
  • 단일 가용성 집합에 속하지 않는 VM은 최대한 일괄 처리되어 구독에 있는 모든 VM이 동시에 업그레이드되지 않게 합니다.

'집합' 내에서:

  • 공통 가용성 집합 또는 확장 집합에 있는 모든 VM 은 동시에 업그레이드되지 않습니다.
  • 공통 가용성 집합의 VM은 업그레이드 도메인 경계 내에서 업그레이드되며, 여러 업그레이드 도메인의 VM은 동시에 업그레이드되지 않습니다.
  • 공통 가상 머신 확장 집합에 있는 VM은 일괄적으로 그룹화되고 업데이트 도메인 경계 내에서 업그레이드됩니다. 확장 집합에 정의된 업그레이드 정책은 업그레이드 중에 적용됩니다. 업그레이드 정책을 수동으로 설정하면 자동 확장 업그레이드를 사용하도록 설정한 경우에도 VM이 업데이트되지 않습니다.

Virtual Machine Scale Sets의 업그레이드 프로세스

  1. 업그레이드 프로세스를 시작하기 전에 오케스트레이터는 전체 확장 집합에서 어떠한 이유로든 비정상 상태인 VM 비율이 20% 이하인지를 확인합니다.

  2. 업그레이드 오케스트레이터는 업그레이드할 VM 인스턴스의 일괄 처리를 식별합니다. 업그레이드 일괄 처리는 단일 가상 컴퓨터의 최소 일괄 처리 크기에 따라 총 VM 수의 최대 20%를 포함할 수 있습니다. 업그레이드 정책 및 가용성 영역의 정의는 일괄 처리를 식별하는 동안 고려됩니다.

  3. 업그레이드 후 VM 상태는 다음 일괄 처리로 이동하기 전에 항상 모니터링됩니다. 구성된 애플리케이션 상태 프로브 또는 애플리케이션 상태 확장을 사용하는 확장 집합의 경우 애플리케이션 상태도 모니터링됩니다. 업그레이드 작업은 VM이 정상이 될 때까지 최대 5분 동안 (또는 정의된 상태 프로브 구성이 적용될 때까지) 기다렸다가 다음 배치를 업그레이드합니다. 업그레이드 후 VM의 상태가 정상이 되지 않는다면 기본적으로 VM의 이전 확장 버전이 다시 설치됩니다.

  4. 업그레이드 오케스트레이터는 업그레이드 후 비정상 상태가 되는 VM의 백분율도 추적합니다. 업그레이드 프로세스 중에 업그레이드된 인스턴스의 20% 이상이 비정상 상태가 되면 업그레이드가 중지됩니다.

확장 집합의 모든 인스턴스가 업그레이드될 때까지 위의 프로세스가 계속됩니다.

확장 집합 업그레이드 오케스트레이터는 전체 확장 집합 상태를 확인한 후에 모든 배치를 업그레이드합니다. 일괄 처리 업그레이드 중에 확장 집합 가상 머신의 상태에 영향을 줄 수 있는, 계획되었거나 계획되지 않은 다른 동시 유지 관리 활동이 진행될 수 있습니다. 확장 집합 인스턴스의 20% 이상이 비정상 상태가 될 경우 현재 배치가 끝나면 확장 집합 업그레이드가 중지됩니다.

지원되는 확장

자동 확장 업그레이드는 다음 확장을 지원합니다(추가 확장이 주기적으로 추가됩니다).

자동 확장 업그레이드 사용 설정

확장에 대해 자동 확장 업그레이드를 사용하도록 설정하려면 enableAutomaticUpgrade 속성이 true로 설정되고 모든 확장 정의에 개별적으로 추가되었는지 확인해야 합니다.

Virtual Machines용 REST API

Azure VM의 확장(이 예제에서는 Dependency Agent 확장)에 자동 확장 업그레이드를 사용하도록 설정하려면 다음 호출을 사용하세요.

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{    
    "name": "extensionName",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "<location>",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true, 
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5"
        }
}

Virtual Machine Scale Sets용 REST API

다음 호출을 사용하여 확장을 확장 집합 모델에 추가하세요.

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
   "location": "<location>",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [
            	{
                "name": "<extensionName>",
            	  "properties": {
             		    "autoUpgradeMinorVersion": true,
             		    "enableAutomaticUpgrade": true,
              	    "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
              	    "type": "DependencyAgentWindows",
              	    "typeHandlerVersion": "9.5"
            		}
          	    }
        	    ]
    	    }
    	}
    }
}

가상 머신용 Azure PowerShell

Set-AzVMExtension cmdlet 사용:

Set-AzVMExtension -ExtensionName "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ExtensionType "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -Location WestUS `
    -EnableAutomaticUpgrade $true

Virtual Machine Scale Sets용 Azure PowerShell

Add-AzVmssExtension cmdlet을 사용하여 확장을 확장 집합 모델에 추가:

Add-AzVmssExtension -VirtualMachineScaleSet $vmss
    -Name "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Type "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -EnableAutomaticUpgrade $true

확장을 추가한 후 Update-AzVmss를 상요하여 확장 집합을 업데이트합니다.

Virtual Machines용 Azure CLI

az vm extension set cmdlet 사용:

az vm extension set \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Virtual Machine Scale Sets용 Azure CLI

az vmss extension set cmdlet을 사용하여 확장을 확장 집합 모델에 추가:

az vmss extension set \
    --resource-group myResourceGroup \
    --vmss-name myVMSS \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Virtual Machines용 ARM 템플릿

다음 예제에서는 Azure Resource Manager를 사용하여 가상 머신에서 확장에 대한 자동 확장 업그레이드(이 예제의 Dependency Agent 확장)를 설정하는 방법을 설명합니다.

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[resourceGroup().location]",
    "name": "<extensionName>",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
    ],
    "properties": {
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5",
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true,
        "settings": {
            "enableAMA": "true"
        }
    }
}

Virtual Machine Scale Sets용 ARM 템플릿

다음 예제를 사용하여 확장 집합 모델 내의 확장에서 자동 확장 업그레이드를 설정합니다.

{
   "type": "Microsoft.Compute/virtualMachineScaleSets",
   "apiVersion": "2023-09-01",
   "name": "[variables('vmScaleSetName')]",
   "location": "[resourceGroup().location]",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [{
                     "name": "<extensionName>",
                     "properties": {
                          "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
                          "type": "DependencyAgentWindows",
                          "typeHandlerVersion": "9.5",
                          "autoUpgradeMinorVersion": true,
                          "enableAutomaticUpgrade": true,
                     }
                }]
    	    }
    	}
    }
}

Azure Portal 사용

Azure Portal - 확장 블레이드를 사용하여 기존 Virtual Machines 및 Virtual Machine Scale Sets에서 확장을 자동으로 업그레이드할 수 있습니다.

  1. Virtual Machines 또는 Virtual Machines Scale Sets 블레이드로 이동하고 이름을 클릭하여 리소스를 선택합니다.
  2. 설정 아래의 "확장 + 애플리케이션" 블레이드로 이동하여 리소스에 설치된 모든 확장을 봅니다. "자동 업그레이드 상태" 열은 확장의 자동 업그레이드가 사용하도록 설정되었는지, 사용하지 않도록 설정되었는지 또는 지원되지 않는지를 알려줍니다.
  3. 확장 이름을 클릭하여 확장 세부 정보 블레이드로 이동합니다. Azure Portal - 확장 블레이드의 스크린샷.
  4. "자동 업그레이드 사용"을 클릭하여 확장의 자동 업그레이드를 사용하도록 설정합니다. 이 단추를 사용하여 필요한 경우 자동 업그레이드를 사용하지 않도록 설정할 수도 있습니다.
    확장의 자동 업그레이드를 사용하도록 설정하는 Azure Portal의 스크린샷.

여러 확장을 이용하는 확장 업그레이드

VM 또는 가상 머신 확장 집합에는 자동 확장 업그레이드를 사용하는 확장이 여러 개 존재할 수 있습니다. 또한 동일한 VM 또는 확장 집합에 자동 확장 업그레이드를 사용하지 않는 확장이 존재할 수도 있습니다.

가상 컴퓨터에 여러 확장 업그레이드를 사용할 수 있는 경우, 업그레이드는 함께 일괄 처리될 수 있지만 각 확장 업그레이드는 가상 컴퓨터에 개별적으로 적용됩니다. 특정 확장이 실패해도 업그레이드 진행 중인 확장은 영향받지 않습니다. 예를 들어 확장 두 개의 업그레이드가 예약된 후 첫 번째 확장 업그레이드가 실패하더라도, 두 번째 확장은 계속 업그레이드됩니다.

또한 자동 확장 업그레이드는 VM 또는 가상 머신 확장 집합에 확장 시퀀싱으로 구성한 확장이 여러 개 있는 경우에도 적용할 수 있습니다. 확장 시퀀싱은 VM의 최초 배포에 적용되며, 확장에 대한 이후 확장 업그레이드는 개별적으로 적용됩니다.

enableAutomaticUpgrade와 autoUpgradeMinorVersion의 차이점

  1. AutoUpgradeMinorVersion:

    • 이 속성은 VM을 만드는 동안 및 새 구성으로 VM을 업그레이드하는 동안 사용됩니다.
    • “true”로 설정하면 최신 부 버전의 확장이 가상 머신에 자동으로 설치됩니다.
    • TypeHandlerVersion을 사용할 수 있는 안정적인 최신 부 버전으로 재정의합니다.
    • VM 구성을 업그레이드하는 동안 새 부 버전을 사용할 수 있는 경우 구성 변경으로 간주되고 확장이 최신 부 버전으로 다시 설치됩니다.
    • 이렇게 하면 안정적인 최신 부 확장 버전을 사용하여 새로 만든 VM을 최신 상태로 유지하는 데 도움이 됩니다.
    • 확장을 특정 버전으로 수동으로 설정하려면 이 속성을 “false”로 설정합니다.
  2. EnableAutomaticUpgrade:

    • 이 속성은 기존 가상 머신에 영향을 줍니다.
    • VM을 만드는 동안 설치된 버전에는 영향을 주지 않습니다.
    • VM을 만든 후 VM이 최신 부 버전의 확장을 실행하지 않는 경우 이 속성을 사용하도록 설정하면 자동 업그레이드가 트리거됩니다.
    • 업그레이드는 VM을 다시 부팅하지 않고, 안전한 롤링 방식으로 롤아웃되며, 실패한 업그레이드는 즉시 롤백되어 높은 서비스 가용성과 안정성을 제공합니다.
    • 이를 통해 기존 VM은 최신 부 버전으로 자동으로 업데이트하여 안전하고 최신 상태를 유지할 수 있습니다.

모든 VM을 안전하고 최신 상태로 유지할 수 있도록 두 속성 모두를 사용하도록 설정하는 것이 좋습니다.

주 확장 버전에 대한 업그레이드는 호환성이 손상되는 변경을 일으킬 수 있으므로 두 속성 모두에서 자동으로 수행되지 않습니다. TypeHandlerVersion을 주 버전으로 수동으로 설정하고 각 기존 VM을 최신 주 버전으로 수동으로 업그레이드해야 합니다.

다음 단계