如何自动检查AWS现货价格?


15

我一直在考虑詹金斯(Jenkins)的工作,以核查我们启动的代理箱的价格;价格每隔一段时间就会飙升一次,一两个小时后,任何人就会注意到没有新的代理商来,然后我们必须手动进入并检查现货价格并进行相应调整,或​​切换区域等。

我的第一个直觉是,最好的方法是每小时执行一次Jenkins作业,该作业运行aws ec2 describe-spot-instance-requests并检查失败的请求(然后让我们放松失败)。但是我想知道是否有一种更干净的方法,它涉及实际比较硬价格(因此可以告诉我们确切的情况以及发生的幅度),而不是查看成功/失败的请求。

有人设置类似的东西吗?你怎么样


1
我想这是一个合理的问题...但是,为什么您不只是竞价实例对您真正的价值,而是选择多个实例类型(包括比您需要的实例大的实例,当较小的实例现货价格上涨时,这些实例有时会便宜些...)偶尔-包括现在就在我撰写本文时-我发现自己使用的是cc2.8xlarge,因为尽管它具有4倍的内核和4倍的内存,但它目前比我需要的c3.2xlarge便宜),并且让系统处理实例市场选择类型选择和可用区放置?
Michael-sqlbot

1
@ Michael-sqlbot我在过程的那部分没有说;我们有文档说明,我们出于审计目的购买了一定数量的实例,因此这就是我们所坚持的。只是试图充分利用一个不理想的情况。
亚历克斯(Alex)

1
很公平,@ Alex。只是以为我会把它扔进去,以防万一您没有考虑到它。
Michael-sqlbot

@Alex出于兴趣,实例大小是否一定,因此可以在账单上轻松看到?因为您(而是他们!)可以使用标签,然后在“成本浏览器”中查看它们。
蒂姆·马隆

Answers:


15

发现了一个名为autospotting的开源工具,可能会对此有所帮助:

在现有的按需AutoScaling组上启用后,它将启动更便宜的EC2竞价型实例,该实例至少与现有的按需实例一样大且配置相同。新实例就绪后,它将立即添加到组中,并且按需实例将从组中分离出来并终止。

我们在待办事项流水线中有了这个,一旦完成,就可以添加更多上下文。

更新:

最近在会议上演示的另一个工具是mapbox / spotswap

这略有不同。它使用按需实例或预留实例监视正常的ASG,然后,如果规模扩大,则出价和准备金将在单独的ASG上发现具有相似计算级别的实例。


2
欢迎来到该网站,哈什菲尔(Hashfyre :)
Dawny33

1
我是AutoSpotting的作者,感谢您提及它!您尝试过了吗?我很想听听用户的反馈意见。
Cristian Măgherușan-Stanciu

6

我个人会考虑这样的模型:

Timed Lambdas -> Checks spot price -> Push to ElastiCache

然后,当您需要实例时:

Timed lambdas -> Pulls spot price from ElastiCache, sets it as environment variable on your Machine where you spin up IaC from -> This is parsed as argument to IaC code and pushes out the spot price

您也可以在lambda内设置一些公差(例如,根据重要性增加10%,25%,50%)和按需设置硬上限。这也是构建逻辑处理的好地方,例如,找到最便宜的可用区,找到相对最便宜的现货价格(2xt2.mediumvs t2.large)等。


仅作为参考,您可以编辑已删除的答案并标记为要求删除。(没有造成伤害,只是提供了信息:))
Tensibai '17

1
我会sha愧不屈,让我想起我永远被误导的日子。
亨利

罗夫(Rofl),真的没有羞耻,请放心:)
Tensibai '17

3
我是谁的疤痕定义
亨利

很酷的主意-也许值得一提的是,如果他们还没有ElastiCache集群,可以将价格推到DynamoDB表上。或者甚至是S3存储桶中的JSON文件。
蒂姆·马隆

4

让我为您提供一种与工具无关的方法来尝试执行此操作。

价格每隔一段时间就会飙升,一两个小时后,任何人就会注意到没有新的代理商来,然后我们必须手动进入并检查现货价格并进行相应调整,或​​者切换区域等

我们在构建的基础架构中面临着同样的问题。因此,我们有if-else样式块来设置出价,具体取决于实例的按需价格。

AWS具有用于获取实例按需价格的API。我们为此目的使用了Python包装器

因此,一旦我们得到了按需价格(比方说X),我们插入if-else样式块,这是0.4*X0.6*X0.8*XX,这意味着我们的范围内努力为标价的40%,60%时,80%的需求价格。如果所有方法都失败了,那么我们将退回到创建按需实例。

此外,由于这独立于AWS当前的现货价格,因此我们绝不会支付高于按需价格的价格。

但是,如果您正在寻找一种即时执行的方法,那么Hashfyre的解决方案应该是可行的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.