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

使用 Azure 现成虚拟机

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

使用 Azure 现成虚拟机,可以利用未使用的容量,大幅降低成本。 每当 Azure 需要回收容量时,Azure 基础结构就会逐出 Azure 现成虚拟机。 因此,Azure 现成虚拟机非常适用于那些处理服务中断的工作负荷(例如批处理作业)、开发/测试环境、大型计算工作负荷等。

可用容量可能因大小、区域、一天内的时间等因素而异。 部署 Azure 现成虚拟机时,如果有可用的容量,则 Azure 会分配 VM,但这些 VM 没有 SLA 的保障。 Azure 现成虚拟机不提供高可用性保证。 每当 Azure 需要回收容量时,Azure 基础结构就会发出 30 秒的通知,然后逐出 Azure 现成虚拟机。

YouTube video about Spot VMs and reducing operational costs of stateless workloads.

逐出策略

可以根据你设置的容量或最高价格逐出 VM。 创建 Azure 现成虚拟机时,可将逐出策略设置为“解除分配”(默认值)或“删除” 。

“解除分配”策略可将 VM 移到已停止解除分配的状态,以允许后续进行重新部署。 但是,不保证分配将成功。 已解除分配的 VM 将计入配额,你需要支付基础磁盘的存储费用。

如果希望在逐出 VM 后将其删除,可以将逐出策略设置为删除。 逐出的 VM 会连同其基础磁盘一起删除,因此可以避免继续支付存储费用。

可以选择通过 Azure Scheduled Events 来接收 VM 内通知。 这样,系统就会在你的 VM 被逐出时向你发送通知。在逐出之前,你将有 30 秒的时间来完成任何作业并执行关闭任务。

选项 业务成效
最高价格设置为 >= 当前价格。 如果有可用的容量和配额,则会部署 VM。
最高价格设置为 < 当前价格。 未部署 VM。 你将收到一条错误消息,指出最高价格需要 >= 当前价格。
如果最大价格 >= 当前价格,则重启已停止/已解除分配的 VM 如果有容量和配额,则会部署 VM。
如果最大价格 < 当前价格,则重启已停止/已解除分配的 VM 你将收到一条错误消息,指出最高价格需要 >= 当前价格。
VM 的价格已提高,现在 > 最高价格。 将逐出 VM。 在实际逐出之前的 30 秒,你会收到通知。
逐出后,VM 的价格将回落到 < 最高价格。 不会自动重启 VM。 你可以自行重启 VM,这会按当前价格计费。
如果最高价格设置为 -1 不会出于定价原因而逐出 VM。 最高价格将是当前价格,最高为标准 VM 的价格。 永远不会以超过标准价格的价格向你收费。
更改最高价格 需要解除分配 VM 才能更改最高价格。 解除分配 VM,设置新的最高价格,然后更新 VM。

提示

查看 Azure 虚拟机现成 VM 逐出指南,了解如何在 Azure 中创建可靠的可中断工作负载。

限制

Azure 现成虚拟机不支持以下 VM 大小:

  • B 系列
  • 任意大小的促销版本(例如 Dv2、NV、NC、H 促销大小)

Azure 现成虚拟机可以部署到除由世纪互联运营的 Microsoft Azure 以外的任何区域。

当前支持以下套餐类型

  • 企业协议
  • 即用即付套餐代码 (003P)
  • 赞助(0036P 和 0136P)
  • 对于云服务提供商 (CSP),请参阅合作伙伴中心或直接联系合作伙伴。

定价

Azure 现成虚拟机的定价因地区和 SKU 而异。 有关详细信息,请参阅针对 LinuxWindows 的 VM 定价。

你还可以通过使用 Azure 零售价格 API 查询 Spot 定价信息来查询定价信息。 meterNameskuName 都会包含 Spot

使用可变定价,你可以设置最高价格,以美元 (USD) 为单位,最多可使用五个小数位。 例如,值 0.98765 表示最高价格为 0.98765 美元/小时。 如果将最高价格设置为 -1,则不会根据价格逐出 VM。 VM 的价格将是现成 VM 的当前价格或是标准 VM 的价格(两者中的较低者,前提是有可用的容量和配额)。

