我们使用 EC2 竞价实例来抓取数据。任何时候我们都需要运行 20 个实例。我们的目标是实现高可用性以及成本优化。
我们要遵循的方案如下:我们以非常高的出价(5 美元)启动 20 个现货实例,以避免终止。我们不断监控现货价格,当我们发现现货价格高于 2 美元并保持超过 N 小时时,我们启动 20 个按需实例,然后终止所有现货实例。
再次持续监控现货价格,当现货价格稳定下来时,启动 20 个现货实例并终止按需实例。
为了简单起见,我们正在寻找现成的工具来处理这个问题。我可以使用自动缩放或任何其他工具来做到这一点吗?
答案1
我不知道有什么工具可以帮你做到这一点。你可以对竞价实例使用自动缩放功能,但它不会执行你在此处描述的操作,只是它是一种控制当前正在运行的实例数量的简单方法。
在我工作的地方,我们之前尝试过类似的设置,我们的想法是一样的。设置一个高出价,我们的实例就永远不会被销毁。让我告诉你,即使出价很高,你的实例也会被终止,如果你运气不好,你实际上必须支付这个非常高的出价。大约一年前,有很多人这样做,他们会对某些实例出价高达 100 美元的疯狂价格,最终不得不为它们付费。
如果你查看价格历史,就会发现有很多例子。查看 us-east-1a 中的 c1.medium,你可以看到价格在 1 月 24 日从 0.018 美元跃升至 0.165 美元。这将有效地终止你正在运行的所有实例,而无需任何通知。我要警告你,这种设置是有风险的。
但是,使用这种模型可以节省大量成本,有些成功的公司能够做到这一点,但这并不容易,而且没有简单的工具(据我所知)可以为您做到这一点。这实际上取决于您的用例。如果您需要 100% 的正常运行时间,那么这不是一个好的解决方案,除非您有某种混合系统,在现货实例出现某种故障时,您始终运行按需实例。
我们决定放弃整个项目,因为维护和实现 100% 正常运行时间实在是太麻烦了。对我们来说,最便宜的解决方案是使用预留实例,它们比按需实例便宜得多,而且有了预留实例的新定价模型,我相信你现在可以找到适合你用例的东西,因为你现在可以拥有轻型、中型或重型预留实例。