【问题标题】:How can I run AWS Lambda function immediately in Auto Scaling event?如何在 Auto Scaling 事件中立即运行 AWS Lambda 函数?
【发布时间】:2021-08-23 08:07:18
【问题描述】:

背景

我在 EC2 应用程序负载均衡器 (ALB) 下运行多实例服务。我正在使用 Auto Scaling Group (ASG) 根据负载增加和减少实例。

当 ASG 进行 Scale-In 并终止实例时,我需要在实例运行之前对其执行一项任务。所以我设置了一个触发 AWS Lambda 函数的 Termination Lifecycle Hook。这反过来会调用即将终止的实例上的程序,该程序执行必要的任务。 这本身就可以正常工作。

问题

以下时间点之间似乎有很长的时间滞后:

  1. 实例被标记为终止,ALB 停止向其转发请求。
  2. Lambda 函数被调用。

这两点之间似乎需要几分钟。

我需要尽可能缩短这个时间延迟。 (我的原因很复杂,可能不相关,但如果被要求我会详细说明)。理想情况下,它会立即生效。

但是我没有找到可以缩短的设置。有一个名为“心跳超时”的设置,最小值为 30 秒。然而,调用 Lambda 函数所需的时间比这要长得多。所以心跳超时似乎不是瓶颈。

有谁知道导致这种长时间滞后的原因,以及我可以做些什么来缩短它?

【问题讨论】:

  • “扩展冷却时间可帮助您防止 Auto Scaling 组在先前活动的影响可见之前启动或终止其他实例。”我认为您需要减少自动缩放的冷却时间,默认为 300 秒,以降低值。 docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html
  • 我在 ASG 高级配置下的“默认冷却时间”只有 15 秒。这不考虑这么长时间的滞后。

标签: amazon-web-services amazon-ec2 aws-lambda aws-auto-scaling


【解决方案1】:

检查负载平衡器中连接耗尽(注销)延迟的时间量。

生命周期钩子在连接耗尽时间过去后开始。

https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html#lifecycle-hooks-overview

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 2012-09-30
    • 2018-04-17
    • 2015-11-17
    • 2020-05-16
    • 2020-10-05
    相关资源
    最近更新 更多