如何在从 ALB 目标组中删除的 EC2 实例上执行脚本?

How can I execute a script on an EC2 instance that is being removed from an ALB target group?

我们的应用程序在从 ALB 服务中删除时应该 "quiesced"。我知道 http 请求是 "drained" 来自终止实例,然后才被删除,但我们需要应用程序也停止 handling/producing rabbitmq 消息。

我们已经有可以在应用程序文件夹中发送的脚本,如果需要手动完成,操作员可以执行这些脚本 - 它们控制健康检查端点返回的 HTTPCode。如果应用程序实例需要告诉 ALB 停止发送请求,这些将很有用。但是 ALB 是否可以通知应用程序在终止之前停止自身?

我还想知道是否有一种方法可以让应用程序在完成作业或等待请求完成时延迟终止。

从自动缩放的角度来看我特别感兴趣,因为没有办法提前知道哪个实例将被终止,因此操作员没有机会提前 运行 脚本

这正是 EC2 Auto Scaling Lifecycle Hooks 的用途。本质上,它将停止向实例发送流量并通知实例它需要准备终止,然后等待实例说它已准备好终止。