你当前正在访问 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 现成虚拟机。

有关现成 VM 和降低无状态工作负载运营成本的 YouTube 视频。

逐出策略

可以根据你设置的容量或最高价格逐出 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 - 在 Fairfax 不提供
  • 对于云服务提供商 (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%。

图表

地区选项的屏幕截图,其中以图表形式显示了不同的定价和逐出速率。

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 现成虚拟机实例的规模集

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