將虛擬機器擴展集與統一協調流程關聯至容量保留群組

適用於: ✔️ 統一擴展集

虛擬機器擴展集有兩個模式:

  • 統一協調流程模式:在此模式中,虛擬機器擴展集會使用 VM 設定檔或範本來擴大至所需的容量。 雖然有一些功能可以管理或自訂個別的虛擬機器執行個體,但是統一協調流程會使用相同的 VM 執行個體。 這些執行個體會透過虛擬機器擴展集 VM API 公開,而且與標準 Azure IaaS VM API 命令不相容。 由於擴展集會執行所有實際的 VM 作業,因此保留會直接與虛擬機器擴展集相關聯。 一旦擴展集與保留建立關聯後,則會針對保留進行所有後續的 VM 配置。
  • 彈性協調流程模式:在此模式中,您可以更有彈性地管理個別虛擬機器擴展集 VM 執行個體,因為其可以使用標準 Azure IaaS VM API,而不是使用擴展集介面。 若要搭配彈性協調流程模式使用保留,請在每部虛擬機器上定義虛擬機器擴展集屬性和容量保留屬性。

若要深入了解這些模式,請移至虛擬機器擴展集協調流程模式

此內容適用於統一協調流程模式。 針對彈性協調流程模式,請移至將虛擬機器擴展集與彈性協調流程關聯至容量保留群組

統一協調流程中的擴展集限制

  • 若要讓統一協調流程中的虛擬機器擴展集與容量保留相容,必須將 singlePlacementGroup 屬性設定為 False
  • 容量保留不支援多重區域統一擴展集的 [靜態固定分配] 可用性選項。 此選項需要使用 5 個容錯網域,而保留區僅支援最多 3 個用於一般用途大小的容錯網域。 建議的方法是使用 [最大分配] 選項,盡可能將 VM 分散到每個區域內最多的 FD。 如有需要,請設定自訂容錯網域設定為 3 或更少。

使用容量保留時有一些其他限制。 如需完整清單,請參閱容量保留概觀

將新的虛擬機器擴展集關聯至容量保留群組

重要

自 2023 年 11 月起,如果未指定協調流程模式,則使用 PowerShell 和 Azure CLI 建立的 VM 擴展集會預設為彈性協調流程模式。 如需此變更的詳細資訊,以及您應該採取的動作,請移至針對 VMSS PowerShell/CLI 客戶的中斷性變更 - Microsoft 社群中樞

若要將新的統一虛擬機器擴展集與容量保留群組建立關聯,請對 Microsoft.Compute 提供者建構下列 PUT 要求:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}?api-version=2021-04-01

virtualMachineProfile 屬性中新增 capacityReservationGroup 屬性:

{ 
    "name": "<VMScaleSetName>", 
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}", 
    "type": "Microsoft.Compute/virtualMachineScaleSets", 
    "location": "eastus", 
    "sku": { 
        "name": "Standard_D2s_v3", 
        "tier": "Standard", 
        "capacity": 3 
}, 
"properties": { 
    "virtualMachineProfile": { 
        "capacityReservation": { 
            "capacityReservationGroup":{ 
                "id":"subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroup/{CapacityReservationGroupName}" 
            } 
         }, 
        "osProfile": { 
            … 
        }, 
        "storageProfile": { 
            … 
        }, 
        "networkProfile": { 
            …,
            "extensionProfile": { 
                … 
            } 
        } 
    } 

將現有的虛擬機器擴展集關聯至容量保留群組

若要將現有的容量保留群組新增至現有的統一擴展集:

  • 停止擴展集以解除配置 VM 執行個體
  • 更新擴展集以使用相符的容量保留群組
  • 啟動擴展集

此程序可確保區域中容量保留和擴展集的位置能夠相容。

升級原則的重要注意事項

  • 自動升級 – 在此模式中,擴展集 VM 執行個體會自動與容量保留群組建立關聯,而不需要您採取任何進一步的動作。 重新配置擴展集 VM 時,這些 VM 會開始取用保留容量。
  • 輪流升級 – 在此模式中,擴展集 VM 執行個體會與容量保留群組建立關聯,而不需要您採取任何進一步的動作。 不過,其會以批次方式更新,當中有選擇性的暫停時間。 重新配置擴展集 VM 時,這些 VM 會開始取用保留容量。
  • 手動升級 – 在此模式中,將虛擬機器擴展集連結至容量保留群組時,擴展集 VM 執行個體不會發生任何情況。 您必須使用最新的擴展集模型進行升級,以更新至每個擴展集 VM。
  1. 將虛擬機器擴展集解除配置。

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/deallocate?api-version=2021-04-01
    
  2. capacityReservationGroup 屬性新增至擴展集模型。 對 Microsoft.Compute 提供者建構下列 PUT 要求:

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}?api-version=2021-04-01
    

    在要求本文中包含 capacityReservationGroup 屬性:

    "location": "eastus",
    "properties": {
        "virtualMachineProfile": {
             "capacityReservation": {
                      "capacityReservationGroup": {
                            "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}"
                      }
                }
        }
    }
    

