本文主要介绍生命周期挂钩的概念、工作流程、应用场景以及使用限制等相关内容。
什么是生命周期挂钩
生命周期挂钩是一个管理伸缩组内ECS实例或ECI实例生命周期的工具。弹性伸缩会自动触发扩缩容活动,并触发生命周期挂钩使伸缩活动中的ECS实例或ECI实例处于挂起中的状态(即等待的状态),为您保留一段自定义操作的时间,直至生命周期挂钩超时结束。
生命周期挂钩主要支持设置以下功能:
如果您想了解如何配置生命周期挂钩的相关功能信息,具体操作,请参见创建生命周期挂钩。
功能项 | 说明 |
配置伸缩活动类型 | 发生指定类型的伸缩活动时,生命周期挂钩会被触发并挂起ECS实例或ECI实例。 目前仅支持弹性收缩活动和弹性扩张活动类型,不支持其他伸缩活动类型。例如:
|
设置超时时间 | 挂起的超时时长,为您保留指定时长的自定义操作时间(即生命周期挂钩的超时时间)。 请根据您业务需要设置合理的超时时间,如果操作时间超过超时时间,则系统会执行默认执行策略。您可以删除生命周期挂钩或者调用API CompleteLifecycleAction提前结束伸缩活动的等待状态。 |
配置默认执行策略 | ECS实例或ECI实例挂起状态超时结束的下一步动作,即继续或者拒绝伸缩活动。
说明 仅当生命周期挂钩的通知方式配置为OOS模板时,在生命周期挂钩挂起状态超时结束之前OOS模板执行结束,这时挂起结束后的下一步动作仅由OOS模板的执行结果决定。如果执行成功,伸缩活动继续;如果执行失败,弹性扩张的伸缩活动会回滚,弹性收缩的伸缩活动继续。 |
触发通知 | 生命周期挂钩被触发时,可以选择通过指定方式发出通知或者自动执行更多操作。 例如,使用MNS通知便于您及时进行自定义操作,或者使用OOS模板自动执行任务。 说明 使用MNS服务时,会产生相应的费用。更多信息,请参见MNS定价。 |
工作流程
以下流程图均以ECS实例为例,ECI实例的生命周期挂钩扩缩容可参考此流程操作。
图 2. 缩容流程图
上图中主要概念说明如下表所示:
概念 | 说明 |
生命周期挂钩 | 是一个管理伸缩组内ECS实例或ECI实例生命周期的工具。更多信息,请参见什么是生命周期挂钩。 |
实例已托管给伸缩组 | 是将ECS实例或ECI实例的生命周期托管给伸缩组来管理,弹性伸缩会管理ECS实例或ECI实例的整个生命周期。关于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文档 |
创建生命周期挂钩 | ||
修改生命周期挂钩 | ||
删除生命周期挂钩 |