繁体   English   中英

如何将AWS SQS与现货实例EC2工作者和长期运行的工作的自动扩展一起使用?

[英]How to use AWS SQS with auto-scaling of spot instances EC2 workers and long running jobs?

让我解释...

我有2个SQS队列 ,它们接收执行轻型重型报告生成作业的请求。 (为避免受到繁重的工作影响,已将队列分为两个队列。)

SQS将作业发送到包含3个worker自动扩展组中

工人是按需 EC2实例。 我想更改启动配置并使用竞价型实例

问题是,某些生成报告的重型任务可能要运行4个小时。 因此,如果这种工作在可能终止的现场实例工作者上运行,则将导致其他延迟和/或复杂性。

我想将竞价型实例用作工作人员,但也要确保如果有工作正在运行,则不会终止工作人员。

我想出的方法如下:

1.以实例的按需价格竞价现货实例[它仍然无法防止终止,但将可能性降到最低]

2.使用具有特定期限(例如6个小时)的竞价型实例,但是我仍被限制在6个小时内,实例终止。 另外,我不知道是否可以从启动配置中设置这种设置

我想将竞价型实例用作工作人员,但也要确保如果有工作正在运行,则不会终止工作人员。

您似乎了解这不是竞价型实例的工作方式

他们是你的,直到价格超出竞价

我认为在某些情况下6小时的时间(“定义的持续时间”)可能会有所帮助

想到两个主意

  • 在开始之前,尝试在“长”队列中估计作业的长度。 然后选择最便宜的选项来运行它

  • 为您的工作实施交易系统。 例如,当从SQS提取作业时,将时间/实例ID /作业ID添加到另一个持久系统,即数据库表。 然后每隔几分钟轮询一下表,并检查instanceid是否仍然存在。 当作业最终成功完成时,请获得作业执行程序以将其从数据库表中删除。 如果轮询发现实例已消失,则将作业重新提交给SQS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM