你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用现成 VM Priority Mix 实现高可用性和成本节省

适用范围:✔️ 灵活规模集

通过现成虚拟机优先级组合,可在单个虚拟机扩展集内运行标准虚拟机 (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 分布。 需使用两个关键设置(baseRegularPriorityCountregularPriorityPercentageAboveBase)配置该组合。

了解参数

参数 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 门户中创建虚拟机规模集时配置现成虚拟机优先级组合:

  1. 登录到 Azure 门户
  2. 搜索并选择 “虚拟机规模集”。
  3. 选择 创建
  4. “基本信息 ”选项卡上:
    • 填写所需的字段。
    • 业务流程模式 设置为 灵活
    • 选择“使用 Azure 现成虚拟机折扣运行”。
  5. Spot 选项卡上:
    • 在“使用 VM 和折扣现成 VM 进行缩放”下,选择“使用 VM 和现成 VM 进行缩放”。
    • 使用“基本 VM (不可中断)计数”设置 baseRegularPriorityCount - 该计数是标准 VM 的最小数量。
    • 使用“实例分布”来设置 regularPriorityPercentageAboveBase - 该分布是指超出基准计数后标准 VM 的百分比。
  6. 完成剩余的配置并创建虚拟机规模集。

更新现成虚拟机优先级组合

部署规模集后,可以修改现成虚拟机优先级组合配置。 更新的配置仅适用于将来的缩放操作。 在规模集横向缩减或扩展之前,现有 VM 保持不变。

在 Azure 门户中更新现有的 Spot 优先级组合:

注释

在 Azure 门户中,只能为已启用此功能的规模集更新 Spot Priority Mix。

  1. 在 Azure 门户中导航到你的虚拟机规模集。
  2. 在左侧菜单中,选择“ 配置”。
  3. 在“现货优先组合”部分下,更新:
    • baseRegularPriorityCount 使用 基本虚拟机(不可中断)计数
    • regularPriorityPercentageAboveBase 使用 实例分布 百分比
  4. 选择保存以应用更改。

示例

以下示例演示了 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

演练:

  1. 初始状态(10 个 VM):所有 VM 都是标准的,因为总数是基本计数。
  2. 扩展到 20 个 VM:在基础之上添加了 10 个 VM,即 5 个标准(50%)和 5 个现成(50%)。
  3. 扩展到 30 个 VM:在基础之上添加了 20 个 VM,即 10 个标准(50%)和 10 个现成(50%)。
  4. 缩放到 41 个 VM:若为奇数,额外的 1 个 VM 为现成 VM(16 个现成 VM 与 15 个标准 VM)。
  5. 缩放到 42 个虚拟机:通过在10个基础虚拟机的基础上增加每种类型的16个虚拟机,恢复平衡。
  6. 逐出事件:删除所有 16 个 Spot 虚拟机,从而保留总计 26 个 VM(10 个基础 VM 和 16 个额外标准 VM)。
  7. 扩展到 30 个 VM:仅添加了 4 个 Spot VM 以朝向 50/50 目标重新均衡。
  8. 缩放到 42 个 VM:额外添加 8 个现成 VM,16 个标准 VM 数量不变,以恢复均衡。
  9. 缩放到 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

演练:

  1. 初始状态(20 个 VM):10 个标准 VM,2 个额外标准 VM(相当于 10 个中的 25%),以及 8 个 Spot VM(相当于 10 个中的 75%)。
    • 公式:对于超出基准计数的 10 个 VM,标准 VM 占 25%(2.5 个舍入成为 2 个),现成 VM 占 75%(8 个)。
  2. 扩展到 50 个 VM:在基础之上添加了 30 个 VM。 超出基准数量的 VM 共 40 个,其中标准 VM 有 10 个(占 25%),现成 VM 有 30 个(占 75%)。
  3. 缩放到 110 个 VM:超出基准计数的 VM 有 100 个,其中标准 VM 有 25 个(占 25%),现成 VM 有 75 个(占 75%)。
  4. 逐出事件:10 个现成 VM 被解除分配(已停止但未删除)。
    • 总容量仍为 110 个,但只有 65 个现成 VM 正在运行。
    • 已解除分配的 VM 计入容量中,但未在运行。
  5. 扩展到 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。

后续步骤