我可以使用 CloudWatch 警报扩展 AWS Spot 实例吗?

Posted

技术标签:

【中文标题】我可以使用 CloudWatch 警报扩展 AWS Spot 实例吗?【英文标题】:Can I scale AWS Spot Instances with CloudWatch alarms? 【发布时间】: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 组/启动配置(不是现场实例),那么组中的实例数量会按预期增加和减少。

【问题讨论】:

【参考方案1】:

根据this AWS doc,您可以在一个区域中拥有的 Spot 实例的最大数量:

Spot 请求限制

默认情况下,您被限制为一个区域内总共有 5 个 Spot 实例请求。新的 AWS 账户可能有较低的限制。目前,实例类型 T2、I2 和 HS1 在 Spot 上不可用。此外,并非所有地区都提供某些实例类型。 (有关实例类型的信息,请参阅实例类型。)

听起来您遇到了这个问题 - 您需要填写 this form 以请求提高限制。

【讨论】:

谢谢@Undo。在我发布到 SO 之前,我已经提出了增加限制的请求,但他们还没有回复。我们会看看他们说什么,并希望能解决它。奇怪的是,我昨天晚些时候在第二个区域设置了相同的过程,并且在第一个 Spot 请求时出现了错误。 它现在似乎可以工作了。我增加 Spot 请求限制的请求现在被标记为“Work-in-Progress”,并且 Auto Scaling 组正在按预期增加/减少所需的 Spot 实例数量。我怀疑增加了限制。感谢您的帮助,@Undo。

以上是关于我可以使用 CloudWatch 警报扩展 AWS Spot 实例吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS 中缩减 Auto Scaling 组会导致永久警报

Cloudwatch 警报到 Slack

AWS Cloudwatch 上的警报设置

使用 cloudwatch 警报进行 AWS route53 故障转移

是否可以确定在 cloudwatch aws 上发送警报的时间?

如何禁用AWS Cloudwatch指标