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

标签 amazon-web-services amazon-ec2 amazon-sqs amazon-cloudwatch

我需要对图像进行一些服务器端操作。通常,这些图像以某种名义级别上传或导入到我们的系统中,但偶尔会添加一个客户,该客户有大量图像需要立即处理。虽然这些确实需要在合理的时间内处理,但以低廉的成本完成这些较大的工作比快速完成它们更重要。

因此,我想为此使用 AWS Spot 实例以尽可能降低成本,保持最高出价相对固定(在需要时手动更改),同时上下移动所需的实例数量队列中的消息数量波动。

我是 AWS 的新手,但这是我迄今为止尝试过的方法(全部通过 AWS 管理控制台)...

  1. 创建一个 SQS 队列来保存传入的图像处理任务消息
  2. 创建两个 CloudWatch 警报
    • ScaleIn,当 ApproximateNumberOfMessagesVisible <= 1 持续 300 秒时发出警报
    • ScaleOut,当 ApproximateNumberOfMessagesVisible> 1 持续 300 秒时发出警报
  3. 创建启动配置,设置为为 Spot 实例支付一些最高出价金额
  4. 创建一个 Auto Scaling 组,使用我的启动配置在 0 到 n 个实例之间自动缩放。
  5. 将两个扩展策略添加到 Auto Scaling 组
    • 减少组大小,当 ScaleIn 警报触发时删除 1 个实例
    • Increase Group Size,当 ScaleOut 警报触发时增加 1 个实例

然后我使用 SQS 管理控制台手动添加几条测试消息。警报似乎在触发,但以下消息在 Auto Scaling 组的“缩放历史记录”选项卡中重复出现...

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 Group中的最大Spot Instance数量?如果我遵循相同的过程,而是创建一个常规的 EC2 Auto Scaling 组/启动配置(不是 spot 实例),则该组中的实例数量会按预期增加和减少。

最佳答案

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

Spot Request Limits

By default, you are limited to a total of 5 Spot Instance requests in a region. New AWS accounts might have lower limits. Currently, the instance types T2, I2, and HS1 are not available on Spot. Also, some instance types are not offered in all regions. (For information about instance types, see Instance Types.)

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

关于amazon-web-services - 我可以使用 CloudWatch 警报扩展 AWS Spot 实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25277163/

相关文章:

node.js - AWS CodeDeploy AfterInstall 脚本正在从代码部署代理目录运行

amazon-web-services - 如何通过 CloudFormation 通过实例元数据服务启用 ec2 标签访问

amazon-web-services - 是否可以为一周中的特定日期设置 Amazon EC2 自动扩展?

c++ - 使用 aws-sdk-cpp-sqs 库时遇到 Free() 无效指针

java - 无法在使用 boto SDK 从 python 生成的 java SqsListener 中监听 SQS 消息

amazon-web-services - SQS : Get Message Available

node.js - 如何将 Node.js 应用程序持续部署到 Amazon EC2?

amazon-web-services - 尝试在ECS实例中使用AWS ECR中提到的登录命令时出错

amazon-web-services - AWS IAM SSM - 限制实例可以运行的文档

amazon-web-services - 如何在 terraform 中的嵌套 block 内循环