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

什么是生命周期挂钩

生命周期挂钩可以暂停由弹性伸缩自动触发的伸缩活动,为您保留一段自定义操作的时间。生命周期挂钩支持设置以下信息:

  • 生效的伸缩活动类型。比如,选择弹性扩张时,生命周期挂钩只挂起弹性扩张的ECS实例。
  • 挂起的时长,为您保留指定时长的自定义操作时间。您可以删除生命周期挂钩或者调用API CompleteLifecycleAction提前结束伸缩活动的等待状态。
  • 通知方式。比如,使用MNS通知便于您及时进行自定义操作,或者使用OOS模板自动执行任务。
    说明 使用MNS服务时,会产生相应的费用。具体信息,请参见 MNS定价
  • 挂起超时的下一步动作,即继续或者拒绝伸缩活动。
    说明 仅当生命周期挂钩的 通知方式配置为OOS模板时,挂起超时的下一步动作不受预设的参数影响,而是由OOS的执行结果决定的。如果执行成功,伸缩活动继续;如果执行失败,弹性扩张的伸缩活动会回滚,弹性收缩的伸缩活动继续。

工作流程

图 1. 扩容流程图
流程图
图 2. 缩容流程图
缩容流程图

应用场景

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

  • 弹性扩张的ECS实例不适合立即为客户端提供服务。比如,ECS实例需要加入云数据库,需要绑定辅助弹性网卡,或者ECS实例中为客户端提供服务的应用需要一定的启动时间。
  • 弹性收缩的ECS实例不适合立即被移出。比如,ECS实例需要备份数据、拷贝日志,或者ECS实例中可能存在未处理完成的客户端请求。

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

使用限制

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