Azure에서 가상 머신 및 확장 집합에 대한 자동 확장 업그레이드
Azure Virtual Machiness 및 Azure Virtual Machine Scale Sets에 대해 자동 확장 업그레이드를 사용할 수 있습니다. VM(가상 머신)이나 확장 집합에서 자동 확장 업그레이드가 사용하도록 설정된 경우 확장 게시자가 해당 확장에 대한 새 버전을 릴리스할 때마다 확장이 자동으로 업그레이드됩니다.
자동 확장 업그레이드의 기능은 다음과 같습니다.
- Azure VM과 가상 머신 확장 집합이 지원됩니다.
- 업그레이드는 가용성 우선 배포 모델에 적용됩니다.
- 가상 머신 확장 집합의 경우, 확장 집합 VM 업그레이드의 20% 이하가 단일 일괄 처리에 포함됩니다. 최소 일괄 처리 크기는 1개의 VM입니다.
- 모든 VM 크기와 Windows, Linux 확장 기능이 호환됩니다.
- 자동 업그레이드는 언제든지 선택 가능합니다.
- 모든 규모의 가상 머신 확장 집합이 사용하도록 설정됩니다.
- 지원되는 각 확장은 개별적으로 등록됩니다. 자동으로 업그레이드할 확장을 선택할 수 있습니다.
- 모든 퍼블릭 클라우드 지역이 지원됩니다.
자동 확장 업그레이드 작동 방식
확장 업그레이드 프로세스는 확장 게시자가 동일한 확장의 새 버전을 게시할 때마다 VM에 있는 기존 확장 버전을 바꿉니다. 새 확장을 설치한 후에는 VM의 상태를 모니터링합니다. 업그레이드 완료 후 5분 이내에 VM이 정상 상태가 아니면 확장 버전은 이전 버전으로 롤백됩니다.
실패한 확장 업그레이드는 자동으로 다시 시도됩니다. 재시도는 사용자 개입 없이 며칠마다 자동으로 실행됩니다.
가용성 우선 업데이트
플랫폼 오케스트레이션 업그레이드에 대한 가용성 우선 모델은 Azure의 가용성 구성이 여러 가용성 수준에서 적용되게 합니다.
업그레이드 중인 VM 그룹의 경우, Azure 플랫폼은 여러 지역, 지역 내, 집합 내에서 업그레이드를 오케스트레이션합니다.
지역 간
- Azure 전역에서의 배포 실패를 방지하기 위해 업그레이드는 Azure 전역에서 단계적으로 이동합니다.
- '단계'에는 지역이 하나 이상 존재할 수 있으며, 업그레이드는 이전 단계의 적격 VM의 업그레이드가 성공했을 때만 다른 단계로 이동합니다.
- 지역 쌍을 이루는 지역은 동시에 업그레이드되지 않으며 동일한 지역 단계에 있을 수 없습니다.
- 업그레이드 성공 여부는 VM 사후 업그레이드의 상태를 추적하여 결정합니다. VM 상태는 VM에 대한 플랫폼 상태 표시기를 통해 추적합니다. 가상 머신 확장 집합의 경우 VM 상태는 애플리케이션 상태 프로브 또는 (확장 집합에 적용된) 애플리케이션 상태 확장을 통해 추적합니다.
지역 내에서
- 서로 다른 가용성 영역에 있는 VM은 동일한 업그레이드로 동시에 업그레이드되지 않습니다.
- 단일 가용성 집합에 속하지 않는 VM은 최대한 일괄 처리되어 구독에 있는 모든 VM이 동시에 업그레이드되지 않게 합니다.
집합 내에서
- 공통 가용성 집합 또는 확장 집합에 있는 모든 VM 은 동시에 업그레이드되지 않습니다.
- 공통 가용성 집합에 속한 VM은 업데이트 도메인 경계 내에서 업그레이드됩니다. 여러 업데이트 도메인에 있는 VM은 동시에 업그레이드되지 않습니다.
- 일반적인 가상 머신 확장 집합에 있는 VM은 일괄 처리로 그룹화되고 업데이트 도메인 경계 내에서 업그레이드됩니다. 확장 집합에 정의된 업그레이드 정책은 업그레이드 중에 적용됩니다. 각 그룹은 롤링 업그레이드 전략을 사용하여 업그레이드됩니다.
가상 머신 확장 집합의 업그레이드 프로세스
- 업그레이드 프로세스를 시작하기 전에 오케스트레이터는 전체 확장 집합에서 어떠한 이유로든 비정상 상태인 VM 비율이 20% 이하인지를 확인합니다.
- 업그레이드 오케스트레이터는 업그레이드할 VM 인스턴스의 일괄 처리를 식별합니다. 업그레이드 일괄 처리는 총 VM 수의 최대 20%를 차지할 수 있으며, 최소 일괄 처리 크기는 1개입니다. 오케스트레이터는 일괄 처리를 식별하는 동안 업그레이드 정책과 가용성 영역의 정의를 고려합니다.
- 업그레이드 후 VM 상태는 다음 일괄 처리로 이동하기 전에 항상 모니터링됩니다. 구성된 애플리케이션 상태 프로브 또는 애플리케이션 상태 확장을 사용하는 확장 집합의 경우 애플리케이션 상태도 모니터링됩니다. 업그레이드 작업은 VM이 정상이 될 때까지 최대 5분 동안 (또는 정의된 상태 프로브 구성이 적용될 때까지) 기다렸다가 다음 일괄 처리를 업그레이드합니다. 업그레이드 후 VM의 상태가 복구되지 않는다면 기본적으로 VM의 이전 확장 버전이 다시 설치됩니다.
- 업그레이드 오케스트레이터는 업그레이드 후 비정상 상태가 되는 VM의 백분율도 추적합니다. 업그레이드 프로세스 중에 업그레이드된 인스턴스의 20% 이상이 비정상 상태가 되면 업그레이드가 중지됩니다.
이 프로세스는 확장 집합의 모든 인스턴스가 업그레이드될 때까지 계속됩니다.
확장 집합 업그레이드 오케스트레이터는 전체 확장 집합 상태를 확인한 후에 모든 배치를 업그레이드합니다. 일괄 처리 업그레이드 중에 동시에 진행 중인 다른 계획된 유지 관리 작업 또는 계획되지 않은 유지 관리 작업이 확장 집합 VM의 상태에 영향을 미칠 수 있습니다. 확장 집합 인스턴스의 20% 이상이 비정상 상태가 될 경우 현재 일괄 처리가 끝나면 확장 집합 업그레이드가 중지됩니다.
지원되는 확장
자동 확장 업그레이드는 다음 확장을 지원합니다(추가 확장이 주기적으로 추가됩니다).
- Azure Automation Hybrid Worker 확장: Linux 및 Windows
- Dependency Agent: Linux 및 Windows
- 애플리케이션 상태 확장: Linux 및 Windows
- 게스트 증명 확장: Linux 및 Windows
- 게스트 구성 확장: Linux 및 Windows
- Azure Key Vault: Linux 및 Windows
- Azure Monitor 에이전트
- Linux용 Log Analytics 에이전트
- Linux용 Azure Diagnostics 확장
- Azure Service Fabric: Linux
자동 확장 업그레이드 사용
확장에 대해 자동 확장 업그레이드를 사용하도록 설정하려면 enableAutomaticUpgrade
속성이 true
로 설정되고 모든 확장 정의에 개별적으로 추가되었는지 확인해야 합니다.
Azure Portal 사용
Azure Portal에서 확장 창을 사용하여 기존 VM 및 가상 머신 확장 집합에서 확장의 자동 업그레이드를 사용하도록 설정합니다.
Virtual Machines 또는 Virtual Machine Scale Sets 창으로 이동하여 리소스 이름을 선택합니다.
설정에서 확장 + 애플리케이션 창으로 이동하면 리소스에 설치된 모든 확장이 표시됩니다. 자동 업그레이드 상태 열은 확장의 자동 업그레이드가 사용하도록 설정되어 있는지, 사용하지 않도록 설정되어 있는지 또는 지원되지 않는지 여부를 보여 줍니다.
확장 이름을 선택하면 확장 세부 정보 창이 열립니다.
자동 업그레이드 사용을 선택하여 확장의 자동 업그레이드를 사용하도록 설정합니다. 필요한 경우 이 단추를 사용하여 자동 업그레이드를 사용하지 않도록 설정합니다.
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"
}
}
]
}
}
}
}
참고 항목
이러한 작업은 가상 머신 확장 집합 리소스에서 enableAutomaticUpgrade
속성을 true
로 설정하지만 기본 VM에서는 설정하지 않습니다.
가상 머신 확장 집합이 upgradeProfile에 자동 또는 롤링 업그레이드 모드를 정의하는 경우 가상 머신 확장 집합은 각 기본 VM에 변경 내용을 자동으로 전파합니다.
가상 머신 확장 집합이 upgradeProfile
에 수동 모드를 정의하는 경우 각 인스턴스를 수동으로 업데이트하고 각 기본 VM에 변경 내용을 전파해야 합니다.
여러 확장을 이용하는 확장 업그레이드
VM 또는 가상 머신 확장 집합에는 자동 확장 업그레이드를 사용하는 확장이 여러 개 존재할 수 있습니다. 또한 동일한 VM 또는 확장 집합에 자동 확장 업그레이드를 사용하지 않는 확장이 존재할 수도 있습니다.
VM에 대해 여러 개의 확장 업그레이드가 가능한 경우 업그레이드를 함께 일괄 처리할 수 있지만, 각 확장 업그레이드는 VM에 개별적으로 적용됩니다. 한 확장에서 오류가 발생해도 업그레이드 중인 다른 확장에는 영향을 미치지 않습니다. 예를 들어 두 개의 확장이 업그레이드되도록 예약되어 있고 첫 번째 확장 업그레이드가 실패하는 경우, 두 번째 확장은 계속 업그레이드됩니다.
VM 또는 가상 머신 확장 집합에 확장 시퀀싱으로 구성된 여러 확장이 있는 경우에도 자동 확장 업그레이드를 적용할 수 있습니다. 확장 시퀀싱은 VM을 처음 배포할 때 적용됩니다. 향후 확장에 대한 모든 확장 업그레이드는 독립적으로 적용됩니다.
EnableAutomaticUpgrade와 AutoUpgradeMinorVersion의 차이점
AutoUpgradeMinorVersion
:- 이 속성은 VM을 만드는 동안과 새로운 구성으로 VM을 업그레이드하는 동안 사용됩니다.
true
로 설정하면 확장의 최신 부 버전이 VM에 자동으로 설치됩니다.TypeHandlerVersion
을 사용할 수 있는 안정적인 최신 부 버전으로 재정의합니다.- VM 구성을 업그레이드할 때 새로운 부 버전이 제공되면 구성 변경으로 간주됩니다. 확장은 최신 부 버전으로 다시 설치됩니다.
- 이런 식으로 새로 만들어진 VM은 안정적인 최신 하위 확장 버전으로 최신 상태를 유지합니다.
- 확장을 특정 버전으로 수동으로 설정하려면 이 속성을
false
로 설정합니다.
EnableAutomaticUpgrade
:- 이 속성은 기존 VM에 영향을 미칩니다.
- VM 만드는 동안 설치된 버전에는 영향을 미치지 않습니다.
- VM을 만든 후 VM이 확장의 최신 부 버전을 실행하지 않는 경우 이 속성을 사용하도록 설정하여 자동 업그레이드를 트리거합니다.
- 업그레이드로 인해 VM이 다시 부팅되지 않으며 안전한 롤링 방식으로 롤아웃됩니다. 실패한 업그레이드는 즉시 롤백되어 높은 서비스 가용성과 안정성을 제공합니다.
- 기존 VM은 최신 부 버전으로 자동 업데이트되어 보안을 유지하고 최신 상태를 유지합니다.
모든 VM의 보안을 유지하고 최신 상태로 유지하려면 두 속성을 모두 사용하도록 설정하는 것이 좋습니다.
주 버전에 호환성이 손상되는 변경 내용이 포함될 수 있으므로 주 확장 버전으로의 업그레이드는 두 속성에 의해 자동으로 수행되지 않습니다. TypeHandlerVersion
을 수동으로 주 버전으로 설정하고 각 기존 VM을 최신 주 버전으로 수동으로 업그레이드해야 합니다.