你当前正在访问 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 现成虚拟机。
逐出策略
如果 Azure 需要为其他即用即付工作负载提供容量,或者当现成实例的价格超过你设置的最高价格时,可以停止现成 VM。 创建 Azure 现成虚拟机时,可将逐出策略设置为“解除分配”(默认值)或“删除” 。
“解除分配”策略可将 VM 移到已停止解除分配的状态,以允许后续进行重新部署。 但是,不保证分配将成功。 已解除分配的 VM 将计入配额,你需要支付基础磁盘的存储费用。
如果希望在逐出 VM 后将其删除,可以将逐出策略设置为删除。 逐出的 VM 会连同其基础磁盘一起删除,因此可以避免继续支付存储费用。
可以选择通过 Azure Scheduled Events 来接收 VM 内通知。 在逐出前最多 30 秒,它们将尽最大努力交付。
选项 | 业务成效 |
---|---|
最高价格设置为 >= 当前价格。 | 如果有可用的容量和配额,则会部署 VM。 |
最高价格设置为 < 当前价格。 | 未部署 VM。 你将收到一条错误消息,指出最高价格需要 >= 当前价格。 |
如果最大价格 >= 当前价格,则重启已停止/已解除分配的 VM | 如果有容量和配额,则会部署 VM。 |
如果最大价格 < 当前价格,则重启已停止/已解除分配的 VM | 你将收到一条错误消息,指出最高价格需要 >= 当前价格。 |
VM 的价格已提高,现在 > 最高价格。 | 将逐出 VM。 Azure 将在实际逐出之前最多 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 而异。 有关详细信息,请参阅针对 Linux 和 Windows 的 VM 定价。
你还可以通过使用 Azure 零售价格 API 查询 Spot 定价信息来查询定价信息。 meterName
和 skuName
都会包含 Spot
。
使用可变定价,你可以设置最高价格,以美元 (USD) 为单位,最多可使用五个小数位。 例如,值 0.98765
表示最高价格为 0.98765 美元/小时。 如果将最高价格设置为 -1
,则不会根据价格逐出 VM。 VM 的价格将是现成 VM 的当前价格或是标准 VM 的价格(两者中的较低者,前提是有可用的容量和配额)。
定价和逐出历史记录
门户
创建 VM 时,可以在门户的区域中查看每个大小的历史定价和逐出率。 选中“使用 Azure 现成虚拟机折扣运行”复选框后,VM 大小选择下方会出现一个链接,其标题为“查看定价历史记录,并比较附近区域的价格”。 通过选择该链接,你将能够看到针对指定 VM 大小的现成虚拟机定价表或图表。 下图中的定价和逐出速率只是示例。
提示
逐出率按每小时报价。 例如,根据过去 7 天的历史逐出数据,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 现成虚拟机实例的规模集。
如果遇到错误,请参阅错误代码。