为短期工作量添加现场EC2实例的建议

时间:2017-01-08 09:03:24

标签: php amazon-web-services amazon-ec2 aws-sdk worker

我有一个php / Laravel应用程序部署到作为我的Web服务器的AWS t2.small EC2机器上。 98%的时间,这台小机器可以很好地提供HTTP和mySQL工作负载。但是,我需要每天运行一个大型的处理/批处理/计算工作大约一个小时,并且正在探索如何利用亚马逊的现货定价来每天为这个日常工作负载启动服务器。

我的应用程序使用队列来启动不同的作业,我希望我可以使用AWS SDK自动发出一个点请求,然后将其添加到一个集群中以完成我的队列处理。

我只是不确定我要完成这个过程的过程,并且认为我要求这个社区提供任何指示或教程,以显示如何使用Spot实例解决此问题 - 工作量处理?

提前感谢任何指示或建议!

2 个答案:

答案 0 :(得分:0)

如果您的“巨大处理/批处理/计算”作业可能被中断,那么竞价型实例可能对您有利。但是,如果这项工作必须在第二天之前完成并且不能中断,我将避免使用竞价型实例。

当您申请Spot Instance时,您需要输入出价。如果您的出价低于竞价价格,您将无法获得竞价型实例。此外,如果没有足够的未使用容量,那么您将无法获得竞价型实例。

您最好的选择是创建并启动更大的按需实例,以便每晚执行此工作。

答案 1 :(得分:0)

现货价格可能因AZ而异。在请求现货之前,找到哪个AZ的价格最优惠。每隔几分钟循环,直到满足这些条件a)现货价格低于您在子网中的出价或b)达到威胁时间。如果您无法在达到阈值时间之前获得现货价格,请切换到按需并继续。

请注意,阈值时间应该非常保守。竞价型实例可能会失败(由于价格上涨) - 因此您应考虑额外的时间切换到按需并仍然满足处理时间(SLA等)。

检查现货价格: http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-price-history.html

请求现场实例: http://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html