本指南提供如何在虛擬機刻度組啟用自動區域平衡的說明。
這很重要
虛擬機器擴展集的自動區域平衡目前為預覽版。 若您同意補充的使用規定,即可取得預覽版。 此功能的某些面向在正式上市(GA)前可能會有所變動。
先決條件
在啟用體重計自動區域平衡前,請確保以下先決條件已達成:
為擴展集啟用應用程式健康情況監視
秤組必須啟用應用程式健康監控,才能使用自動區域平衡。 健康監控可透過 應用程式健康擴展(Application Health Extension )或 負載平衡器健康探測器(Load Balancer Health Probes)進行,兩者同時只能啟用一個。
應用程式健康狀態用於確保在再平衡過程中建立的新虛擬機(VM)在移除原始虛擬機前,能成功且「健康」。
將擴展集設定為至少使用兩個可用性區域
虛擬機尺度集必須跨區域,且至少設定兩個 可用區域 。 擴展集中的所有虛擬機器都必須指派至某個可用性區域。 包含區域(非區域)虛擬機的規模集不符合自動區域平衡的資格。 這確保虛擬機能分散在多個區域以提升韌性。
使用支援的 Compute API 版本
自動區域平衡支援 Compute API 版本 2024-07-01 或更高版本。
向AFEC註冊訂閱
訂閱必須以 Azure 功能暴露控制(AFEC)標誌 Microsoft.Compute.AutomaticZoneRebalancing註冊。 此註冊是啟用您訂閱自動區域餘額功能所必需的。
登入 Azure 入口網站。
在搜尋方塊中,輸入 [訂閱] 並選取 [訂用帳戶]。
選取您訂用帳戶名稱的連結。
在左側功能表的 [設定] 下,選取 [預覽功能]。
篩選出 AutomaticVMSSZoneRebalancing,然後選取它。
選擇 登記。
請選擇 [確定]。
使用 Azure CLI 註冊 AFEC 功能:
az feature register --namespace "Microsoft.Compute" --name "AutomaticZoneRebalancing"
檢查註冊狀態:
az feature show --namespace "Microsoft.Compute" --name "AutomaticZoneRebalancing"
使用 Azure PowerShell 註冊 AFEC 功能:
Register-AzProviderFeature -ProviderNamespace Microsoft.Compute -FeatureName AutomaticZoneRebalancing
檢查註冊狀態:
Get-AzProviderFeature -ProviderNamespace Microsoft.Compute -FeatureName AutomaticZoneRebalancing
在你的體重計組上啟用自動區域平衡
請依照步驟,在新的或現有的虛擬機器擴展集上啟用自動可用性區域平衡。
將以下參數的 resiliencyPolicy 屬性加入你的縮尺集模型中。 請使用 API 版本 2024-07-01 或更高版本。
PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2024-07-01'
"properties": {
"resiliencyPolicy": {
"AutomaticZoneRebalancingPolicy": {
"Enabled": true,
"RebalanceStrategy": "Recreate",
"RebalanceBehavior": "CreateBeforeDelete"
}
}
}
在刻度組建立時啟用自動區域平衡
建立新的虛擬機器擴展集。
在 基礎 標籤中,確保在 可用區 下拉選單中至少選取兩個區域。
在 健康 標籤中,啟用並設定 應用程式健康監控。
請勾選 自動區域平衡的勾選框。
完成擴展集的其他設定。 準備好後,選擇 「檢視與創建」。
選取 ,創建。
在現有體重秤組上啟用自動區域平衡
- 瀏覽至您的虛擬機器擴展集。
- 在 「可用性」+ 體重計 下拉選單中,選擇 「可用性」。
- 請確保在可用 區 下拉選單中至少選取兩個區域。
- 在 「作戰 」下拉選單中,選擇 健康與修復。
- 確保應用程式 健康監控 已啟用。
- 在 韌性 區塊中,選擇 自動區域平衡的勾選框。
- 選取 [儲存]。
以下範例說明如何在透過 Azure CLI 建立新的虛擬機器縮放集時,設定自動區域平衡與應用程式健康擴充功能。 欲了解更多資訊,請參閱 az vmss create 與 az vmss update。
# Step 1: Create VMSS with zones configured
az vmss create \
--resource-group myResourceGroup \
--name myVMScaleSet \
--location eastus \
--vm-sku Standard_D2s_v3 \
--instance-count 3 \
--zones 1 2 3 \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
# Step 2: Add Application Health extension (required for automatic zone balance)
az vmss extension set \
--resource-group myResourceGroup \
--vmss-name myVMScaleSet \
--name ApplicationHealthLinux \
--publisher Microsoft.ManagedServices \
--version 2.0 \
--settings '{"protocol": "http", "port": 80, "requestPath": "/healthEndpoint"}'
# Step 3: Upgrade instances to install the extension
az vmss update-instances \
--resource-group myResourceGroup \
--name myVMScaleSet \
--instance-ids "*"
# Step 4: Enable automatic zone balance
az vmss update \
--resource-group myResourceGroup \
--name myVMScaleSet \
--enable-automatic-zone-balancing true \
--automatic-zone-balancing-behavior CreateBeforeDelete \
--automatic-zone-balancing-strategy Recreate
以下範例展示了如何在透過 Azure PowerShell 建立新的虛擬機器 Scale Set 時,設定自動區域平衡與應用程式健康擴充功能。 你還必須設定作業系統、儲存裝置和網路配置檔來完成部署。 欲了解更多資訊,請參閱 New-AzVmssConfig。
# Set variables
$resourceGroupName = "myResourceGroup"
$vmssName = "myVMScaleSet"
$location = "EastUS"
# Create VMSS config with automatic zone balance parameters
$vmssConfig = New-AzVmssConfig `
-Location $location `
-SkuCapacity 3 `
-SkuName "Standard_D2s_v3" `
-Zone @("1", "2", "3") `
-EnableAutomaticZoneRebalance `
-AutomaticZoneRebalanceBehavior "CreateBeforeDelete" `
-AutomaticZoneRebalanceStrategy "Recreate"
# Add Application Health extension (required for automatic zone balance)
$publicConfig = @{"protocol" = "http"; "port" = 80; "requestPath" = "/healthEndpoint"; "gracePeriod" = 600}
$vmssConfig = Add-AzVmssExtension `
-VirtualMachineScaleSet $vmssConfig `
-Name "HealthExtension" `
-Publisher "Microsoft.ManagedServices" `
-Type "ApplicationHealthWindows" `
-TypeHandlerVersion "2.0" `
-AutoUpgradeMinorVersion $true `
-Setting $publicConfig
# Configure OS, storage, and networking profiles (not shown) before deployment.
# Create the VMSS
New-AzVmss -ResourceGroupName $resourceGroupName -Name $vmssName -VirtualMachineScaleSet $vmssConfig
啟用自動區域平衡,無需實例修復
預設情況下,啟用自動區域平衡同時也啟用 自動實例修復 ,為你的體重秤組提供高可用性。 如果你偏好使用自動區域平衡而不使用自動副本修復,可以另外關閉副本修復。
備註
關閉自動實例修復意味著你的虛擬機規模設定只會受益於區域層級的韌性,而不會獲得實例層級的健康監控與修復。
以下範例展示了如何在建立新的虛擬機器尺度集時,關閉自動實例修復同時啟用自動區域平衡。 欲了解更多資訊,請參閱 az vmss create 與 az vmss update。
# Step 1: Create VMSS with zones configured
az vmss create \
--resource-group myResourceGroup \
--name myVMScaleSet \
--location eastus \
--vm-sku Standard_D2s_v3 \
--instance-count 3 \
--zones 1 2 3 \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
# Step 2: Add Application Health extension (required for automatic zone balance)
az vmss extension set \
--resource-group myResourceGroup \
--vmss-name myVMScaleSet \
--name ApplicationHealthLinux \
--publisher Microsoft.ManagedServices \
--version 2.0 \
--settings '{"protocol": "http", "port": 80, "requestPath": "/healthEndpoint"}'
# Step 3: Upgrade instances to install the extension
az vmss update-instances \
--resource-group myResourceGroup \
--name myVMScaleSet \
--instance-ids "*"
# Step 4: Enable automatic zone balance and disable automatic instance repairs
az vmss update \
--resource-group myResourceGroup \
--name myVMScaleSet \
--enable-automatic-zone-balancing true \
--automatic-zone-balancing-behavior CreateBeforeDelete \
--automatic-zone-balancing-strategy Recreate \
--enable-auto-repairs false
以下範例展示了如何在建立新的虛擬機器尺度集時,關閉自動實例修復同時啟用自動區域平衡。 你還必須設定作業系統、儲存裝置和網路配置檔來完成部署。 欲了解更多資訊,請參閱 New-AzVmssConfig。
# Set variables
$resourceGroupName = "myResourceGroup"
$vmssName = "myVMScaleSet"
$location = "EastUS"
# Create VMSS config with automatic zone balance parameters and disable automatic repairs
$vmssConfig = New-AzVmssConfig `
-Location $location `
-SkuCapacity 3 `
-SkuName "Standard_D2s_v3" `
-Zone @("1", "2", "3") `
-EnableAutomaticZoneRebalance `
-AutomaticZoneRebalanceBehavior "CreateBeforeDelete" `
-AutomaticZoneRebalanceStrategy "Recreate" `
-EnableAutomaticRepair $false
# Add Application Health extension (required for automatic zone balance)
$publicConfig = @{"protocol" = "http"; "port" = 80; "requestPath" = "/healthEndpoint"; "gracePeriod" = 600}
$vmssConfig = Add-AzVmssExtension `
-VirtualMachineScaleSet $vmssConfig `
-Name "HealthExtension" `
-Publisher "Microsoft.ManagedServices" `
-Type "ApplicationHealthWindows" `
-TypeHandlerVersion "2.0" `
-AutoUpgradeMinorVersion $true `
-Setting $publicConfig
# Configure OS, storage, and networking profiles (not shown) before deployment.
# Create the VMSS
New-AzVmss -ResourceGroupName $resourceGroupName -Name $vmssName -VirtualMachineScaleSet $vmssConfig
啟用自動區域平衡時,請將屬性 automaticRepairsPolicy 設為停用:
{
"properties": {
"resiliencyPolicy": {
"AutomaticZoneRebalancingPolicy": {
"Enabled": true,
"RebalanceStrategy": "Recreate",
"RebalanceBehavior": "CreateBeforeDelete"
}
},
"automaticRepairsPolicy": {
"enabled": false
}
}
}
常見問題
我該如何監控體重計組的自動區域平衡操作?
查看 Azure 監視器 中的重新平衡操作活動日誌:
你可以透過 Azure 監視器 活動日誌監控自動區域平衡操作。 每次重新平衡操作都會產生活動日誌條目,顯示在重新平衡過程中虛擬機的建立與刪除時間。
- 在 Azure 入口網站中,瀏覽至您的虛擬機器擴展集。
- 從左側選單選擇 活動記錄 。
- 篩選名稱為
BalanceVMsAcrossZones 或 Microsoft.Compute/virtualMachineScaleSets/rebalanceVmsAcrossZones/action 的操作。
欲了解更多關於 Azure 監視器 活動日誌的資訊,請參閱 Azure 監視器 活動日誌。
查看編排服務狀態(僅限 VMSS 統一版):
對於具備統一編排模式的虛擬機縮放集,您也可以使用 「取得實例檢視」API ,檢查自動區域平衡編排服務狀態:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmssName}/instanceView?api-version=2025-04-01
回應包含一個自動區域平衡狀態的orchestrationServices陣列。
"orchestrationServices": [
{
"serviceName": "AutomaticZoneRebalancing",
"serviceState": "Running",
"latestOperationStatus": "InProgress / Completed",
"lastStatusChangeTime": ""
}
]
欄位顯示 lastStatusChangeTime 狀態最後變更的時間,幫助你追蹤重新平衡操作的時間。
我怎麼知道我的體重計組有沒有啟用自動區域平衡?
您可以檢查擴展集設定中的 resiliencyPolicy 屬性。 若 AutomaticZoneRebalancingPolicy.Enabled 設定為 true,則自動區域平衡啟用。
為什麼我的體重計組沒有平衡?
自動區域平衡只有在你的刻度組虛擬機在可用區域間不平衡且所有 安全條件 都符合時才會執行。
重新平衡也取決於可用容量——如果配置不足的區域容量不足,自動區域平衡無法建立新的虛擬機器,重新平衡操作也不會啟動。
自動區域平衡多久會運行一次?
自動區域平衡是不斷檢查你的體重計組是否有區域不平衡。 當偵測到不平衡,且存在重新平衡的機會 (所有安全條件皆已符合,且在資源不足的區域中有可用容量) 時,重新平衡作業會立即開始。
內建的重新平衡作業之間的冷卻期間,可確保您對擴展集的變更逐步進行且受控。
如果我的訂閱在重新平衡時沒有足夠的配額來安裝新的虛擬機,會發生什麼事?
如果配額不足以建立新的虛擬機,重新平衡操作將無法進行。 你需要增加配額,才能讓再平衡發生。
我可以控制哪些虛擬機被排除在重新平衡之外嗎?
是的。 您可以對特定虛擬機器套用執行個體保護原則,以防止其被選取進行重新平衡。
後續步驟