我今天需要启动一个新的 EC2 实例,并决定试用新的Spot 实例,您可以通过竞标您准备支付的最高每小时价格来降低实例成本。由于今天的现货价格仅为 3.5c/小时,而按需实例为 8.5c/小时,我想知道:如果我只是出价非常高,比如 10c/小时,我是否可以有效地确定获得长期运行的实例比按需实例便宜得多(因为现货实例仅按当前现货价格收费)?
我认为现货价格理论上有可能超过按需价格,但据我从 AWS 网站上的数据来看,现货价格一直远低于该价格。
更新:我已经监测了几个星期的小型实例现货价格,它非常一致,仅在 2.9c 和 3.1c 之间变化。我写了一篇关于现货实例的更详细的博客文章,包括一个指向我为监控现货价格而构建的 Nagios 插件的链接。
理论上,这就是想法,但不要在其上托管网络服务器或任何不会死的东西。这通常用于分布式工作,如数据搅动,而不是服务,因为如果现货价格超过您的最高出价,您的服务器就会关闭。
此外,只要确保您的号码正确,按需收费是每小时 0.085 美元,而不是 0.85 美元。可能会对您的预测产生影响:)
好吧,以当前价格出价 10 倍会有所帮助。但是,过去曾发生过终止给定区域中所有正在运行的 Spot 实例的事件(价格飙升)。
一项重要的保护措施是将您的卷设置为持久性,以便它们能够在任何不需要的终止中存活下来(毕竟任何实例都是如此)。另一种方法是制定清晰、概述的备份和恢复计划——如果实例终止、如果您在一个区域中丢失数据(发生在今年春季的中断中)、如果跨区域丢失实例/数据,您会怎么做?
您在后一种(最坏的情况)场景中投入多少精力当然是成本/收益问题,但一般来说,您需要为现场实例和持久实例制定相同的恢复计划。
最后,Spot 实例不能“停止”(暂停或“关闭”)并重新启动。在诊断问题时,这是一个值得注意的考虑因素——您将无法停止挂起的实例,例如,将卷附加到另一个实例、进行更改并尝试重新启动。(当然,您可以创建一个 AMI 并启动一个新实例)。
问题是,如果 AWS 的资源被大量使用,它会关闭你的 Spot 实例——Spot 实例只是 AWS 在需求总体较低时闲置的服务器上至少赚到一些钱的一种方式。
基本上,这不仅仅是您出价与现货价格的一个因素,还取决于 AWS 区域的整体利用率。
我也有同样的想法。即使我的最高出价简单地设置为与按需实例相同,我的 Spot 实例也已终止。无论当前的出价如何,都不能保证您的实例会保持运行。