【问题标题】:How to use AWS SQS with auto-scaling of spot instances EC2 workers and long running jobs?如何使用 AWS SQS 自动扩展 Spot 实例 EC2 工作人员和长期运行的作业?
【发布时间】:2016-09-24 11:28:48
【问题描述】:

让我解释一下……

我有 2 个 SQS 队列,它们接收执行轻度重度报告生成作业的请求。 (为了不受繁重任务的影响,引入了分成两个队列的轻量作业。)

SQS 将作业发送到一个包含 3 个工作人员的自动缩放组

工作人员是按需 EC2 实例。我想更改启动配置并使用 spot 实例

问题是,一些生成报告的繁重作业可能会运行长达 4 小时。因此,如果此类作业在可能被终止的现场实例工作者上运行,则会出现额外的延迟和/或并发症。

我想将 Spot 实例用作工作人员,但也要确保工作人员在有作业运行时不会被终止。

我想出的方法如下:

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

2. 使用具有特定周期 [eg 6 hours] 的 Spot 实例,但我仍然被限制在 6 小时内并且实例终止。另外,我不知道我是否可以从启动配置中设置这种设置

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-sqs autoscaling


    【解决方案1】:

    我想将现场实例用作工作人员,但也希望确保工作人员在有作业运行时不会被终止。

    您似乎明白这不是现场实例的工作方式

    在出价之前,它们都是你的

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

    两个想法浮现在脑海

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

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

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 2020-11-24
      • 2019-03-08
      • 2017-11-14
      • 1970-01-01
      • 2015-01-15
      • 2018-01-09
      • 1970-01-01
      • 2019-04-22
      相关资源
      最近更新 更多