Nia*_*all 2 amazon-ec2 amazon-web-services autoscaling amazon-vpc
我有一个自动缩放策略,可根据整体组 cpu 使用情况缩放我的后端实例。AWS 有一些不同的终止策略可供选择,例如 OldestInstance、OldestLaunchConfiguration、NewestInstance 和 ClosestToNextInstanceHour。
不幸的是,这些都没有帮助解决我的问题。如果我的缩减策略触发器为组设置为低 10%,它最终可能会删除仍然繁忙的实例,而不是选择一个具有空闲 CPU 的实例。
有没有人建议是解决方法?此外,我的后端实例没有使用内部 ELB。
扩展策略用于更改Auto Scaling 组的所需容量。这些扩展策略可以从 AWS CloudWatch 警报触发,也可以通过 API 调用触发。
一旦 Auto Scaling 决定终止一个实例以响应扩展策略,它就会使用终止策略来确定要终止哪个实例。但是,Auto Scaling 无法通知实例即将终止。正如您所说,这可能会导致繁忙的实例被终止。
有几种方法可以处理这种情况:
如果您的 Auto Scaling 组正在处理来自工作队列(例如 Amazon Simple Queue Service (SQS))的信息,则允许终止发生是完全可以接受的。在这种情况下,如果实例从 SQS 队列中拉取一条消息,该消息将在一段时间内被标记为不可见。如果实例在该时间段内没有专门删除该消息,则该消息将重新出现在队列中。因此,丢失的工作将被重新处理。
使用 Auto Scaling 组生命周期挂钩允许将标记为终止的实例移动到某种Terminating:Wait状态。然后通过 SNS 或 SQS 发送信号,Auto Scaling 在终止实例之前等待信号返回。请参阅Auto Scaling 组生命周期。
自己控制实例终止意味着您自己的代码将决定终止哪个实例。它可以通过向所选实例上的应用程序发送信号来以友好的方式执行此操作,有效地告诉它完成处理工作并在准备好终止时发回信号。此功能没有标准 API - 您必须自己创建它,可能由 CloudWatch 警报和 SNS 通知触发。
您可以使用DetachInstances API 调用从 Auto Scaling 组中删除实例,之后您将完成作业,然后终止该实例。
| 归档时间: |
|
| 查看次数: |
1910 次 |
| 最近记录: |