gpt4 book ai didi

amazon-web-services - AWS 自动缩放策略终止繁忙实例而不是空闲实例

转载 作者:行者123 更新时间:2023-12-05 01:21:03 25 4
gpt4 key购买 nike

我有一个自动缩放策略,可以根据整个组 CPU 使用率缩放我的后端实例。AWS 有一些不同的终止策略可供选择,例如 OldestInstance、OldestLaunchConfiguration、NewestInstance 和 ClosestToNextInstanceHour。

不幸的是,这些都不能帮助解决我的问题。如果我的缩减策略触发器设置为该组的低 10%,它最终可能会删除仍然忙碌的实例,而不是选择一个有空闲 cpu 的实例。

有人建议解决方法吗?我的后端实例也没有使用内部 ELB。

最佳答案

扩展策略用于更改 Auto Scaling 组的所需容量。这些扩展策略可以从 AWS CloudWatch 警报触发,也可以通过 API 调用触发。

一旦 Auto Scaling 决定终止实例以响应扩展策略,它会使用 Termination Policy确定终止哪个实例。但是,Auto Scaling 无法通知实例即将终止。正如您所说,这可能会导致繁忙的实例被终止。

有几种方法可以解决这个问题:

  • 允许终止,但恢复丢失的工作
  • 使用 Auto Scaling 组生命周期 Hook
  • 自己控制实例终止
如果您的 Auto Scaling 组正在处理来自工作队列(例如 Amazon Simple Queue Service (SQS))的信息,

允许终止是完全可以接受的。在这种情况下,如果一个实例从 SQS 队列中拉取一条消息,该消息将被标记为在一段时间内不可见。如果实例在时间段内没有专门删除消息,则消息会重新出现在队列中。因此,丢失的工作将被重新处理。

使用 Auto Scaling 组生命周期 Hook 允许将标记为终止的实例移动到 Terminating:Wait 状态。然后通过 SNS 或 SQS 发送信号,Auto Scaling 在终止实例之前等待信号返回。参见 Auto Scaling Group Lifecycle .

自己控制实例终止 意味着您自己的代码将决定终止哪个实例。它可以通过在所选实例上向您的应用程序发送信号来以友好的方式执行此操作,有效地告诉它完成处理工作并在准备好终止时发回信号。此功能没有标准 API——您必须自己创建,可能由 CloudWatch 警报和 SNS 通知触发。

您可以使用 DetachInstances API 调用以从自动缩放组中删除实例,之后您将完成作业然后终止该实例。

关于amazon-web-services - AWS 自动缩放策略终止繁忙实例而不是空闲实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26508456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com