AWS 自动扩展,“缩减”控制

AWS 自动扩展,“缩减”控制

我正在尝试将运行许多作业的单片大型服务器转变为使用自动扩展来随着更多作业的运行构建更多服务器的设计。我在测试中发现的问题是,当默认任务扩展发生时,它会终止正在运行任务的服务器。

服务器是否可以告诉 AWS 它正在运行并且需要保持运行?或者能够在“可以终止”和“正在运行”之间切换,就像它获得了新工作一样?

工作可能需要几分钟或几小时,因此一个固定的冷却计时器无法提供适当的保护。

答案1

EC2 AutoScaling 有一种称为“缩减保护”的功能,即不会选择某个实例因缩减事件而终止(通常是由于所需容量下降导致的,但也可能适用于实例刷新之类的情况)。

如果您有大量实例,请小心 API 限制,为避免限制,以下是一些最佳做法

  • 在 ASG 上启用扩展保护。这样,所有新实例在启动时都会启用它,并且在启动时不会出现大量的 API 调用
  • 不要在作业结束时删除保护,然后在接手新作业时立即再次启用它。先检查是否有新作业要开始,然后保持启用状态。您可能希望通过本地环境变量跟踪启用/禁用状态
  • 根据您的作业模式,最好在上一个作业结束后等待几分钟再重新启用保护,这样您就不会在新作业开始时终止实例

或者,您可以仅使用扩展策略进行扩展,然后让实例本身控制缩减。使用与上述相同的逻辑,但当实例因无事可做而准备终止时,让它自行调用terminate-instance-in-auto-scaling-group命令。如果您不希望 ASG 实例数量降至 0,这种方法可能并不理想。

相关内容