Azure Virtual Machiness 및 Azure Virtual Machine Scale Sets에 대해 자동 확장 업그레이드를 사용할 수 있습니다. VM(가상 머신) 또는 확장 집합에서 자동 확장 업그레이드를 사용하도록 설정하면 Azure는 새 확장 버전을 자동으로 모니터링하고, 새 버전의 품질 및 안전을 평가하고, 롤아웃 버전을 승인한 다음, 확장을 사용하여 모든 VM을 자동으로 업그레이드합니다. Azure는 SDP(Safe Deployment Practices)에 따라 모든 VM을 점진적으로 업그레이드하여 잘못된 버전이 중단되는 것을 방지하고 애플리케이션의 가용성을 높입니다. 이 점진적 출시는 평가에 필요한 시간, 업그레이드의 심각도 및 업그레이드에 필요한 VM 규모에 따라 완료하는 데 1~2개월이 걸릴 수 있습니다.
자동 확장 업그레이드의 기능은 다음과 같습니다.
- Azure VMs, virtual machine scale sets and Arc VMs are supported.
- 업그레이드는 가용성 우선 배포 모델(안전한 배포 방법)[/azure/잘 설계/운영 우수성/safe-deployments](SDP)에 적용됩니다.
- 가상 머신 확장 집합의 경우 기본적으로 확장 집합 VM의% 20개 이하가 단일 일괄 처리로 업그레이드됩니다. 이 일괄 처리 크기는 VMSS 롤링 업그레이드 정책을 정의하여 변경할 수 있습니다.
- Azure VM 및 Arc VM의 경우 VM 중 20개 이하의% 단일 일괄 처리로 업그레이드됩니다. 이 일괄 처리 크기는 변경할 수 없습니다.
- 실패한 모든 업그레이드는 VM을 정상 상태로 되돌리기 위해 자동으로 롤백됩니다.
- 모든 업그레이드는 재부팅되지 않습니다. 따라서 VM은 업그레이드 후에 다시 부팅할 필요가 없습니다.
- 모든 VM 크기가 지원됩니다.
- Windows 및 Linux 확장은 모두 호환됩니다.
- 자동 업그레이드는 기본적으로 API 버전을
2025-04-01
시작하는 데 사용됩니다. - 지원되는 각 확장은 개별적으로 등록됩니다. 자동으로 업그레이드할 확장을 선택할 수 있습니다.
- 모든 퍼블릭, 소버린 및 에어게이핑된 클라우드 지역이 지원됩니다.
자동 확장 업그레이드 작동 방식
확장 업그레이드 프로세스는 VM에서 기존 확장을 제거하고 새 버전으로 확장을 다시 설치합니다.
- 확장 게시자가 동일한 확장의 새 버전을 게시하면 Azure에서 새 버전을 검색하고 품질 평가 프로세스를 시작합니다. 이 프로세스는 실패 없이 보안, 품질 및 안전한 업그레이드에 대한 버전의 유효성을 검사합니다. 평가가 통과되면 버전이 롤아웃에 대해 승인됩니다.
- Azure는 하나의 지역 또는 영역(카나리아 지역에서 롤아웃 시작)으로 시작하고 완전히 업그레이드되면 다음 지역 또는 영역으로 이동합니다.
- 지역/영역 내에서 Azure는 VM을 더 작은 일괄 처리(기본 또는 롤링 업그레이드 정책에 따라)로 그룹화하고 한 번에 하나의 일괄 처리를 업그레이드합니다. 이전 일괄 처리가 성공적으로 업그레이드되면 Azure는 다음 일괄 처리로 이동합니다.
- Azure는 업그레이드 후 VM 및 앱 상태(앱 상태 확장 사용)를 모니터링하여 오류를 검색합니다. 업그레이드 후 5분 이내에 VM이 정상 상태가 아닌 경우 업그레이드가 롤백되고 이전 버전의 확장이 설치됩니다. 업그레이드는 고객의 개입 없이 일정 시간 후에 자동으로 다시 시도됩니다.
Availability-first Upgrades
플랫폼 오케스트레이션 업그레이드에 대한 가용성 우선 모델은 Azure의 가용성 구성이 여러 가용성 수준에서 적용되게 합니다.
업그레이드 중인 VM 그룹의 경우, Azure 플랫폼은 여러 지역, 지역 내, 집합 내에서 업그레이드를 오케스트레이션합니다.
Across regions
- Azure 전역에서의 배포 실패를 방지하기 위해 업그레이드는 Azure 전역에서 단계적으로 이동합니다.
- '단계'에는 지역이 하나 이상 존재할 수 있으며, 업그레이드는 이전 단계의 적격 VM의 업그레이드가 성공했을 때만 다른 단계로 이동합니다.
- 지역 쌍을 이루는 지역은 동시에 업그레이드되지 않으며 동일한 지역 단계에 있을 수 없습니다.
- 업그레이드 성공 여부는 VM 사후 업그레이드의 상태를 추적하여 결정합니다. VM 상태는 VM에 대한 플랫폼 상태 표시기를 통해 추적됩니다(App Health 확장에서 보고한 VM 상태 및 App Health).
지역 내에서
- 서로 다른 가용성 영역에 있는 VM은 동일한 업그레이드로 동시에 업그레이드되지 않습니다.
- 단일 가용성 집합에 속하지 않는 VM은 최대한 일괄 처리되어 구독에 있는 모든 VM이 동시에 업그레이드되지 않게 합니다.
집합 내에서
- 공통 가용성 집합 또는 확장 집합에 있는 모든 VM 은 동시에 업그레이드되지 않습니다.
- 공통 가용성 집합에 속한 VM은 업데이트 도메인 경계 내에서 업그레이드됩니다. 여러 업데이트 도메인에 있는 VM은 동시에 업그레이드되지 않습니다.
- 일반적인 가상 머신 확장 집합에 있는 VM은 일괄 처리로 그룹화되고 업데이트 도메인 경계 내에서 업그레이드됩니다. Upgrade policies defined on the scale set are honored during the upgrade. 각 그룹은 롤링 업그레이드 전략을 사용하여 업그레이드됩니다.
가상 머신 확장 집합의 업그레이드 프로세스
- 업그레이드 프로세스를 시작하기 전에 오케스트레이터는 전체 확장 집합에서 어떠한 이유로든 비정상 상태인 VM 비율이 20% 이하인지를 확인합니다.
- 업그레이드 오케스트레이터는 업그레이드할 VM 인스턴스의 일괄 처리를 식별합니다. 업그레이드 일괄 처리는 총 VM 수의 최대 20%를 차지할 수 있으며, 최소 일괄 처리 크기는 1개입니다. 오케스트레이터는 일괄 처리를 식별하는 동안 업그레이드 정책과 가용성 영역의 정의를 고려합니다.
- 업그레이드 후 VM 상태는 다음 일괄 처리로 이동하기 전에 항상 모니터링됩니다. 구성된 애플리케이션 상태 프로브 또는 애플리케이션 상태 확장을 사용하는 확장 집합의 경우 애플리케이션 상태도 모니터링됩니다. 업그레이드 작업은 VM이 정상이 될 때까지 최대 5분 동안 (또는 정의된 상태 프로브 구성이 적용될 때까지) 기다렸다가 다음 일괄 처리를 업그레이드합니다. 업그레이드 후 VM의 상태가 복구되지 않는다면 기본적으로 VM의 이전 확장 버전이 다시 설치됩니다.
- 업그레이드 오케스트레이터는 업그레이드 후 비정상 상태가 되는 VM의 백분율도 추적합니다. 업그레이드 프로세스 중에 업그레이드된 인스턴스의 20% 이상이 비정상 상태가 되면 업그레이드가 중지됩니다.
이 프로세스는 확장 집합의 모든 인스턴스가 업그레이드될 때까지 계속됩니다.
확장 집합 업그레이드 오케스트레이터는 전체 확장 집합 상태를 확인한 후에 모든 배치를 업그레이드합니다. 일괄 처리 업그레이드 중에 동시에 진행 중인 다른 계획된 유지 관리 작업 또는 계획되지 않은 유지 관리 작업이 확장 집합 VM의 상태에 영향을 미칠 수 있습니다. 확장 집합 인스턴스의 20% 이상이 비정상 상태가 될 경우 현재 일괄 처리가 끝나면 확장 집합 업그레이드가 중지됩니다.
Supported extensions
확장이 자동 업그레이드에 지원되는지 확인하려면 Azure Portal - 확장 블레이드에서 자동 업그레이드 상태를 확인합니다.
다음은 자동 업그레이드에 지원되는 인기 있는 확장이며 정기적으로 추가됩니다.
Publisher | Type |
---|---|
Microsoft.Azure.Automation.HybridWorker | HybridWorkerForLinux |
Microsoft.Azure.Automation.HybridWorker | HybridWorkerForWindows |
Microsoft.Azure.AzureDefenderForSQL | AdvancedThreatProtection.Windows |
Microsoft.Azure.AzureDefenderForSQL | VulnerabilityAssessment.Windows |
Microsoft.Azure.AzureDefenderForServers | MDE.Linux |
Microsoft.Azure.AzureDefenderForServers | MDE.Windows |
Microsoft.Azure.ChangeTrackingAndInventory | ChangeTracking-Linux |
Microsoft.Azure.ChangeTrackingAndInventory | ChangeTracking-Windows |
Microsoft.Azure.Diagnostics | LinuxDiagnostic |
Microsoft.Azure.Extensions.Edp | LinuxHibernateTestExtension |
Microsoft.Azure.Extensions.Edp | WindowsHibernateTestExtension |
Microsoft.Azure.FleetDiagnostics | FleetDiagnosticsForWindows |
Microsoft.Azure.Geneva | GenevaMonitoring |
Microsoft.Azure.KeyVault | KeyVaultForLinux |
Microsoft.Azure.KeyVault | KeyVaultForWindows |
Microsoft.Azure.Labservices | Agent.Linux |
Microsoft.Azure.Labservices | Agent.Windows |
Microsoft.Azure.Monitor | AzureMonitorLinuxAgent |
Microsoft.Azure.Monitor | AzureMonitorWindowsAgent |
Microsoft.Azure.Monitoring.DependencyAgent.EDP | DependencyAgentLinux |
Microsoft.Azure.Monitoring.DependencyAgent.EDP | DependencyAgentWindows |
Microsoft.Azure.Monitoring.DependencyAgent | DependencyAgentLinux |
Microsoft.Azure.Monitoring.DependencyAgent | DependencyAgentWindows |
Microsoft.Azure.NetworkWatcher | NetworkWatcherAgentLinux |
Microsoft.Azure.NetworkWatcher | NetworkWatcherAgentWindows |
Microsoft.Azure.Networking.DNS | DNSClientCache |
Microsoft.Azure.SCOMMI | GatewayServer |
Microsoft.Azure.SCOMMI | WindowsAgent |
Microsoft.Azure.Security.AntimalwareSignature | AntimalwareConfiguration |
Microsoft.Azure.Security.Dsms | DSMSForWindows |
Microsoft.Azure.Security.LinuxAttestation | GuestAttestation |
Microsoft.Azure.Security.Monitoring | AzureSecurityLinuxAgent |
Microsoft.Azure.Security.Monitoring | AzureSecurityWindowsAgent |
Microsoft.Azure.Security.WindowsAttestation | GuestAttestation |
Microsoft.Azure.Security.WindowsCodeIntegrity | CodeIntegrityAgent |
Microsoft.Azure.ServiceFabric | ServiceFabricLinuxNode |
Microsoft.Azure.Watson | WatsonLinuxAgent |
Microsoft.Azure.Workloads | MonitoringExtensionLinux |
Microsoft.Azure.Workloads | MonitoringExtensionWindows |
Microsoft.CPlat.Core | LinuxHibernateExtension |
Microsoft.CPlat.Core | WindowsHibernateExtension |
Microsoft.CPlat.ProxyAgent | ProxyAgentLinux |
Microsoft.CPlat.ProxyAgent | ProxyAgentWindows |
Microsoft.EnterpriseCloud.Monitoring | MicrosoftMonitoringAgent |
Microsoft.EnterpriseCloud.Monitoring | OmsAgentForLinux |
Microsoft.GuestConfiguration | ConfigurationForLinux |
Microsoft.GuestConfiguration | ConfigurationForWindows |
Microsoft.ManagedServices | ApplicationHealthLinux |
Microsoft.ManagedServices | ApplicationHealthWindows |
Microsoft.OSTCExtensions | DSCForLinux |
Microsoft.Sentinel.AzureMonitorAgentExtensions | MicrosoftDnsAgent |
Microsoft.SqlServer.Management | SqlIaaSAgent |
Microsoft.SqlServer.Management | SqlIaaSAgentLinux |
자동 확장 업그레이드 사용
확장에 대해 자동 확장 업그레이드를 사용하도록 설정하려면 enableAutomaticUpgrade
속성이 true
로 설정되고 모든 확장 정의에 개별적으로 추가되었는지 확인해야 합니다.
Azure Portal 사용
In the Azure portal, use the Extension pane to enable automatic upgrade of extensions on existing VMs and virtual machine scale sets.
Go to the Virtual Machines or Virtual Machines Scale Sets pane, and select the resource name.
Under Settings, go to the Extensions + applications pane, which shows all extensions installed on the resource. 자동 업그레이드 상태 열은 확장의 자동 업그레이드가 사용하도록 설정되어 있는지, 사용하지 않도록 설정되어 있는지 또는 지원되지 않는지 여부를 보여 줍니다.
Select the extension name to open the Extensions details pane.
자동 업그레이드 사용을 선택하여 확장의 자동 업그레이드를 사용하도록 설정합니다. 필요한 경우 이 단추를 사용하여 자동 업그레이드를 사용하지 않도록 설정합니다.
Virtual Machines의 경우
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"
}
}
가상 머신 확장 집합의 경우
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"
}
}
]
}
}
}
}
Note
이러한 작업은 가상 머신 확장 집합 리소스에서 enableAutomaticUpgrade
속성을 true
로 설정하지만 기본 VM에서는 설정하지 않습니다.
가상 머신 확장 집합이 upgradeProfile에 자동 또는 롤링 업그레이드 모드를 정의하는 경우 가상 머신 확장 집합은 각 기본 VM에 변경 내용을 자동으로 전파합니다.
가상 머신 확장 집합이 upgradeProfile
에 수동 모드를 정의하는 경우 각 인스턴스를 수동으로 업데이트하고 각 기본 VM에 변경 내용을 전파해야 합니다.
여러 확장을 이용하는 확장 업그레이드
VM 또는 가상 머신 확장 집합에는 자동 확장 업그레이드를 사용하는 확장이 여러 개 존재할 수 있습니다. 또한 동일한 VM 또는 확장 집합에 자동 확장 업그레이드를 사용하지 않는 확장이 존재할 수도 있습니다.
VM에 대해 여러 개의 확장 업그레이드가 가능한 경우 업그레이드를 함께 일괄 처리할 수 있지만, 각 확장 업그레이드는 VM에 개별적으로 적용됩니다. 한 확장에서 오류가 발생해도 업그레이드 중인 다른 확장에는 영향을 미치지 않습니다. 예를 들어 두 개의 확장이 업그레이드되도록 예약되어 있고 첫 번째 확장 업그레이드가 실패하는 경우, 두 번째 확장은 계속 업그레이드됩니다.
You can also apply Automatic Extension Upgrade when a VM or virtual machine scale set has multiple extensions configured with extension sequencing. 확장 시퀀싱은 VM을 처음 배포할 때 적용됩니다. 향후 확장에 대한 모든 확장 업그레이드는 독립적으로 적용됩니다.
EnableAutomaticUpgrade와 AutoUpgradeMinorVersion의 차이점
AutoUpgradeMinorVersion
:- 이 속성은 VM을 만드는 동안과 새로운 구성으로 VM을 업그레이드하는 동안 사용됩니다.
-
true
로 설정하면 확장의 최신 부 버전이 VM에 자동으로 설치됩니다. -
TypeHandlerVersion
을 사용할 수 있는 안정적인 최신 부 버전으로 재정의합니다. - VM 구성을 업그레이드할 때 새로운 부 버전이 제공되면 구성 변경으로 간주됩니다. 확장은 최신 부 버전으로 다시 설치됩니다.
- 이런 식으로 새로 만들어진 VM은 안정적인 최신 하위 확장 버전으로 최신 상태를 유지합니다.
- 확장을 특정 버전으로 수동으로 설정하려면 이 속성을
false
로 설정합니다.
EnableAutomaticUpgrade
:- 이 속성은 기존 VM에 영향을 미칩니다.
- VM 만드는 동안 설치된 버전에는 영향을 미치지 않습니다.
- VM을 만든 후 VM이 확장의 최신 부 버전을 실행하지 않는 경우 이 속성을 사용하도록 설정하여 자동 업그레이드를 트리거합니다.
- 업그레이드로 인해 VM이 다시 부팅되지 않으며 안전한 롤링 방식으로 롤아웃됩니다. 실패한 업그레이드는 즉시 롤백되어 높은 서비스 가용성과 안정성을 제공합니다.
- 기존 VM은 최신 부 버전으로 자동 업데이트되어 보안을 유지하고 최신 상태를 유지합니다.
모든 VM의 보안을 유지하고 최신 상태로 유지하려면 두 속성을 모두 사용하도록 설정하는 것이 좋습니다.
주 버전에 호환성이 손상되는 변경 내용이 포함될 수 있으므로 주 확장 버전으로의 업그레이드는 두 속성에 의해 자동으로 수행되지 않습니다.
TypeHandlerVersion
을 수동으로 주 버전으로 설정하고 각 기존 VM을 최신 주 버전으로 수동으로 업그레이드해야 합니다.