今天,我们想谈谈Yandex.Cloud作为中断的虚拟机的有用功能。 这是创建虚拟机以降低价格使用计算资源时可以选择的特殊选项。 可中断虚拟机有什么特别之处,为什么它们比普通虚拟机便宜,在什么情况下使用它们是明智的?

Yandex.Cloud(更确切地说是
Yandex Compute Cloud基础架构服务)的容量明显大于用户使用的容量。 默认情况下,假定用户应该能够任意缩放。 至少由于这些原因,在不考虑其他方面的情况下,云平台的可用资源大大超出了当前需求。 正是这些空闲容量创建了中断的虚拟机。
主要限制
简而言之,被中断的虚拟机的性质可以描述如下:该服务提供了以较低的价格使用其免费计算资源的条件,前提是可以随时调用这些资源。
通常,中断的虚拟机的工作方式与常规虚拟机类似,但是它们有许多限制:
- 它们不在服务级别协议(SLA)的涵盖范围内。
- 不能保证创建和运行的能力。
- 他们可以随时被迫停止。 停止的可能性很小,但非零,它可以随时间变化,并在不同的Yandex.Cloud可用区中变化 。
- 中断的虚拟机不能正常运行,而可以正常中断。 相应的标志仅设置一次,并且不会更改。
- 一定会在不超过24小时的时间内停止机器。
实际上,在大多数情况下,中断的虚拟机会在服务条款规定的所有24小时内正常工作。 强制停止通常仅在短时间内在特定的可用性区域中创建大量普通虚拟机时出现:出现严重需求的新用户或大规模扩展当前用户。
同时,可以再次启动已停止的虚拟机:在自动和手动关闭过程中,磁盘上的所有数据都会保存。
用例
对中断的虚拟机的限制提出了一个逻辑问题:如果可以随时撤消资源,如何应用它们? 作为说明,这里有一些可能的用例。
批处理
批处理涉及并行执行大量资源密集型任务。 这可能是文件格式的转换,图像处理和识别,
ETL操作 。 最重要的是,在批处理中,有一个作业队列和一整套从该队列接收作业的工作流程(执行程序)。 如果在中断的计算机上运行的单个执行程序停止运行,则该任务将简单地转移到下一个执行程序。 换句话说,停止一个或什至几个虚拟机不会对进程和处理结果产生重大负面影响。

在批处理数据时,我们正在谈论使用数十个虚拟机。 使用间歇式机器可节省大量成本。 现在,长期的Yandex.Cloud客户端Seismotech是生产具有32核的不连续虚拟机的主要消费者之一。 Seismotek处理地震数据,这是勘探天然气和油田所必需的。 地震勘探涉及处理大量信息。 数据以批处理方式处理。 该公司同时使用多达60台以上的中断机器:总共多达2000个vCPU和4000 GB的RAM。
Hadoop上的项目
Hadoop用于开发和执行在成百上千个低成本节点的群集上运行的分布式程序。 Hadoop提供的在故障节点上执行的文件复制和自动重启任务的机制,确保了分布式系统对单个计算机故障的稳定性。 因此,在使用Hadoop的情况下,至少可以将部分节点轻松部署到中断的虚拟机。 如果它们提前停止,任务将被发送到其他节点。
Web服务故障转移
通过使用群集,可以确保Web服务的连续可用性。 群集由两个或更多服务器组成。 在Web服务应用程序中其任务之一是确保在峰值负载时稳定运行。 典型示例:流量增长与特定日期相关联的在线购物网站或体育网站。 对于商店来说,这可以是传统的假期或折扣时段,而对于与体育有关的网站,则可以是发布直播,评论和照片报告的活动日。 在这种情况下,流量可能会大大增加。
集群必须通过将流量分配到不同的节点来应对访问者的涌入。 在负载急剧增加但持续时间短的时期内,可以通过在不连续的虚拟机上添加服务器来提供容错能力。 此选项价格便宜,并且性能很好。 重要的是要观察一种情况:这样的集群必须是混合的,即包括普通的虚拟机。 在这种情况下,即使中断机器的意外停止也不会导致服务故障。
Kubernetes的项目
Kubernetes自动化了跨多个节点的容器化应用程序的部署,扩展和管理。 可以称为Kubernetes的构建块的主要实体之一在(pod)下。 Pod可在一个节点上启动一个或多个容器。 Kubernetes调度程序选择并分配了每个炉膛的节点。 如果具有运行中炉床的单独节点发生故障,调度程序将自动将其转移到以正常模式运行的节点。 这种维护健康的方案表明,部分节点可以托管在不连续的虚拟机中。
持续集成测试
持续集成的实践是基于项目的频繁组装和测试。 在这种情况下,主要使用自动化测试。 从示意图上看,它看起来像是:在虚拟机上创建了一个测试环境,将应用程序的最后一个版本上传到该环境,执行了自动测试,上传了测试结果,删除了虚拟机。 通常,测试需要几十分钟,而很少需要几个小时。
传统上,持续集成的弱点被认为是支持集成过程本身和对计算资源的高需求的巨大成本。 从这一角度出发,并考虑到自动化测试的时间范围,已停产的虚拟机看起来更适合进行持续集成。 它们便宜得多,并且汽车在测试时立即停车的可能性很小。 而且,即使汽车仍然停止,从业务的角度来看,其损害也将是最小的。
与其他Yandex.Cloud服务结合使用
Yandex实例组服务允许您自动监视整个被中断的虚拟机组的状态。 他可以独立地创建具有给定特征的虚拟机,维护组中必要数量的计算机,并在中断的实例停止时重新启动它们。 自从开始强制停止或经过24小时之后都没关系。 只有一件事很重要:如果有可用资源,将发生重启。 Yandex实例组使使用中断的虚拟机更加方便,但不能保证特定可用性区域中将有可用容量。
经济表现
如前所述,可中断虚拟机可以降低使用计算资源的成本。 在Yandex内部,几年前我们就开始从事类似的功能。 要将计算任务划分为有保证的可执行文件和可中断文件,需要大量投资。 但这并没有白费:最后,我们将服务器基础架构的有用利用率从30-40%提高到70-80%。

现在,只需单击一个按钮,所有Yandex.Cloud用户都可以使用类似的功能。 一个简单的示例:如果将一半使用的虚拟机(具有100%的内核负载)转移到中断格式,则可以节省多达35-40%的预算。
可以降低成本获得CPU和RAM资源。 磁盘空间和IP地址是按固定费率支付的。 这是Cascade Lake平台的简单计算结果。

如果需要,可以使用
计算器比较以不同模式使用虚拟机的成本。
我们希望我们能够稍微澄清一点,并提供一些有用的示例,在这种情况下,您可以使用可中断的虚拟机来降低计算资源的成本,而又不会降低执行任务的质量。
有关Cloud onHabré的其他出版物