虛擬機器擴展集 的自動區域擺放讓 Azure 能根據容量和 SKU 可用性為你的擴展集選擇可用區域。 你不必為每個區域指定固定的區域清單,而是設定放置需求,Azure 會選擇最符合的區域。
虛擬機器擴展集 支援自動區域放置,並支援統一與彈性編排模式。
Important
虛擬機器擴展集 的自動區域配置目前處於預覽階段。 若您同意補充的使用規定即可取得預覽。 此功能的某些面向可能會在正式開放(GA)前有所變動。
自動區域擺放的運作方式
自動區域配置會評估 SKU 可用性、容量,以及你設定的放置限制,以選擇可用區域並放置虛擬機實例。
預設情況下,擴展集會盡量將執行個體分散到三個可用性區域。 如果您設定maxZoneCount,擴展集反而會朝將執行個體分散到該區域數量的方向運作,且絕不會超過設定的限制。 實際擺放取決於SKU的可用性、容量、秤組目前的區域分布,以及你的其他擺放限制。 當 maxZoneCount 未設定且區域超過三個可用區域時,該尺度集可擴展至超出預設的三區範圍,例如擴展至第四區,前提是現有區域無法滿足擴展請求。
預設情況下,自動區域配置:
- 目標是在三個可用區域間均勻分布。
- 要求實例分散於至少兩個可用區域。
- 將任何單一區域中的執行個體數目限制為不超過擴展集的 50%。
- 如果現有區域容量不足以容納更多實例,且該區域有其他可用區域,可以擴展到額外的可用區域。
如果容量無法滿足所有放置需求,Azure 會依政策允許分配實例數量,剩餘實例可能無法完成配置。 此行為是部分配置失敗,而非整個請求的失敗。
Note
自動區域放置會在新實例建立時選擇區域。 它不會移動或重建現有實例來修正區域不平衡。 若想主動修正現有的失衡,請參見 自動區域平衡。
何時使用自動區域放置
在以下情況下使用自動分區配置:
- 您想要區域性或跨區域擴展集,但不需要將執行個體放置在特定的可用性區域。 你可以定義區域擴展需求,並讓 Azure 選擇區域。
- 你要跨區域部署,因為區域 SKU 可用性不同。 自動區域配置幫助你套用一致的配置,而非維持區域專屬的區域列表。
- 你希望 Azure 在選擇可用性區域時能考慮目前的容量訊號。
當您的工作負載必須在每次放置作業中使用特定區域時,請改用 客戶選取的可用區域。
Prerequisites
在設定自動分區配置前,請確保:
- 你使用的是 Compute API 版本
2026-03-01或更新版本。 - 你要在支援可用性區域的公開 Azure 區域部署規模集。
向AFEC註冊訂閱
您的訂閱必須以 Azure 功能暴露控制(AFEC)標誌Microsoft.Compute/VmssAutomaticZonePlacement註冊。 此註冊是啟用訂閱自動區域配置功能所必需的。
- 登入 Azure 入口網站。
- 在搜尋框中輸入訂閱,然後選擇訂閱。
- 選擇您的訂閱。
- 在 設定中,選擇 預覽功能。
- 搜尋 VmssAutomaticZonePlacement,然後選擇該功能。
- 選擇 登記。
Limitations
- 擴展集可以使用
zones屬性來指定 客戶選取的區域,或使用placement.zonePlacementPolicy進行自動區域放置,但不能同時使用兩者。 - 不支援鄰近配置群組。
- 容量預留群組不被支援。
- 虛擬機器擴展集的執行個體混合在公開預覽版期間不支援。 預期由GA提供支持。
- 不支援待命池。
- 不支援專用主機群組。
- 邊緣區域不支援。
- 過度配置不支援。 請確保在加入
false之前,將overprovision設定為placement.zonePlacementPolicy;否則部署將會失敗。 - 不支援 Service Fabric 擴展集。
- 不支援建立並附加新虛擬機。 您可以連結現有的區域性 VM,前提是其區域符合擴展集的放置設定。
組態屬性
以下範例展示了自動區域放置屬性在縮尺集模型中出現的位置。 只有 placement.zonePlacementPolicy 必須。 所有其他屬性都是可選的。
{
"placement": {
"zonePlacementPolicy": "auto",
"includeZones": [
"1",
"2",
"4"
]
},
"properties": {
"zoneBalance": false,
"resiliencyPolicy": {
"zoneAllocationPolicy": {
"maxZoneCount": 2,
"maxInstancePercentPerZonePolicy": {
"enabled": true,
"value": 70
}
}
}
}
}
Note
使用 excludeZones 或 includeZones 其中之一。 你無法在同一個比例尺集上同時設定兩個屬性。
以下屬性控制自動區域擺放行為:
| Property | Description |
|---|---|
placement.zonePlacementPolicy |
Required. 設定為 "auto" 以啟用自動區域放置。 |
placement.includeZones |
Optional. 一份 Azure 可以考慮放置的可用區域清單。 Azure 只會從這個清單中選擇區域,但可能不會在每個列出的區域部署實例。 你不能將這個屬性用在 excludeZones。 |
placement.excludeZones |
Optional. 一份 Azure 必須排除的區域清單。 你不能將這個屬性用在 includeZones。 |
zoneBalance |
Optional. 控制在縮放作業期間的區域平衡。 預設為 false,採用盡力平衡。 啟用 zoneBalance 自動區域放置時,也必須指定 maxZoneCount。 當 zoneBalance 是 false時,則 maxZoneCount 是可選的。 |
resiliencyPolicy.zoneAllocationPolicy.maxZoneCount |
Optional. 比例組能使用的最大區域數。 如果你沒有指定這個屬性,Azure 會針對三個區域,並在需要時擴展到更多區域以滿足縮放請求。 |
resiliencyPolicy.zoneAllocationPolicy.maxInstancePercentPerZonePolicy.enabled |
Optional. 啟用或停用每區域最大實例百分比政策。 僅在 zoneBalance 為 false 時,才支援此策略。 |
resiliencyPolicy.zoneAllocationPolicy.maxInstancePercentPerZonePolicy.value |
Optional. 可配置給單一區域之擴展集目標容量的最大百分比。 若滿足請求超過此值,Azure 會分配符合政策的實例,剩餘實例可能無法提供。 |
建立具有自動區域放置的擴展集
以下情境說明如何配置自動區域放置並說明預期的放置行為。 在部署 scale 套件前,請先完成作業系統、儲存裝置和網路設定檔。
使用預設放置方式
將placement.zonePlacementPolicy新增至擴展集資源。 請使用版本 2026-03-01 或更新版本的 Compute API。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2026-03-01
{
"placement": {
"zonePlacementPolicy": "auto"
}
}
將此設定加入完整的虛擬機器擴展集請求中。
預期的行為
如果你沒有指定任何放置限制,Azure 會平均分配實例到三個區域。 例如,一個有 100 個實例的尺度集合,分布可能為 34、33 和 33。
如果無法達成均勻的三區分布,Azure 要求實例至少跨越兩個區域,並預設限制為單一區域內實例數的 50%。 即使 maxInstancePercentPerZonePolicy 沒有明確設定,平台也會套用這個限制。
舉例來說,假設你請求 100 個實例,三個區域的可用容量分別是 70、30 和 0。 Azure嘗試分配50、30和20。 由於第三個區域沒有容量,最終分配為 50、30、0,且有 20 個實例未能完成配置。 若要讓分配成功的優先順序高於預設分配上限,請將 maxInstancePercentPerZonePolicy.value 設定為較高的值。
設定合格區域
使用 includeZones 或 excludeZones 其中之一,來控制 Azure 在部署期間要考慮哪些可用性區域。 你無法在同一個比例尺集上同時設定兩個屬性。
以下範例會限制 Azure 僅考量區域 1 和 2 作為放置位置。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2026-03-01
{
"placement": {
"zonePlacementPolicy": "auto",
"includeZones": [
"1",
"2"
]
}
}
或者,也可以用excludeZones來防止 Azure 選擇特定區域。 以下範例排除區域 3:
{
"placement": {
"zonePlacementPolicy": "auto",
"excludeZones": [
"3"
]
}
}
預期的行為
當你設定 includeZones時,Azure 只會從指定的清單中選擇區域。 這個設定並不保證 Azure 會在每個列出的區域放置實例。 Azure 在放置實例時,仍會考慮容量、SKU 可用性、目前分布以及其他配置限制。
當你設定 excludeZones時,Azure 不會選擇或放置新的實例到排除區域。 其他所有支持區域仍具資格。 你不能在同一個比例尺上合併includeZonesexcludeZones。
限制單一區域內的實例比例
用 maxInstancePercentPerZonePolicy 來控制秤組目標容量中可分配給任何區域的最大百分比。 較高的百分比讓 Azure 在滿足分配請求時有更多彈性,但也允許更多實例集中在同一區域。
該策略僅在 false 為 zoneBalance 時才受支援。
最低實例百分比
最低值取決於 Azure 套用 includeZones、excludeZones 與 maxZoneCount 後可供放置的區域數量:
minimum instance percentage = ceil(100 / number of eligible zones)
例如,假設 includeZones 包含區域 1、、 2和 4,且 maxZoneCount 為 2。 合格區域的有效數量為兩個,因此最低有效百分比為50%。
單一區域內最大實例數量
Azure 根據規模集的目標容量計算單一區域允許的最大實例數:
maximum instances per zone = ceil(maximum instance percentage * target capacity / 100)
Azure 將結果向上取整為最接近的整數。 例如,若目標容量為 101 個實例,最大實例百分比為 85,則該等級集最多可將 86 個實例置於單一區域。
以下範例允許同一區域最多85%的實例:
PUT or PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2026-03-01
{
"placement": {
"zonePlacementPolicy": "auto"
},
"properties": {
"resiliencyPolicy": {
"zoneAllocationPolicy": {
"maxInstancePercentPerZonePolicy": {
"enabled": true,
"value": 85
}
}
}
}
}
預期的行為
Azure 首先嘗試將實例平均分布在三個區域。 如果無法均勻分布,Azure 可以將最多 85% 的實例分配到一個區域。 此設定讓 Azure 在滿足分配請求時有更多彈性,但允許在單一區域內集中更多實例。
當區域達到計算的最大值後,Azure 嘗試將剩餘的實例放入其他合格區域。 如果這些區域容量不足,剩下的實例可能會無法配置。
舉例來說,假設你請求 100 個實例,而三個區域的可用容量分別是 90、10 和 0。 Azure 嘗試分配 85、10 和 5。 由於第三區無容量,最終分配為 85、10 和 0,且有五個實例未能完成配置。
使用嚴格的區域平衡
設定zoneBalancetrue為需要在所選區域間保持平衡的分布。 您必須指定 maxZoneCount 何時啟用嚴格區域平衡。
以下範例允許三個區域間進行嚴格區域平衡。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2026-03-01
{
"placement": {
"zonePlacementPolicy": "auto"
},
"properties": {
"zoneBalance": true,
"resiliencyPolicy": {
"zoneAllocationPolicy": {
"maxZoneCount": 3
}
}
}
}
預期的行為
Azure 要求選取區域的實例數量必須保持在同一實例內。 當你設定maxZoneCount為 3時,Azure 會選擇最多三個區域,並在使用區域間嚴格維持平衡。
如果 Azure 因容量或區域可用性無法維持嚴格平衡,無法放入政策中的實例就無法配置。 因此,嚴格的區域平衡與盡力平衡相比,可能會降低分配成功率。
在現有擴展集上啟用自動區域放置
您可以在使用客戶選取區域或區域性放置的現有擴展集上,啟用自動區域放置。
Warning
在區域性擴展集上啟用自動區域放置後,您就無法再將該擴展集改回區域放置。 現有的區域實例仍維持區域性,但 Azure 會將新實例置入可用區。
在您在區域性擴展集上啟用自動區域放置之前,請先檢閱準備進行區域擴充。
對於使用客戶選取區域的擴展集,請在同一次更新作業中清除 zones 屬性,並將 placement.zonePlacementPolicy 設為 auto。 對於區域縮放集,設 placement.zonePlacementPolicy 為 auto。
將 PATCH 要求傳送至下列端點:
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2026-03-01
針對使用客戶選取區域的擴展集,請在相同要求中清除zones並啟用自動區域放置:
{
"zones": [],
"placement": {
"zonePlacementPolicy": "auto"
}
}
針對區域性擴展集,請啟用自動區域放置,且不要指定zones:
{
"placement": {
"zonePlacementPolicy": "auto"
}
}
預期的行為
此更新啟用了新實例的自動區域配置。 現有的實例不會被移動或重建。
對於使用客戶選擇區域的規模集,現有實例會保留在目前的可用區域。 針對區域性擴展集,現有的區域性執行個體會維持區域性。 Azure 在放置新的執行個體時,會使用自動區域配置。
如果您的投放需求改變,您可以從自動區域配置切換回客戶選擇的區域。 在同一更新操作中,清除 placement.zonePlacementPolicy 並設定該 zones 屬性。 這次更新不會移動或重建現有實例。
下一步
- 檢視 虛擬機器擴展集 的可用區域選項。
- 學習 Virtual Machine Scale Sets 中的區域平衡。
- 了解 自動區域平衡。