注意
使用統一協調流程的虛擬機器擴展集滾動升級原則已正式發行 (GA)。
使用統一協調流程的虛擬機器擴展集 MaxSurge 目前為預覽狀態。
使用彈性協調流程的虛擬機器擴展集滾動升級原則和 MaxSurge 目前為預覽狀態。
若您同意補充的使用規定即可取得預覽。 在公開上市 (GA) 之前,這些功能的某些領域可能會變更。
滾動升級原則是最安全的方法以將更新套用至虛擬擴展集中的執行個體。 批次執行更新可確保您的擴展集維持固定的執行個體數目以用於接受流量,這表示您不需要撤下整個工作負載進行變更。
滾動升級原則最適用於實際執行工作負載。
必要條件
在使用彈性協調流程的虛擬擴展集上設定滾動升級原則或在彈性或統一協調流程部署上啟用 MaxSurge 之前,請將功能提供者註冊到您的訂用帳戶。
功能註冊
Register-AzProviderFeature -FeatureName VMSSFlexRollingUpgrade -ProviderNameSpace Microsoft.Compute
Register-AzProviderFeature -FeatureName ImageReferenceUpgradeForVmoVMs -ProviderNamespace Microsoft.Compute
Register-AzProviderFeature -FeatureName MaxSurgeRollingUpgrade -ProviderNamespace Microsoft.Compute
需求
在使用彈性協調流程的虛擬機器擴展集上使用滾動升級原則時,擴展集也必須使用應用程式健康情況擴充功能來監視應用程式健康情況。
在使用統一協調流程的虛擬機器擴展集上使用滾動升級原則時,擴展集也必須具有健全狀態探查或使用應用程式健康情況擴充功能來監視應用程式健康情況。
當使用透過 MaxSurge 的滾動升級時,系統會使用最新擴展集模型建立新的虛擬機器以取代使用舊擴展集模型的虛擬機器。 這些新建立的虛擬機器有新的執行個體識別碼和 IP 位址。 如需 MaxSurge 升級的詳細資訊,請參閱 虛擬機器擴展集 上使用 MaxSurge 滾動升級。
概念
設定 |
描述 |
升級原則模式 |
虛擬機器擴展集可用的升級原則模式為 [自動]、[手動] 和 [滾動]。 |
滾動升級批次大小 % |
指定您想要一次升級的擴展集執行個體總數。
範例:當擴展集中有 10 個執行個體時,批次大小為 20%,因此升級批次各使用兩個執行個體。 |
批次間的暫停時間 (秒) |
指定您想要擴展集在升級批次間等候的時間長度。
範例:暫停時間 10 秒表示批次成功完成後,擴展集將等候 10 秒,再移至下一個批次。 |
最大狀況不良執行個體 % |
指定允許在滾動升級之前和期間標記為狀況不良的執行個體總數。
範例:最大狀況不良執行個體 20% 表示如果您有 10 個執行個體的擴展集且整個擴展集中有超過兩個執行個體回報為狀況不良,則滾動升級將停止。 |
最大狀況不良升級執行個體 % |
指定允許在升級後標記為狀況不良的執行個體總數。
範例:最大狀況不良升級 20% 表示如果您有 10 個執行個體的擴展集且整個擴展集中有超過兩個執行個體在升級後回報為狀況不良,則滾動升級將遭到取消。
最大狀況不良 % 是重要設定,因為可讓擃展集在推出至整個擴展集之前攔截不穩定或不良的更新。 |
優先處理狀況不良的執行個體 |
告知擴展集先升級標示為狀況不良的執行個體,再升級標示為狀況良好的執行個體。
範例:如果擴展中的某些執行個體在滾動升級開始時為失敗或狀況不良,則擴展集會先升級這些執行個體。 |
啟用跨區域升級 |
允許擴展集在判斷批次時忽略可用性區域界限。 |
MaxSurge (預覽) |
啟用 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
下一步
了解如何在虛擬機器擴展集上執行手動升級。