你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将采用统一业务流程的虚拟机规模集关联到产能预留组
适用于:✔️ 统一规模集
虚拟机规模集有两种模式:
- 统一业务流程模式:在此模式中,虚拟机规模集使用虚拟机 (VM) 配置文件或模板来纵向扩展到所需的容量。 统一模式使用相同的 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 进行更新,方法是使用最新的规模集模型进行升级。
解除分配虚拟机规模集。
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 不涵盖在产能预留 SLA 中。 若要了解详细信息,请转到容量预留过度分配。