定价和逐出历史记录

门户

创建 VM 时,可以在门户的区域中查看每个大小的历史定价和逐出率。 选中“使用 Azure 现成虚拟机折扣运行”复选框后,VM 大小选择下方会出现一个链接,其标题为“查看定价历史记录,并比较附近区域的价格”。 通过选择该链接,你将能够看到针对指定 VM 大小的现成虚拟机定价表或图表。 下图中的定价和逐出速率只是示例。

提示

逐出率按每小时报价。 例如,根据过去 28 天的历史逐出数据,10% 的逐出率意味着 VM 在下一小时内被逐出的可能性为 10%。

图表

Screenshot of the region options with the difference in pricing and eviction rates as a chart.

Table

Screenshot of the region options with the difference in pricing and eviction rates as a table.

Azure Resource Graph

可通过 Azure Resource Graph 以编程方式访问相关的现成 VM SKU 数据。 获取过去 90 天的定价历史记录和过去 28 天的逐出率,以确定能更好满足特定需求的 SKU。

主要优势:

  • 通过 ARM 或 Azure 门户中的 ARG 资源管理器以编程方式查询现成 VM 逐出率和最近几个月的现成 VM 价格 
  • 创建自定义查询以提取与方案相关的特定数据,并能够筛选各种参数,例如 SKU 和区域
  • 轻松比较多个区域和 SKU 的数据
  • 查找价格和/或逐出率较低的其他现成 VM SKU 或区域

使用 Azure 门户中的 ARG 资源管理器试用以下现成 VM 定价历史记录和逐出率示例查询。 SpotResources 表中提供了现成 VM 定价历史记录和逐出率数据。 

现成 VM 定价历史记录示例查询:

SpotResources 
| where type =~ 'microsoft.compute/skuspotpricehistory/ostype/location' 
| where sku.name in~ ('standard_d2s_v4', 'standard_d4s_v4') 
| where properties.osType =~ 'linux' 
| where location in~ ('eastus', 'southcentralus') 
| project skuName = tostring(sku.name), osType = tostring(properties.osType), location, latestSpotPriceUSD = todouble(properties.spotPrices[0].priceUSD) 
| order by latestSpotPriceUSD asc 

现成 VM 逐出率示例查询:

SpotResources 
| where type =~ 'microsoft.compute/skuspotevictionrate/location' 
| where sku.name in~ ('standard_d2s_v4', 'standard_d4s_v4') 
| where location in~ ('eastus', 'southcentralus') 
| project skuName = tostring(sku.name), location, spotEvictionRate = tostring(properties.evictionRate) 
| order by skuName asc, location asc

或者,尝试使用 ARG REST API 来获取定价历史记录和逐出率历史数据。

常见问题

问:创建后,Azure 现成虚拟机是否与常规标准 VM 相同?

:是,但 Azure 现成虚拟机没有 SLA,可以随时将其逐出。

问: 当被逐出但仍然需要容量时,该怎么办?

:如果马上需要容量,建议使用标准 VM,而不要使用 Azure 现成虚拟机。

:如何为 Azure 现成虚拟机管理配额?

:Azure 现成虚拟机将具有单独的配额池。 将在 VM 与规模集实例之间共享 Spot 配额。 有关详细信息,请参阅 Azure 订阅和服务限制、配额与约束

:是否可以为 Azure 现成虚拟机申请额外的配额?

:是,可以通过标准配额申请流程提交申请,请求提高 Azure 现成虚拟机的配额。

问: 我可以在何处发布问题?

答:你可以在 Q&A 中发布问题并使用 azure-spot 来标记问题。

:如何更改现成 VM 的最高价格?

:需先解除分配 VM,然后才能更改最高价格。 然后,可以在 VM 的“配置”部分更改门户中的最高价格。

后续步骤

使用 CLI门户ARM 模板PowerShell 部署 Azure 现成虚拟机。

你还可以部署具有 Azure 现成虚拟机实例的规模集

如果遇到错误,请参阅错误代码