将生命周期挂钩与 Auto Scaling 组中的温池配合使用 - Amazon A EC2 uto Scaling

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将生命周期挂钩与 Auto Scaling 组中的温池配合使用

暖池中的实例将保持自己独立的生命周期,以帮助您为每次转换创建适当的自定义操作。此生命周期旨在帮助您在实例仍在初始化之时以及将其投入使用之前,调用目标服务(例如,Lambda 函数)中的操作。

注意

您用于添加和管理生命周期挂钩和完整生命周期操作的操作不会发生变化。API只会更改实例生命周期。

有关添加生命周期钩子的更多信息,请参阅 向你的 Auto Scaling 群组添加生命周期挂钩。有关完成生命周期操作的更多信息,请参阅 在 Auto Scaling 组中完成生命周期操作

对于进入暖池的实例,出于以下原因之一,您可能需要生命周期钩子:

  • 你想从中启动需要很长时间才能完成初始化的EC2实例。AMI

  • 你想运行用户数据脚本来引导EC2实例。

对于离开暖池的实例,出于以下原因之一,您可能需要生命周期钩子:

  • 您可以额外花一些时间来准备要使用的EC2实例。例如,您可能有这样的服务,它们必须在实例重新开启时开启,然后您的应用程序才能正常工作。

  • 您希望预填充缓存数据,以使新服务器不会使用空缓存启动。

  • 您希望使用配置管理服务将新实例注册为托管实例。

暖池中实例的生命周期状态转换

作为其生命周期的组成部分,Auto Scaling 实例可在多种状态之间转换。

下图显示了在您使用暖池时 Auto Scaling 状态之间的转换:

暖池中实例的生命周期状态转换。

¹ 此状态因暖池的池状态设置而异。如果将池状态设置为 Running,则此状态为 Warmed:Running。如果将池状态设置为 Hibernated,则此状态为 Warmed:Hibernated

添加生命周期钩子时,请考虑以下事项:

  • autoscaling:EC2_INSTANCE_LAUNCHING 生命周期操作配置生命周期挂钩时,新启动的实例在到达 Warmed:Pending:Wait 状态时会先暂停以执行自定义操作,然后在实例重启并到达 Pending:Wait 状态时再次重复上述操作。

  • EC2_INSTANCE_TERMINATING 生命周期操作配置生命周期挂钩,终止的实例在到达 Terminating:Wait 状态时会暂停以执行自定义操作。但是,如果您指定了实例重用策略来将实例大规模返回到暖池,而不是终止它们,则对于 EC2_INSTANCE_TERMINATING 生命周期操作,返回暖池的实例将在 Warmed:Pending:Wait 状态暂停以执行自定义操作。

  • 如果对应用程序的需求耗尽了温池,Amazon A EC2 uto Scaling 可以直接在 Auto Scaling 组中启动实例,前提是该组尚未达到最大容量。如果实例直接启动到该组中,则这些实例仅在 Pending:Wait 状态中暂停以执行自定义奥做。

  • 要控制实例在转换到下一个状态之前保持等待状态的时间,请将您的自定义操作配置为使用 complete-lifecycle-action 命令。使用生命周期挂钩,实例会一直处于等待状态,直到您通知 Amazon A EC2 uto Scaling 指定的生命周期操作已完成,或者直到超时时间结束(默认为一小时)。

以下总结了横向扩展事件的流程。

横向扩展事件事的流图。

当实例达到等待状态时,Amazon A EC2 uto Scaling 会发送通知。本指南的 EventBridge 部分提供了这些通知的示例。有关更多信息,请参阅 暖池示例事件类型和模式

支持的通知目标

Amazon A EC2 uto Scaling 支持将以下任何一项定义为生命周期通知的通知目标:

  • EventBridge 规则

  • 亚马逊SNS话题

  • 亚马逊SQS队列

重要

请记住,如果您的启动模板或启动配置中有在实例启动时配置实例的用户数据 (cloud-init) 脚本,则无需接收通知即可对正在启动或重启的实例执行自定义操作。

以下各节包含多个链接,它们指向描述如何配置通知目标的文档:

EventBridge 规则:要在 Amazon A EC2 uto Scaling 将实例置于等待状态时运行代码,您可以创建 EventBridge 规则并指定一个 Lambda 函数作为其目标。要根据不同的生命周期通知调用不同的 Lambda 函数,您可以创建多条规则,并将每条规则与特定的事件模式和 Lambda 函数关联起来。有关更多信息,请参阅 为温水池活动创建 EventBridge 规则

Amazon SNS topics:要在实例进入等待状态时收到通知,您可以创建一个亚马逊SNS主题,然后设置亚马逊SNS消息筛选,根据消息属性以不同的方式发送生命周期通知。有关更多信息,请参阅 使用 Amazon SNS 接收通知

Amazon SQS 队列:要设置生命周期通知的传送点,让相关消费者可以领取和处理这些通知,您可以创建一个亚马逊SQS队列和一个队列使用者来处理来自SQS队列的消息。如果您希望队列使用者根据消息属性以不同方式处理生命周期通知,则还必须设置队列使用者以解析消息,然后在特定属性与所需值匹配时对消息执行操作。有关更多信息,请参阅 使用 Amazon SQS 接收通知