將虛擬機器擴展集與整合協調流程關聯至容量保留群組
適用於: ✔️ 統一擴展集
Azure 虛擬機器擴展集有兩個模式:
- 整合協調流程:在此模式中,虛擬機器擴展集會使用虛擬機器 (VM) 設定檔或範本來相應增加至所需的容量。 僅管有一些功能可以管理或自訂個別的虛擬機器執行個體,但是整合協調流程會使用相同的 VM 執行個體。 這些執行個體會透過虛擬機器擴展集的 VM API 公開,且與 Azure 基礎結構即服務 (IaaS) VM 的標準 API 命令不相容。 因為擴展集會執行所有實際的 VM 作業,因此保留會直接與虛擬機器擴展集相關聯。 擴展集與保留建立關聯後,則會針對保留進行所有後續的 VM 配置。
- 彈性協調流程:在此模式中,您可以有更多彈性來管理個別虛擬機器擴展集 VM 執行個體。 他們可以使用標準的 Azure IaaS VM API,而不是使用擴展集介面。 若要搭配彈性協調流程模式使用保留,請在每部虛擬機器上定義 VM 擴展集屬性和容量保留屬性。
若要深入了解這些模式,請參閱虛擬機器擴展集協調流程模式。
此內容適用於整合協調流程模式。 針對彈性協調流程模式,請參閱將虛擬機器擴展集與彈性協調流程關聯至容量保留群組。
統一協調流程中的擴展集限制
- 若要讓整合協調流程中的虛擬機器擴展集與容量保留相容,必須將
singlePlacementGroup
屬性設定為False
。 - 容量保留不支援多重區域整合擴展集的 [靜態固定分配] 可用性選項。 此選項需要使用五個容錯網域。 不過,針對一般用途的大小,保留最多支援三個容錯網域。 我們建議的方法是使用 [最大分配] 選項,盡可能將 VM 分散到每個區域內最多的容錯網域。 如有需要,請設定自訂容錯網域設定為三個或更少。
當您使用容量保留時,還有其他一些限制。 如需完整清單,請參閱容量保留的概觀。
將新的虛擬機器擴展集關聯至容量保留群組
重要
自 2023 年 11 月起,如果未指定協調流程模式,則使用 PowerShell 和 Azure CLI 建立的虛擬機氣擴展集會預設為彈性協調流程模式。 如需此變更的詳細資訊,以及您應該採取的動作,請參閱針對 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。
將虛擬機器擴展集解除配置:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/deallocate?api-version=2021-04-01
將
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 會自動在群組中尋找相符的容量保留,並取用保留位置。
容量保留群組執行個體檢視會反映 virtualMachinesAssociated
和 virtualMachinesAllocated
屬性下的新擴展集 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 全都會受到容量保留的保護,而且部署不會對未使用的執行個體產生任何額外費用。
因為保留可以過度配置,所以擴展集可以繼續正常調整超過保留的限制。 唯一的差別在於,容量保留服務等級協定未涵蓋配置在保留數量上方的 VM。 若要深入了解,請參閱過度配置容量保留。