【发布时间】:2014-10-06 06:45:39
【问题描述】:
我需要对图像进行一些服务器端操作。通常,这些图像要么以某种名义水平上传或导入到我们的系统中,但偶尔会添加一个客户,该客户需要一次处理大量图像。尽管确实需要在合理的时间内处理这些工作,但以低成本完成这些大型工作比快速完成更重要。
因此,我想为此使用 AWS Spot 实例以尽可能降低成本,保持最高出价相对固定(在需要时手动更改),同时上下移动所需数量的实例队列中的消息数量波动。
我对 AWS 很陌生,但这是我迄今为止尝试过的(全部通过 AWS 管理控制台)...
- 创建一个 SQS 队列来保存传入的图像处理任务消息
- 创建两个 CloudWatch 警报
- ScaleIn,当 ApproximateNumberOfMessagesVisible
- ScaleOut,当 ApproximateNumberOfMessagesVisible > 1 300 秒时发出警报
- 创建一个启动配置,用于为 Spot 实例支付一些最高出价金额
- 创建一个 Auto Scaling 组,使用我的启动配置在 0 和 n 个实例之间自动扩展。
- 向 Auto Scaling 组添加两个 Scaling 策略
- 减少组大小,当 ScaleIn 警报触发时删除 1 个实例
- 增加组大小,当 ScaleOut 警报触发时增加 1 个实例
然后我使用 SQS 管理控制台手动添加几条测试消息。警报似乎正在触发,但 Auto Scaling 组的 Scaling History 选项卡中反复显示以下消息...
Description: Description Placing Spot instance request. Status Reason: Max spot instance count exceeded. Placing Spot instance request failed.
Cause: Cause At 2014-08-12T23:12:51Z a difference between desired and actual capacity changing the desired capacity, increasing the capacity from 0 to 1.
是否可以通过这种方式控制 Auto Scaling 组中的 Spot 实例的最大数量?如果我遵循相同的过程,而是创建一个常规的 EC2 Auto Scaling 组/启动配置(不是现场实例),那么组中的实例数量会按预期增加和减少。
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-sqs amazon-cloudwatch