使用滾動升級原則是將更新套用至虛擬機擴展集中實例的最安全方式。 批次執行更新可確保您的擴展集維持固定的執行個體數目以用於接受流量,這表示您不需要撤下整個工作負載進行變更。
滾動升級原則最適用於實際執行工作負載。
注意
若要設定 MaxSurge 升級,請註冊下列功能旗標:
Register-AzProviderFeature -FeatureName MaxSurgeRollingUpgrade -ProviderNamespace Microsoft.Compute
若要在升級期間更新映像參考版本,請註冊下列功能旗標:
Register-AzProviderFeature -FeatureName ImageReferenceUpgradeForVmoVMs -ProviderNamespace Microsoft.Compute
需求
在具有彈性協調流程的 虛擬機器擴展集 上使用滾動升級原則時,擴展集也必須使用應用程式健康情況擴充功能來監視應用程式健康情況。
在具有統一協調流程的 虛擬機器擴展集 上使用滾動升級原則時,擴展集也必須有健康情況探查,或使用應用程式健康情況擴充功能來監視應用程式健康情況。
如果將虛擬機連結至虛擬機擴展集,則連結的虛擬機也應該具有應用程式健康情況擴充功能。 如果鏈接的虛擬機未設定健全狀況擴充功能並報告應用程式健康情況,則滾動升級可能會受到影響。
概念
升級原則模式與滾動升級原則
升級原則模式和滾動升級原則是巢狀的,但升級原則的個別設定。 這表示,雖然擴展集可能會使用自動或手動升級原則模式,但仍有相關聯的滾動升級原則。 此滾動升級原則隨附預設設定,但也可以設定為符合您的業務需求。
"properties": {
"upgradePolicy": {
"mode": "<Automatic, Manual, Rolling>",
"rollingUpgradePolicy": {
"maxBatchInstancePercent": 20,
"maxUnhealthyInstancePercent": 20,
"maxUnhealthyUpgradedInstancePercent": 20,
"pauseTimeBetweenBatches": "PT2S",
"MaxSurge": "false"
}
}
}
針對擴展集模型更新,升級原則模式將決定擴展集中的實例如何更新為最新狀態。
重要
如果您使用自動OS映射升級或自動擴充功能升級,這些功能不會使用升級原則模式。 相反地,這些功能會使用滾動升級原則組態設定來執行滾動升級。
滾動升級原則組態設定
設定 |
描述 |
滾動升級批次大小 % |
指定您想要一次升級的擴展集執行個體總數。
範例:當擴展集中有 10 個執行個體時,批次大小為 20%,因此升級批次各使用兩個執行個體。 |
批次間的暫停時間 (秒) |
指定您希望擴展集在完成升級批次和啟動新批次之間等候的時間長度。
範例:暫停時間 10 秒表示批次成功完成後,擴展集將等候 10 秒,再移至下一個批次。 |
最大狀況不良執行個體 % |
指定允許在滾動升級之前和期間標記為狀況不良的執行個體總數。
範例:最大狀況不良執行個體 20% 表示如果您有 10 個執行個體的擴展集且整個擴展集中有超過兩個執行個體回報為狀況不良,則滾動升級將停止。 |
最大狀況不良升級執行個體 % |
指定允許在升級後標記為狀況不良的執行個體總數。
範例:最大狀況不良升級 20% 表示如果您有 10 個執行個體的擴展集且整個擴展集中有超過兩個執行個體在升級後回報為狀況不良,則滾動升級將遭到取消。 |
優先處理狀況不良的執行個體 |
告知擴展集升級實例,在升級報告為狀況良好之實例之前,報告為狀況不良的實例。
範例:如果擴展中的某些執行個體在滾動升級開始時為失敗或狀況不良,則擴展集會先升級這些執行個體。 |
啟用跨區域升級 |
允許擴展集在判斷批次時忽略可用性區域界限。 這基本上可讓滾動升級將擴展集視為區域部署,而不是區域性部署。 |
MaxSurge |
新的實例會使用最新的縮放模型,以批次方式建立。 成功建立新實例批次並標示為狀況良好之後,擴展集就會以符合舊擴展集模型的批次刪除實例。 這會繼續進行,直到所有執行個體都處於最新狀態為止。 使用 MaxSurge 的滾動升級有助於改善升級事件期間的服務運行時間。
如需詳細資訊,請參閱 MaxSurge 滾動升級。 |
原則外泄時回復失敗的實例(僅限統一協調流程) |
如果違反滾動升級原則,復原實例會失敗至先前的模型。 |
設定或更新滾動升級原則
滾動升級原則可以在擴展集建立期間設定。 由於滾動升級原則需要成功監視應用程式健康情況,而且有特定設定可決定升級的完成方式,因此建議您先使用手動升級模式建立擴展集。 確認成功回報應用程式健康情況後,請將原則從手動更新為滾動。
選取您要變更升級原則的虛擬機器擴展集。 在 [設定] 下的功能表選取 [升級原則],並從下拉式功能表選取 [滾動 - 使用選擇性暫停來批次滾動升級]。
使用 az vmss update 來更新現有的虛擬機器擴展集。
az vmss update \
--name myScaleSet \
--resource-group myResourceGroup \
--set upgradePolicy.mode=Rolling \
--max-batch-instance-percent 10 \
--max-unhealthy-instance-percent 20 \
--max-unhealthy-upgraded-instance-percent 20 \
--prioritize-unhealthy-instances true \
--pause-time-between-batches PT2S \
--max-surge true
使用 Update-AzVmss 來更新現有的虛擬機器擴展集。
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Set-AzVmssRollingUpgradePolicy `
-VirtualMachineScaleSet $VMSS `
-MaxBatchInstancePercent 20 `
-MaxUnhealthyInstancePercent 20 `
-MaxUnhealthyUpgradedInstancePercent 20 `
-PauseTimeBetweenBatches "PT30S" `
-EnableCrossZoneUpgrade True `
-PrioritizeUnhealthyInstance True `
-MaxSurge True
Update-Azvmss -ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-UpgradePolicyMode "Rolling" `
-VirtualMachineScaleSet $vmss
更新 ARM 範本的屬性區段,並將升級原則設定為滾動和各種滾動升級選項。
"properties": {
"singlePlacementGroup": false,
"upgradePolicy": {
"mode": "Rolling",
"rollingUpgradePolicy": {
"maxBatchInstancePercent": 20,
"maxUnhealthyInstancePercent": 20,
"maxUnhealthyUpgradedInstancePercent": 20,
"pauseTimeBetweenBatches": "PT2S",
"MaxSurge": "true"
}
}
}
取得滾動升級狀態
在 Azure 入口網站中觸發滾動升級時,擴展集資源頂端會顯示橫幅,通知您滾動升級進行中。 您可以按一下 [檢視詳細資料] 以查看滾動升級的狀態。 當所有更新都完成時,橫幅便會消失。
此外,您可以在活動記錄中確實檢視即將推出的變更。 滾動升級事件位於 [建立或更新虛擬機器擴展集] 之下。 選取 [變更歷程記錄] 以檢閱正在更新的內容。
您可以使用 az vmss rolling-upgrade get-latest 以取得進行中滾動升級的狀態。
az vmss rolling-upgrade get-latest \
--name myScaleSet \
--resource-group myResourceGroup
{
"location": "eastus",
"policy": {
"maxBatchInstancePercent": 20,
"maxSurge": false,
"maxUnhealthyInstancePercent": 20,
"maxUnhealthyUpgradedInstancePercent": 20,
"pauseTimeBetweenBatches": "PT0S",
"prioritizeUnhealthyInstances": true,
"rollbackFailedInstancesOnPolicyBreach": false
},
"progress": {
"failedInstanceCount": 0,
"inProgressInstanceCount": 2,
"pendingInstanceCount": 0,
"successfulInstanceCount": 8
},
"runningStatus": {
"code": "RollingForward",
"lastAction": "Start",
"lastActionTime": "2024-01-12T20:20:04.1863772+00:00",
"startTime": "2024-01-12T20:20:04.4363788+00:00"
},
"type": "Microsoft.Compute/virtualMachineScaleSets/rollingUpgrades"
}
您可以使用 Get-AzVmssRollingUpgrade 以取得進行中滾動升級的狀態。
Get-AzVMssRollingUpgrade `
-ResourceGroupName myResourceGroup `
-VMScaleSetName myScaleSet
Policy :
MaxBatchInstancePercent : 20
MaxUnhealthyInstancePercent : 20
MaxUnhealthyUpgradedInstancePercent : 20
PauseTimeBetweenBatches : PT0S
PrioritizeUnhealthyInstances : True
RollbackFailedInstancesOnPolicyBreach : False
MaxSurge : False
RunningStatus :
Code : RollingForward
StartTime : 1/12/2024 8:20:04 PM
LastAction : Start
LastActionTime : 1/12/2024 8:20:04 PM
Progress :
SuccessfulInstanceCount : 8
FailedInstanceCount : 0
InProgressInstanceCount : 2
PendingInstanceCount : 0
Type : Microsoft.Compute/virtualMachineScaleSets/rollingUpgrades
Location : eastus
Tags : {}
取消滾動升級
您可以選取擴展集上方橫幅中的 [檢視詳細資料] 以使用 Azure 入口網站取消進行中滾動升級。 在快顯視窗中,您可以檢視目前狀態,而底部是 [取消升級] 選項。
您可以使用 az vmss rolling-upgrade cancel 以停止進行中滾動升級。 如果您在執行命令後未看到輸出,這表示取消要求成功。
az vmss rolling-upgrade cancel \
--name myScaleSet \
--resource-group myResourceGroup
您可以使用 Stop-AzVmssRollingUpgrade 以停止進行中滾動升級。
Stop-AzVmssRollingUpgrade `
-ResourceGroupName myResourceGroup `
-VMScaleSetName myScaleSet
重新開啟滾動升級
如果您決定取消升級或因違反原則而停止升級,則導致另一個擴展集模型變更的其他變更會觸發新的滾動升級。 如果您想要重新開始滾動升級,請觸發泛型模型更新。 這會告知擴展集檢查所有執行個體是否與最新模型都維持最新狀態。
若要在取消滾動升級時重新開始,則觸發擴展集以檢查擴展集中的執行個體是否與最新擴展集模型都維持最新狀態。 您可以執行 az vmss update 以進行此作業。
az vmss update \
--name myScaleSet \
--resource-group myResourceGroup
若要在取消滾動升級時重新開始,您必須觸發擴展集以檢查擴展集中的執行個體是否與最新擴展集模型都維持最新狀態。 您可以執行 Update-AzVmss 以進行此作業。
$VMSS = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Update-AzVmss `
-ResourceGroupName myResourceGroup `
-Name myScaleSet `
-VirtualMachineScaleSet $VMSS
下一步
了解如何在虛擬機器擴展集上執行手動升級。