云计算对数据科学和人工智能应用十分有用。云服务商众多,为我们的应用选择合适的平台至关重要。然而,云计算的一大挑战在于成本管控。将应用与工作负载部署到云端时,我们必须时刻关注成本,因为云端运行的机器可能非常昂贵。
本文将探讨 Azure Spot 虚拟机(VM),也称 Azure Spot 实例。这类机器可帮助我们在部署到 Microsoft Azure 时节省成本。若您是 Azure 新手,需要入门介绍,请参阅我们的Introduction to Azure课程。对于更高级的用户,我们的Azure Architecture and Services课程将有所帮助。最后,如果您需要快速对照,请查看我们比较各大云服务商的简表:AWS、Azure 与 GCP 在数据科学与 AI 领域的服务对比。
下面一起深入了解 Azure Spot VM。
什么是 Azure Spot VM?
Azure Spot VM 是指任一时刻 Azure 数据中心中的空闲虚拟机。由于这些机器当前未被使用,Azure 会以大幅折扣提供,有时相比标准 Azure VM 价格可低至 90% 折扣。
不过,这种成本降低伴随着不确定性。一旦其他用户对 VM 的需求上升,Azure 可能会在很短时间内收回这些 Spot VM。因此,Spot VM 的可用性不可预测。我们应仅将其用于不要求持续可用、且可承受中断的任务。例如:
批处理作业
批处理作业是在无需人工干预的情况下在计算机上运行的任务。此类任务通常以大型“批次”处理,可顺序或并行执行。它们的开始与结束时间通常较为灵活,因此可以暂停并在之后恢复,而不会造成重大影响。
例如,某家金融机构需要在每个工作日结束时处理交易。它们可以设置批处理作业,从各类来源自动加载成千上万甚至上百万笔交易,对其进行校验,然后相应更新账户余额。
测试与开发环境
测试与开发环境是软件开发者构建并测试应用的环境,不会影响在线生产环境。搭建这些环境成本不菲,而这正是 Spot VM 可发挥作用的地方。
例如,一个从事电商网站的团队希望尝试基于用户浏览历史的商品推荐新功能。他们可以先在开发环境中完成该功能,再迁移至测试环境,严格测试缺陷、性能与用户体验。不同配置下的测试都可以在 Spot VM 中完成。测试通过后,再将该功能部署到生产环境,向客户开放。
容错型应用
容错型应用即使在某些组件发生故障时也能持续运行,这通常通过内置冗余与故障转移机制实现。此类应用非常适合运行在 Spot VM 上。比如,一个应用由多台服务器处理用户请求,如果其中一台故障,系统会自动将请求转发至其他服务器。正因为具备容错性,这类应用可以利用 Spot VM 来节省成本。
Azure Spot VM 的优势
使用 Azure Spot VM 的主要优势是可大幅节省成本。正如前文所述,相比按需 VM 价格,折扣最高可达 90%。得益于这些折扣,我们可以根据可用容量弹性扩缩工作负载,使原本在按需 VM 上成本高昂的大规模任务也有可能运行。此外,我们还能为 Spot VM 设定愿意支付的最高价格,从而更好地控制开支。
当 VM 将被 Azure 收回时,我们还可以选择逐出策略(eviction policy)来指定后续操作——可选择释放分配(deallocate)或删除(delete)VM。若选择释放分配,VM 会停止但不会被删除,这样在其再次可用时我们可以重启;期间只需支付存储费用。若选择删除,VM 及其工作负载数据都会被删除。
如何部署 Spot VM
本节介绍如何部署 Spot VM,并选择与之相关的选项,如定价与逐出策略。我们既可以部署单个 Spot VM,也可以部署一组 Spot VM(称为 Spot VM 规模集,Scale Set)。
单个 Spot VM
最简单的方法是在 Azure 门户中创建 VM。
- 在门户的Services下选择Virtual Machines,然后选择Create。
- 在Create a virtual machine页面,填写各项信息,并勾选Run with Azure Spot discount。
- 随后需要选择Eviction type与Eviction Policy。
- 对于Eviction type,可以选择Capacity only或Price or capacity。选择 Capacity only 表示仅在 Azure VM 需求高涨时逐出我们的 VM。该选项会设置我们愿意为 Spot VM 支付的最高价格。若希望降低最高价格,可以选择Price or Capacity,并填写愿意支付的最高价格。在该选项下,Azure 会在整体需求高或 Spot VM 成本超过指定最高价时逐出该 VM。
- 我们还需要选择逐出策略——即 Azure 逐出机器时将发生什么。可选择Deallocate或Delete。选择Deallocate会停止 VM,但不会删除其上的数据或应用。停止期间不会产生 VM 费用,但会产生相关存储费用。若希望在容量恢复可用时重启该 VM,此选项更为合适。若选择Delete,当 Azure 回收该实例时,VM 及任何关联的临时存储都会被删除。
创建虚拟机。来源:作者供图
我们也可以使用 Azure CLI、Azure PowerShell 等方式来启动 Spot VM。更多详情请参阅Azure 关于 Spot VM 的文档。
Spot 虚拟机规模集(VMSS)
我们还可以创建称为 Spot 虚拟机规模集的 Spot VM 组。为此,请在 Azure 门户中搜索 Virtual Machine Scale Sets 并创建一个。VMSS 可以自动化部署与管理多台 Spot VM,便于按需扩缩。我们可以基于 CPU 使用率或网络流量等条件定义伸缩规则,并根据最高价格与可用性需求设定期望容量。
Azure Spot VM 的最佳实践
为确保工作负载兼具韧性与成本效益,我们建议在使用 Spot VM 时遵循以下最佳实践。
检查容量
在部署 Spot VM 之前,我会检查目标区域及计划使用的 VM 规格的可用容量。Azure 的容量会随其他客户需求而波动,提前核实可用性有助于我们就工作负载部署做出更明智的决策。
设定最高价格
我会为每台 VM 设定自己愿意支付的每小时最高价格,以帮助控制成本。
为中断而设计
鉴于 Spot VM 可能会在短时间内被抢占,我建议将工作负载设计为对中断具备韧性。可采用检查点(checkpointing)等策略定期保存进度,使其能从最近的检查点恢复,而无需从头开始。对于分布式处理工作负载,确保任务可在剩余实例间重新分配,即使部分实例被抢占也能维持吞吐量。
设置监控
有效的监控对于高效管理 Spot VM 至关重要。Azure 提供了用于跟踪 Spot VM 使用情况、成本与逐出事件的工具。通过监控这些指标,我们可以洞察 Spot VM 的运行表现,并据此调整策略。
Azure Spot VM 与预留实例对比
在某些场景下,相比使用 Spot VM,使用预留 VM 可能更为合理。预留 VM 是另一种可优化云成本的选择。本节将解释这两种实例的差异。
Spot VM
如前所述,Spot VM 能带来显著成本节省,有时相较按需价格可便宜高达 90%。但这些实例可能会因容量需求而被 Azure 以很短通知时间收回。因此,我们应将 Spot 实例用于对时间较为灵活、能够处理中断的工作负载,包括批处理作业、开发与测试环境,以及可轻松在多实例间分布的无状态应用。
预留实例
另一方面,预留实例可按一或三年期限购买。我们可以选择特定 VM 类型,并以显著低于按需的价格获得,但需承诺使用一年或三年。使用预留实例的主要好处是不存在被 Azure 逐出的风险。若工作负载的使用模式可预测且需要持续可用性,预留实例往往是更佳选择。
总之,在 Azure Spot VM 与预留实例之间进行选择,取决于您在成本、灵活性与可靠性方面的具体需求。
结语
Azure Spot VM 是实现高性价比云计算的优秀方案。它们可为我们带来可观的折扣,有时相较按需价格可便宜高达 90%。
Azure Spot VM 尤其适用于灵活且可容忍中断的工作负载,包括批处理作业、开发与测试环境,或任何不要求持续在线的应用。对于这些工作负载,Spot VM 能显著降低我们的成本。
如需进一步了解 Azure Spot VM,请查看以下资源:
- Azure 文档:官方 Azure 文档是绝佳的起点,提供了关于使用 Spot VM 的详细指南、最佳实践与技术参考。
- 社区论坛与支持:Azure 社区论坛与支持渠道可帮助您获得具体问题的答案,并从其他 Azure 用户的经验中学习。
如果您喜欢这篇文章,不妨看看这些内容:Azure DevOps 面试题以及在 Azure 上使用 GPT。
云计算对数据科学和人工智能应用十分有用。云服务商众多,为我们的应用选择合适的平台至关重要。然而,云计算的一大挑战在于成本管控。将应用与工作负载部署到云端时,我们必须时刻关注成本,因为云端运行的机器可能非常昂贵。
本文将探讨 Azure Spot 虚拟机(VM),也称 Azure Spot 实例。这类机器可帮助我们在部署到 Microsoft Azure 时节省成本。若您是 Azure 新手,需要入门介绍,请参阅我们的Introduction to Azure课程。对于更高级的用户,我们的Azure Architecture and Services课程将有所帮助。最后,如果您需要快速对照,请查看我们比较各大云服务商的简表:AWS、Azure 与 GCP 在数据科学与 AI 领域的服务对比。
下面一起深入了解 Azure Spot VM。
什么是 Azure Spot VM?
Azure Spot VM 是指任一时刻 Azure 数据中心中的空闲虚拟机。由于这些机器当前未被使用,Azure 会以大幅折扣提供,有时相比标准 Azure VM 价格可低至 90% 折扣。
不过,这种成本降低伴随着不确定性。一旦其他用户对 VM 的需求上升,Azure 可能会在很短时间内收回这些 Spot VM。因此,Spot VM 的可用性不可预测。我们应仅将其用于不要求持续可用、且可承受中断的任务。例如:
批处理作业
批处理作业是在无需人工干预的情况下在计算机上运行的任务。此类任务通常以大型“批次”处理,可顺序或并行执行。它们的开始与结束时间通常较为灵活,因此可以暂停并在之后恢复,而不会造成重大影响。
例如,某家金融机构需要在每个工作日结束时处理交易。它们可以设置批处理作业,从各类来源自动加载成千上万甚至上百万笔交易,对其进行校验,然后相应更新账户余额。
测试与开发环境
测试与开发环境是软件开发者构建并测试应用的环境,不会影响在线生产环境。搭建这些环境成本不菲,而这正是 Spot VM 可发挥作用的地方。
例如,一个从事电商网站的团队希望尝试基于用户浏览历史的商品推荐新功能。他们可以先在开发环境中完成该功能,再迁移至测试环境,严格测试缺陷、性能与用户体验。不同配置下的测试都可以在 Spot VM 中完成。测试通过后,再将该功能部署到生产环境,向客户开放。
容错型应用
容错型应用即使在某些组件发生故障时也能持续运行,这通常通过内置冗余与故障转移机制实现。此类应用非常适合运行在 Spot VM 上。比如,一个应用由多台服务器处理用户请求,如果其中一台故障,系统会自动将请求转发至其他服务器。正因为具备容错性,这类应用可以利用 Spot VM 来节省成本。
Azure Spot VM 的优势
使用 Azure Spot VM 的主要优势是可大幅节省成本。正如前文所述,相比按需 VM 价格,折扣最高可达 90%。得益于这些折扣,我们可以根据可用容量弹性扩缩工作负载,使原本在按需 VM 上成本高昂的大规模任务也有可能运行。此外,我们还能为 Spot VM 设定愿意支付的最高价格,从而更好地控制开支。
当 VM 将被 Azure 收回时,我们还可以选择逐出策略(eviction policy)来指定后续操作——可选择释放分配(deallocate)或删除(delete)VM。若选择释放分配,VM 会停止但不会被删除,这样在其再次可用时我们可以重启;期间只需支付存储费用。若选择删除,VM 及其工作负载数据都会被删除。
如何部署 Spot VM
本节介绍如何部署 Spot VM,并选择与之相关的选项,如定价与逐出策略。我们既可以部署单个 Spot VM,也可以部署一组 Spot VM(称为 Spot VM 规模集,Scale Set)。
单个 Spot VM
最简单的方法是在 Azure 门户中创建 VM。
我们也可以使用 Azure CLI、Azure PowerShell 等方式来启动 Spot VM。更多详情请参阅Azure 关于 Spot VM 的文档。
Spot 虚拟机规模集(VMSS)
我们还可以创建称为 Spot 虚拟机规模集的 Spot VM 组。为此,请在 Azure 门户中搜索 Virtual Machine Scale Sets 并创建一个。VMSS 可以自动化部署与管理多台 Spot VM,便于按需扩缩。我们可以基于 CPU 使用率或网络流量等条件定义伸缩规则,并根据最高价格与可用性需求设定期望容量。
Azure Spot VM 的最佳实践
为确保工作负载兼具韧性与成本效益,我们建议在使用 Spot VM 时遵循以下最佳实践。
检查容量
在部署 Spot VM 之前,我会检查目标区域及计划使用的 VM 规格的可用容量。Azure 的容量会随其他客户需求而波动,提前核实可用性有助于我们就工作负载部署做出更明智的决策。
设定最高价格
我会为每台 VM 设定自己愿意支付的每小时最高价格,以帮助控制成本。
为中断而设计
鉴于 Spot VM 可能会在短时间内被抢占,我建议将工作负载设计为对中断具备韧性。可采用检查点(checkpointing)等策略定期保存进度,使其能从最近的检查点恢复,而无需从头开始。对于分布式处理工作负载,确保任务可在剩余实例间重新分配,即使部分实例被抢占也能维持吞吐量。
设置监控
有效的监控对于高效管理 Spot VM 至关重要。Azure 提供了用于跟踪 Spot VM 使用情况、成本与逐出事件的工具。通过监控这些指标,我们可以洞察 Spot VM 的运行表现,并据此调整策略。
Azure Spot VM 与预留实例对比
在某些场景下,相比使用 Spot VM,使用预留 VM 可能更为合理。预留 VM 是另一种可优化云成本的选择。本节将解释这两种实例的差异。
Spot VM
如前所述,Spot VM 能带来显著成本节省,有时相较按需价格可便宜高达 90%。但这些实例可能会因容量需求而被 Azure 以很短通知时间收回。因此,我们应将 Spot 实例用于对时间较为灵活、能够处理中断的工作负载,包括批处理作业、开发与测试环境,以及可轻松在多实例间分布的无状态应用。
预留实例
另一方面,预留实例可按一或三年期限购买。我们可以选择特定 VM 类型,并以显著低于按需的价格获得,但需承诺使用一年或三年。使用预留实例的主要好处是不存在被 Azure 逐出的风险。若工作负载的使用模式可预测且需要持续可用性,预留实例往往是更佳选择。
总之,在 Azure Spot VM 与预留实例之间进行选择,取决于您在成本、灵活性与可靠性方面的具体需求。
结语
Azure Spot VM 是实现高性价比云计算的优秀方案。它们可为我们带来可观的折扣,有时相较按需价格可便宜高达 90%。
Azure Spot VM 尤其适用于灵活且可容忍中断的工作负载,包括批处理作业、开发与测试环境,或任何不要求持续在线的应用。对于这些工作负载,Spot VM 能显著降低我们的成本。
如需进一步了解 Azure Spot VM,请查看以下资源:
如果您喜欢这篇文章,不妨看看这些内容:Azure DevOps 面试题以及在 Azure 上使用 GPT。