本文主要介绍生命周期挂钩的概念、工作流程、应用场景以及使用限制等相关内容。

什么是生命周期挂钩

生命周期挂钩是一个管理伸缩组内ECS实例或ECI实例生命周期的工具。弹性伸缩会自动触发扩缩容活动,并触发生命周期挂钩使伸缩活动中的ECS实例或ECI实例处于挂起中的状态(即等待的状态),为您保留一段自定义操作的时间,直至生命周期挂钩超时结束。

生命周期挂钩主要支持以下功能:

说明 如果您想了解如何配置生命周期挂钩的相关功能信息,具体操作,请参见创建生命周期挂钩
功能项 说明
配置伸缩活动类型 发生指定类型的伸缩活动时,生命周期挂钩会被触发并挂起ECS实例或ECI实例。

目前仅支持弹性收缩活动和弹性扩张活动两种类型,不支持其他伸缩活动类型。例如,选择弹性扩张活动时,生命周期挂钩只挂起弹性扩张的ECS实例或ECI实例;选择弹性收缩活动时,生命周期挂钩只挂起弹性收缩的ECS实例或ECI实例。

设置超时时间 挂起的超时时长,为您保留指定时长的自定义操作时间(即生命周期挂钩的超时时间)。请根据您业务需要设置合理的超时时间,如果操作时间超过超时时间,则系统会执行默认执行策略。您可以删除生命周期挂钩或者调用API CompleteLifecycleAction提前结束伸缩活动的等待状态。
配置默认执行策略 ECS实例或ECI实例挂起状态超时结束的下一步动作,即继续或者拒绝伸缩活动。
  • 如果默认执行策略继续,针对弹性扩张活动,继续向伸缩组加入该ECS实例或ECI实例;针对弹性收缩活动,继续停止该ECS实例或ECI实例在伸缩组中提供计算能力。
  • 如果默认执行策略拒绝,针对弹性扩张活动,直接释放该ECS实例或ECI实例;针对弹性收缩活动,继续停止该ECS实例或ECI实例在伸缩组中提供计算能力。
说明 仅当生命周期挂钩的通知方式配置为OOS模板时,挂起超时的下一步动作不受预设的参数影响,而是由OOS的执行结果决定的。如果执行成功,伸缩活动继续;如果执行失败,弹性扩张的伸缩活动会回滚,弹性收缩的伸缩活动继续。
触发通知 生命周期挂钩被触发时,可以选择通过指定的方式发出通知或者自动执行更多操作。
例如,使用MNS通知便于您及时进行自定义操作,或者使用OOS模板自动执行任务。
说明 使用MNS服务时,会产生相应的费用。更多信息,请参见MNS定价

工作流程

以下流程图均以ECS实例为例,ECI实例的生命周期挂钩扩缩容可参考此流程操作。

图 1. 扩容流程图
流程图
图 2. 缩容流程图
缩容过程-zh
上图中主要概念说明如下表所示:
概念 说明
生命周期挂钩 是一个管理伸缩组内ECS实例或ECI实例生命周期的工具。更多信息,请参见什么是生命周期挂钩
实例已托管给伸缩组 是将ECS实例或ECI实例的生命周期托管给伸缩组来管理,弹性伸缩会管理ECS实例或ECI实例的整个生命周期。关于ECS实例或ECI实例的生命周期的更多信息,请参见实例生命周期。不同方式创建的ECS实例或ECI实例托管给伸缩组后体现如下所示:
  • 自动创建的ECS实例或ECI实例已托管给伸缩组后,在弹性扩张时,弹性伸缩负责创建ECS实例或ECI实例;在弹性收缩时,弹性伸缩负责停止和释放ECS实例。
  • 手动创建的ECS实例或ECI实例已添加并托管给伸缩组后,在弹性收缩时,弹性伸缩负责停止和释放ECS实例或ECI实例。
实例未托管给伸缩组 手动创建的ECS实例或ECI实例已添加至伸缩组,但并未将该ECS实例或ECI实例的整个生命周期托管给伸缩组来管理。在弹性收缩时弹性伸缩负责将ECS实例或ECI实例移出伸缩组,但不会释放ECS实例或ECI实例。
说明 支持将包年包月的ECS实例添加至伸缩组,但不支持托管包年包月的ECS实例。

应用场景

当ECS实例或者ECI实例存在以下情况时,适合使用生命周期挂钩,在挂起ECS实例或者ECI期间先完成自定义操作,再对外提供服务。

  • 弹性扩张的ECS实例或ECI实例不适合立即为客户端提供服务。

    例如,ECS实例需要加入云数据库,需要绑定辅助弹性网卡,或者ECS实例中为客户端提供服务的应用需要一定的启动时间。

  • 弹性收缩的ECS实例或ECI不适合立即被移出。

    例如,ECS实例或ECI实例需要备份数据、拷贝日志,或者ECS实例或ECI实例中可能存在未处理完成的客户端请求。

更多信息,请参见生命周期挂钩和OOS模板最佳实践概述使用生命周期挂钩确保服务可用

使用限制

  • 一个伸缩组内最多可以创建10个生命周期挂钩。
  • 在执行伸缩活动时,伸缩组能否执行其它伸缩活动和是否设置了期望实例数有关:
    • 如果伸缩组未设置组内期望实例数,伸缩组拒绝执行其他的伸缩活动。
    • 如果伸缩组设置了组内期望实例数,仅当前伸缩活动为并行伸缩活动时,伸缩组可以执行其他伸缩活动。如何判断并行伸缩活动,请参见基本概念

如何配置生命周期挂钩

配置生命周期挂钩的相关文档如下表所示:

控制台文档 操作项 API文档
配置生命周期挂钩 创建生命周期挂钩 CreateLifecycleHook
修改生命周期挂钩 ModifyLifecycleHook
删除生命周期挂钩 DeleteLifecycleHook