為擴展集設定自動區域放置 (預覽)

虛擬機器擴展集 的自動區域擺放讓 Azure 能根據容量和 SKU 可用性為你的擴展集選擇可用區域。 你不必為每個區域指定固定的區域清單,而是設定放置需求,Azure 會選擇最符合的區域。

虛擬機器擴展集 支援自動區域放置,並支援統一與彈性編排模式。

Important

虛擬機器擴展集 的自動區域配置目前處於預覽階段。 若您同意補充的使用規定即可取得預覽。 此功能的某些面向可能會在正式開放(GA)前有所變動。

自動區域擺放的運作方式

自動區域配置會評估 SKU 可用性、容量,以及你設定的放置限制,以選擇可用區域並放置虛擬機實例。

預設情況下,擴展集會盡量將執行個體分散到三個可用性區域。 如果您設定maxZoneCount,擴展集反而會朝將執行個體分散到該區域數量的方向運作,且絕不會超過設定的限制。 實際擺放取決於SKU的可用性、容量、秤組目前的區域分布,以及你的其他擺放限制。 當 maxZoneCount 未設定且區域超過三個可用區域時,該尺度集可擴展至超出預設的三區範圍,例如擴展至第四區,前提是現有區域無法滿足擴展請求。

預設情況下,自動區域配置:

  • 目標是在三個可用區域間均勻分布。
  • 要求實例分散於至少兩個可用區域。
  • 將任何單一區域中的執行個體數目限制為不超過擴展集的 50%。
  • 如果現有區域容量不足以容納更多實例,且該區域有其他可用區域,可以擴展到額外的可用區域。

如果容量無法滿足所有放置需求,Azure 會依政策允許分配實例數量,剩餘實例可能無法完成配置。 此行為是部分配置失敗,而非整個請求的失敗。

Note

自動區域放置會在新實例建立時選擇區域。 它不會移動或重建現有實例來修正區域不平衡。 若想主動修正現有的失衡,請參見 自動區域平衡。

何時使用自動區域放置

在以下情況下使用自動分區配置:

  • 您想要區域性或跨區域擴展集,但不需要將執行個體放置在特定的可用性區域。 你可以定義區域擴展需求,並讓 Azure 選擇區域。
  • 你要跨區域部署,因為區域 SKU 可用性不同。 自動區域配置幫助你套用一致的配置,而非維持區域專屬的區域列表。
  • 你希望 Azure 在選擇可用性區域時能考慮目前的容量訊號。

當您的工作負載必須在每次放置作業中使用特定區域時,請改用 客戶選取的可用區域。

Prerequisites

在設定自動分區配置前,請確保:

向AFEC註冊訂閱

您的訂閱必須以 Azure 功能暴露控制(AFEC)標誌Microsoft.Compute/VmssAutomaticZonePlacement註冊。 此註冊是啟用訂閱自動區域配置功能所必需的。

  1. 登入 Azure 入口網站。
  2. 在搜尋框中輸入訂閱,然後選擇訂閱。
  3. 選擇您的訂閱。
  4. 在 設定中,選擇 預覽功能。
  5. 搜尋 VmssAutomaticZonePlacement,然後選擇該功能。
  6. 選擇 登記。

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 屬性。 這次更新不會移動或重建現有實例。

下一步