檢視虛擬機器擴展集與執行個體檢視的關聯

一旦統一虛擬機器擴展集與容量保留群組建立關聯後,會針對容量保留進行所有後續的 VM 配置。 Azure 會自動在群組中尋找相符的容量保留,並取用保留位置。

容量保留群組執行個體檢視會反映 virtualMachinesAssociatedvirtualMachinesAllocated 屬性下的新擴展集 VM:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?$expand=instanceview&api-version=2021-04-01 
{ 
    "name": "<CapacityReservationGroupName>", 
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}", 
    "type": "Microsoft.Compute/capacityReservationGroups", 
    "location": "eastus" 
}, 
    "properties": { 
        "capacityReservations": [ 
            { 
                "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{CapacityReservationName}" 
            } 
        ], 
        "virtualMachinesAssociated": [ 
            { 
                "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/virtualMachines/{VirtualMachineId}" 
            } 
        ], 
        "instanceView": { 
            "capacityReservations": [ 
                { 
                    "name": "<CapacityReservationName>", 
                    "utilizationInfo": { 
                        "virtualMachinesAllocated": [ 
                            { 
                                "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/virtualMachines/{VirtualMachineId}" 
                            } 
                        ] 
                    },
                    "statuses": [ 
                        { 
                            "code": "ProvisioningState/succeeded", 
                            "level": "Info", 
                            "displayStatus": "Provisioning succeeded", 
                            "time": "2021-05-25T15:12:10.4165243+00:00" 
                        } 
                    ] 
                } 
            ] 
        } 
    } 
} 

區域和可用性區域考量

您可以區域性建立虛擬機器擴展集,或是在一或多個可用性區域中建立虛擬機器擴展集,以防止資料中心層級的失敗。 若要深入了解多區域虛擬機器擴展集,請參閱使用可用性區域的虛擬機器擴展集

重要

虛擬機器擴展集和容量保留群組的位置 (區域和可用性區域) 必須相符,關聯才能成功。 針對區域擴展集,擴展集與容量保留群組之間的區域必須相符。 針對區域性擴展集,擴展集與容量保留群組之間的地區和區域都必須相符。

當擴展集分散於多個區域時,一律會嘗試在所包含的可用性區域中平均部署。 因為即使是部署,容量保留群組在每個區域中也應該一律具有相同數量的保留 VM。 為圖例說明這很重要的原因,請考慮下列範例。

在此範例中,每個區域都有不同的保留數量。 假設虛擬機器擴展集擴大至 75 個執行個體。 由於擴展集一律會嘗試跨區域平均部署,因此 VM 散發應該如下所示:

區域 保留的數量 否。 每個區域中的擴展集 VM 未使用的數量保留 過度配置
1 40 25 15 0
2 20 25 0 5
3 15 25 0 10

在此情況下,擴展集會產生區域 1 中 15 個未使用執行個體的額外成本。 向外延展也依賴於區域 2 中的 5 部 VM,以及區域 3 中未受容量保留所保護的 10 部 VM。 如果每個區域都保留 25 個容量執行個體,則 75 部 VM 全都會受到容量保留的保護,而且部署不會對未使用的執行個體產生任何額外費用。

因為保留可以過度配置,所以擴展集可以繼續正常調整超過保留的限制。 唯一的差別在於,容量保留 SLA 未涵蓋配置在保留數量上方的 VM。 若要深入瞭解,請移至過度配置容量保留

下一步