生命周期挂钩概述

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

什么是生命周期挂钩

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

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

说明

如果您想了解如何配置生命周期挂钩的相关功能信息,具体操作,请参见创建生命周期挂钩

功能项

说明

配置伸缩活动类型

发生指定类型的伸缩活动时,生命周期挂钩会被触发并挂起ECS实例或ECI实例。

目前仅支持弹性收缩活动和弹性扩张活动类型,不支持其他伸缩活动类型。例如:

  • 选择弹性扩张活动时,生命周期挂钩只挂起弹性扩张的ECS实例或ECI实例。

  • 选择弹性收缩活动时,生命周期挂钩只挂起弹性收缩的ECS实例或ECI实例。

设置超时时间

挂起的超时时长,为您保留指定时长的自定义操作时间(即生命周期挂钩的超时时间)。

请根据您业务需要设置合理的超时时间,如果操作时间超过超时时间,则系统会执行默认执行策略。您可以删除生命周期挂钩或者调用API CompleteLifecycleAction提前结束伸缩活动的等待状态。

配置默认执行策略

ECS实例或ECI实例挂起状态超时结束的下一步动作,即继续或者拒绝伸缩活动。

  • 如果默认执行策略继续,针对弹性扩张活动,继续向伸缩组加入该ECS实例或ECI实例;针对弹性收缩活动,继续停止该ECS实例或ECI实例在伸缩组中提供计算能力。

  • 如果默认执行策略拒绝,针对弹性扩张活动,直接释放该ECS实例或ECI实例;针对弹性收缩活动,继续停止该ECS实例或ECI实例在伸缩组中提供计算能力。

说明

仅当生命周期挂钩的通知方式配置为OOS模板时,在生命周期挂钩挂起状态超时结束之前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