我有一个作业队列并运行处理作业的AWS EC2实例。我们为每个c4。*实例类型提供了现场和按需版本的AutoScaling组。通过AWS降低价格(EC2和现货实例)
每个实例的电源数量等于CPU的实例数量。 (例如c4.large具有2个CPU的功率= 2)。
我们需要的确切功率只是根据队列中的作业数量计算出来的。
我想实现一种算法,它可以定期检查队列中的作业数量,并通过AWS SDK更改特定AutoScaling组的期望值,以节省尽可能多的资金并保持实例的总功率保持作业处理。
特别:
- 我宁愿现货实例点播,因为它们更便宜
- EC2实例每小时收费,我们想只在最后一分钟关闭实例在其1小时正常运行时间。
- 如果可能,我们希望通过现场实例替换按需实例。所以,在55分钟增加spot-group时,在58检查新的实例正在运行,如果是的话,减少按需组。
- 如果出价太高,我们希望按照需求替换现货实例。只需关闭点播,然后打开现场。
似乎问题确实很难处理。任何人有任何经验或类似的解决方案实施?
我尝试过报警,结果是报警很慢。最多需要5分钟才能启动新实例。另外,你将如何处理现货实例?我们运行的EC2实例的数量应该是大约。 QueueSize/C,其中C是一个常数。你不能用闹钟做到这一点。 – smrt28