你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用范围:✔️ 灵活规模集
通过现成虚拟机优先级组合,可在单个虚拟机扩展集内运行标准虚拟机 (VM) 和现成 VM 的组合。 此功能通过让 Azure 根据要求自动管理 VM 类型的混合,从而帮助你平衡成本节省的可用性。
概述
使用 Spot Priority Mix 功能,您可以:
- 使用 Spot VM 来处理可中断工作负荷,可节省高达 90%的计算成本。
- 确保 未逐出的标准 VM 的可用性
- 通过维护有保证的标准 VM 数量来防止大规模驱逐
- 通过 VM 创建和删除的自动编排实现管理简化
工作原理
现成虚拟机优先级组合使用两个关键参数来控制 VM 分布:
-
baseRegularPriorityCount:始终维护的标准(非现成)VM 的最小数量 -
regularPriorityPercentageAboveBase:超出基准计数的任何容量中,标准 VM 与现成 VM 的百分比
示例: 数值 baseRegularPriorityCount 是 10,数值 regularPriorityPercentageAboveBase 是 50:
- 总共 10 个 VM:全部 10 个都是标准 VM(等于或低于基准计数)
- 总共 30 个 VM:10 个基本标准 VM + 10 个其他标准 VM(占超出基准计数的 20 个中的 50%)+ 10 个现成 VM(above base占超出基准计数的 20 个中的 50%)
先决条件
在使用 Spot Priority Mix 之前,请确保具有以下各项:
- 具有灵活编排模式的虚拟机规模集
- 了解 Azure Spot 虚拟机 及其被驱逐机制
- 现成 VM 的适当配额
限制
- Spot优先级组合需要灵活的编排模式
- 当规模集上启用
singlePlacementMode时不受支持 - 混合配置的更改仅适用于将来的缩放操作(不会重新平衡现有虚拟机)
配置组合
该平台会自动编排横向扩展和横向缩减操作,以维持所需的现成 VM 和标准 VM 分布。 需使用两个关键设置(baseRegularPriorityCount 和 regularPriorityPercentageAboveBase)配置该组合。
了解参数
| 参数 | Description | 详细信息 |
|---|---|---|
baseRegularPriorityCount |
设置标准 VM 的最小数量 | 当总容量达到或低于此数字时,所有 VM 都是标准的。 提供有保证、不会被逐出的容量。 |
regularPriorityPercentageAboveBase |
定义超出基准计数的 VM 中标准 VM 与现成 VM 的比例 | 介于 0-100 之间的值(例如,50 表示 50% 标准,50% Spot)。 仅当容量超过基数时适用。 |
常见配置
| 用例 | 基数统计 | 高于基数的百分比 | Description |
|---|---|---|---|
| 高可用性 | 20 | 80% | 大多数虚拟机(VM)是标准的,Spot 实例的使用量最小。 |
| 均衡 | 10 | 50% | 超出基准容量的部分均等组合 |
| 成本优化 | 5 | 20% | 在少量标准虚拟机的基准下最大限度使用现成虚拟机 |
| 开发/测试 | 0 | 0% | 所有现成 VM(无可用性保证) |
逐出策略
当 Spot 虚拟机因容量限制或定价被逐出时,逐出策略将确定会发生什么:
| Policy | 行为 | 成本影响 |
|---|---|---|
Deallocate(默认值) |
被逐出的 VM 移动到“已停止-已解除分配”状态,稍后可重启 | 没有计算费用,但存储成本将继续 |
Delete |
逐出 VM 及其基础磁盘将被永久删除 | 没有持续费用 |
横向缩减行为
横向缩减时,现成虚拟机优先级组合通过智能选择要删除的 VM(现成或标准)来维护配置的拆分比例,而不是简单地删除最旧或最新的 VM。
ARM 模板
通过将 priorityMixPolicy 属性添加到具有灵活编排和现成虚拟机优先级的规模集,在 ARM 模板中配置现成虚拟机优先级组合:
"priorityMixPolicy": {
"baseRegularPriorityCount": 10,
"regularPriorityPercentageAboveBase": 50
},
此示例配置:
- 至少维护 10 个标准 VM
- 对于超出 10 个的任何 VM,在标准 VM 和现成 VM 之间按 50/50 的比例拆分
- 总共 30 个 VM:10 个基本 VM + 10 个标准 VM + 10 个现成 VM
在 Azure 门户中创建虚拟机规模集时配置现成虚拟机优先级组合:
- 登录到 Azure 门户。
- 搜索并选择 “虚拟机规模集”。
- 选择 创建。
- 在 “基本信息 ”选项卡上:
- 填写所需的字段。
- 将 业务流程模式 设置为 灵活。
- 选择“使用 Azure 现成虚拟机折扣运行”。
- 在 Spot 选项卡上:
- 在“使用 VM 和折扣现成 VM 进行缩放”下,选择“使用 VM 和现成 VM 进行缩放”。
- 使用“基本 VM (不可中断)计数”设置
baseRegularPriorityCount- 该计数是标准 VM 的最小数量。 - 使用“实例分布”来设置
regularPriorityPercentageAboveBase- 该分布是指超出基准计数后标准 VM 的百分比。
- 完成剩余的配置并创建虚拟机规模集。
更新现成虚拟机优先级组合
部署规模集后,可以修改现成虚拟机优先级组合配置。 更新的配置仅适用于将来的缩放操作。 在规模集横向缩减或扩展之前,现有 VM 保持不变。
在 Azure 门户中更新现有的 Spot 优先级组合:
注释
在 Azure 门户中,只能为已启用此功能的规模集更新 Spot Priority Mix。
示例
以下示例演示了 Spot Priority Mix 在不同方案中的工作原理。 每个示例都包括一个配置,一个用于显示多种操作后虚拟机分布的表格,以及详细的说明。
关键术语
- 总容量:虚拟机规模集中的虚拟机总数。
-
基本标准 VM:保证的标准 VM 的最小数目(由
baseRegularPriorityCount设置)。 -
额外标准 VM 数:超出基准计数的标准 VM 数,使用
regularPriorityPercentageAboveBase计算。 - Spot VM:可中断的 VM,可节省成本。
场景 1:50/50 拆分,使用 10 个基础虚拟机
配置:
-
baseRegularPriorityCount: 10 -
regularPriorityPercentageAboveBase:50% - 逐出策略:删除
- 启动容量:10 个 VM
缩放期间的 VM 分发:
| 操作 | 总容量 | 基础标准虚拟机 (VM) | 额外标准 VM | 现成 VM |
|---|---|---|---|---|
| 初始创建 | 10 | 10 | 0 | 0 |
| 横向扩展到 20 | 20 | 10 | 5 | 5 |
| 横向扩展到 30 | 30 | 10 | 10 | 10 |
| 扩展规模到 40 | 40 | 10 | 15 | 15 |
| 横向扩展到 41 | 41 | 10 | 15 | 16 |
| 横向扩展到 42 | 42 | 10 | 16 | 16 |
| 已逐出的所有现成 VM | 26 | 10 | 16 | 0 |
| 横向扩展到 30 | 30 | 10 | 16 | 4 |
| 横向扩展到 42 | 42 | 10 | 16 | 16 |
| 横向扩展到 44 | 44 | 10 | 17 | 17 |
演练:
- 初始状态(10 个 VM):所有 VM 都是标准的,因为总数是基本计数。
- 扩展到 20 个 VM:在基础之上添加了 10 个 VM,即 5 个标准(50%)和 5 个现成(50%)。
- 扩展到 30 个 VM:在基础之上添加了 20 个 VM,即 10 个标准(50%)和 10 个现成(50%)。
- 缩放到 41 个 VM:若为奇数,额外的 1 个 VM 为现成 VM(16 个现成 VM 与 15 个标准 VM)。
- 缩放到 42 个虚拟机:通过在10个基础虚拟机的基础上增加每种类型的16个虚拟机,恢复平衡。
- 逐出事件:删除所有 16 个 Spot 虚拟机,从而保留总计 26 个 VM(10 个基础 VM 和 16 个额外标准 VM)。
- 扩展到 30 个 VM:仅添加了 4 个 Spot VM 以朝向 50/50 目标重新均衡。
- 缩放到 42 个 VM:额外添加 8 个现成 VM,16 个标准 VM 数量不变,以恢复均衡。
- 缩放到 44 个 VM:每种类型增加一个以保持 50/50 的分配。
场景 2:使标准 VM 数占 25% 来优化成本
配置:
-
baseRegularPriorityCount: 10 -
regularPriorityPercentageAboveBase:25% - 逐出策略:解除分配(VM 停止但未删除)
- 启动容量:20 个 VM
缩放期间的 VM 分发:
| 操作 | 总容量 | 基础标准虚拟机 (VM) | 额外标准 VM | 现成 VM(正在运行) | 现成 VM(已解除分配) |
|---|---|---|---|---|---|
| 初始创建 | 20 | 10 | 2 | 8 | 0 |
| 横向扩展到 50 | 50 | 10 | 10 | 30 | 0 |
| 横向扩展至 110 个 | 110 | 10 | 25 | 75 | 0 |
| 已逐出 10 个 Spot虚拟机 | 110 | 10 | 25 | 65 | 10 |
| 横向扩展到 120 | 120 | 10 | 27 | 73 | 10 |
演练:
-
初始状态(20 个 VM):10 个标准 VM,2 个额外标准 VM(相当于 10 个中的 25%),以及 8 个 Spot VM(相当于 10 个中的 75%)。
- 公式:对于超出基准计数的 10 个 VM,标准 VM 占 25%(2.5 个舍入成为 2 个),现成 VM 占 75%(8 个)。
- 扩展到 50 个 VM:在基础之上添加了 30 个 VM。 超出基准数量的 VM 共 40 个,其中标准 VM 有 10 个(占 25%),现成 VM 有 30 个(占 75%)。
- 缩放到 110 个 VM:超出基准计数的 VM 有 100 个,其中标准 VM 有 25 个(占 25%),现成 VM 有 75 个(占 75%)。
-
逐出事件:10 个现成 VM 被解除分配(已停止但未删除)。
- 总容量仍为 110 个,但只有 65 个现成 VM 正在运行。
- 已解除分配的 VM 计入容量中,但未在运行。
-
扩展到 120 个 VM:增加了 10 个 VM,其中包括 2 个标准 VM 和 8 个抢占式 VM,以保持 25/75 的比率。
- 已解除分配的 10 个 VM 保持解除分配状态。
疑难解答
如果 Spot Priority Mix 不可用,请确保配置 priorityMixPolicy,以指定 中的现成 VM 优先级。virtualMachineProfile 如果不启用 priorityMixPolicy 设置,你将无法访问此现成 VM 功能。
常见问题
为什么在更新 Spot 优先级组合后,现有虚拟机没有发生变更?
现货优先级组合配置仅适用于未来的扩展操作。 更改百分比拆分时,现有 VM 保持不变。 新的分配在规模集缩小或扩大时生效。若要应用新配置,可以手动缩放集合或等待自动缩放事件。
逐出现成 VM 时会发生什么情况?
当 Azure 需要收回容量时,将根据您的逐出策略逐出 Spot 虚拟机。
基本标准 VM 永远不会被逐出,确保最小容量可用性。
是否可以将 Spot Priority Mix 与统一编排配合使用?
否,Spot Priority Mix 仅适用于灵活编排模式。 统一业务流程不支持此功能。
哪些 Azure 区域支持 Spot Priority Mix?
所有支持现成 VM 的 Azure 区域都可使用现成虚拟机优先级组合。 此可用性包括所有全球 Azure 区域。 有关最新的区域可用性,请参阅 Spot VMs 文档。
修改设置后是否会立即创建或删除 VM?
否。 更新现成优先级组合配置不会立即创建或删除 VM。 新设置在下次执行缩放操作(缩小规模、扩大规模或替换驱逐的虚拟机)时适用。
基本标准 VM 数是否可为零?
可以,可以设置为 baseRegularPriorityCount 0,这意味着所有 VM 都遵循百分比分布。 但这意味着在高需求期间,你的所有 VM 都有可能因逐出而丢失。 对于生产工作负荷,建议至少维护一些基本标准 VM。