AWS 上 Spot 实例的内置自动缩放组的替代方案

Alternative for built-in autoscaling groups for spot instances on AWS

我目前正在使用由自动扩展组管理的 Spot 实例。但是,ASG 在与 Spot 实例一起使用时存在许多缺点。例如,如果当前类型在所有可用区中都经历价格飙升,它就无法启动不同实例类型的实例。它甚至无法跨区域重新分配 运行ning 实例的数量(如果一个区域出现价格飙升,则 运行ning 实例的数量下降了 30%。)

有没有我可以 运行 替代内置 AWS Auto-Scaling 组的软件解决方案?我听说过 SpotInst 和 Batchly,但我不信任它们。基本上,我认为他们的商业计划涉及被亚马逊收购并杀死,就像 ClusterK 发生的事情一样。证明这一点的是奇怪的定价政策和其他危险信号。我需要一些我可以自行托管并依赖的东西。

您不太可能找到能考虑到您想要的一切的东西。但是因为 Amazon 中的所有内容都是 API,所以您可以自己编写。有很多方法可以做到这一点。

例如,您可以编写一个小脚本(bash、ruby、python 等),它可以通过 AWS CLI 获取价格,然后通过 shell 来启动盒子。对于奖励积分,请使用原生 AWS SDK 库而不是掏空。 (这样处理错误等会稍微好一点)如果想加分,开源,希望大家改进!

此脚本可以 运行 在您的家用计算机上,或者在 t1.micro 上,每月 5 美元。或者,您可以在 node.js 中编写它,然后在 Lambda 上 运行 编写它,每月只需几美分。

AWS 最近发布了 Auto Scaling for Spot Fleets,它似乎非常适合您的用例。您可以根据所需的 vCPU 定义集群容量,选择您想要使用的实例类型及其权重,然后让 AWS 管理其余部分。 他们将以当前市场价格提供 Spot 实例,最高可达您可以为每个实例类型定义的限制(和以前一样),但集成了 Auto Scaling 功能。

您可以在此处找到更多信息。 https://aws.amazon.com/blogs/aws/new-auto-scaling-for-ec2-spot-fleets/

在 Spotinst,这些正是我们建立 Elastigroup 来解决的问题。 Elastigroup 可以同时启用 运行 任意数量的实例类型和可用性区域(在一个区域内)。这与维持生产可用性的几件事相结合:

  1. 我们的算法根据价格和可用性实时选择最佳现货市场。

  2. 当中断发生时,我们会提前大约 15 分钟进行预测,并采取所有必要的步骤来确保(并确保)您的团队的容量。

  3. 在极端情况下,none 个市场有 Spot 可用性,我们只需回退到按需实例。

我们与 AWS 有着良好的关系,并与他们的技术和业务团队密切合作,为我们的加入客户提供尽可能最好的体验。当我们在您自己的 AWS 账户中管理资源时,我不会把我们之间的关系作为一个问题,首先。