生命周期挂钩可以暂停由弹性伸缩自动触发的伸缩活动,使ECS实例或ECI实例处于挂起中的状态(即等待的状态),为您保留一段自定义操作的时间以满足特定的部署需求和业务场景,例如预装软件等。直至生命周期挂钩超时结束后,弹性伸缩的伸缩活动才能继续进行。本文为您介绍创建、修改、删除、启动或暂停生命周期挂钩的方法。
前提条件
已创建伸缩组。具体操作,请参见配置伸缩组或CreateScalingGroup。
(可选)如果需要生命周期挂钩被触发时发出MNS通知,您需要提前创建MNS主题或者MNS队列。具体操作,请参见:
创建生命周期挂钩
生命周期挂钩是一个管理伸缩组内ECS实例或ECI实例生命周期的工具。更多信息,请参见生命周期挂钩概述。每个伸缩组内最多可以创建10个生命周期挂钩,本文以创建1个生命周期挂钩为例。
- 登录弹性伸缩控制台。
- 在左侧导航栏中,单击伸缩组管理。
- 在顶部菜单栏处,选择地域。
- 找到待操作的伸缩组,选择任一种方式打开伸缩组详情页面。
- 在伸缩组名称/ID列,单击伸缩组ID。
- 在操作列,单击查看详情。
- 在页面上方,单击生命周期挂钩页签。
在页面左上角,单击创建生命周期挂钩。
在创建生命周期挂钩页面,完成生命周期挂钩相关配置。
生命周期挂钩相关参数说明如下表所示:
参数
描述
名称
生命周期挂钩名称一旦确定就无法修改。长度为2~64个字符,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)和短划线(-)。
适用的伸缩活动类型
发生指定类型的伸缩活动时,生命周期挂钩会被触发并挂起ECS实例或ECI实例。支持的选项如下:
弹性收缩活动
弹性扩张活动
超时时间
最小为30秒,最大为21600秒(6小时),必须为整数。默认值:1800秒。
说明请根据您业务生命周期挂钩的处理时间,设置合理的超时时间。如果处理时间超过超时时间,则系统会执行默认执行策略。
默认执行策略
单个生命周期挂钩场景
ECS实例或者ECI实例挂起状态结束后的下一步执行动作。支持的选项如下:
继续:扩容时,生命周期挂钩会继续向伸缩组加入新扩容的ECS实例或ECI实例;缩容时,生命周期挂钩会继续移出伸缩组中的ECS实例或ECI实例并将其释放掉。
拒绝:扩容时,生命周期挂钩会直接释放新扩容出的ECS实例或ECI实例,该实例不会加入伸缩组;缩容时,生命周期挂钩会继续移出伸缩组中的ECS实例或ECI实例并将其释放掉。
回滚:扩容时,生命周期挂钩会直接释放新扩容出来的ECS实例或ECI实例,该实例不会加入伸缩组;缩容时,生命周期挂钩会将移出的ECS实例或ECI实例重新加入该伸缩组。
多个生命周期挂钩场景
伸缩组中多个生命周期挂钩同时触发的场景下,根据生命周期挂钩设置的适用的伸缩活动类型不同,伸缩活动最终的执行结果也有所不同。
缩容活动:如果某个采用继续策略的生命周期挂钩触发的等待状态结束,会继续等待其余生命周期挂钩执行结束, 其中只要有一个生命周期挂钩执行结束且执行策略为拒绝或回滚时,会主动提前结束等待并将剩余未完成的挂钩的执行策略设置为默认执行策略,此时所有完成的生命周期挂钩中,只有存在执行策略为“回滚”时,会停止缩容,进行回滚,执行策略为“拒绝”时,仍会继续缩容。
扩容活动:只有所有生命周期挂钩都执行结束并且执行策略都为继续才会继续扩容,只要有一个生命周期挂钩执行结束且执行策略为拒绝和回滚时,会主动提前结束等待剩余未完成的挂钩,停止扩容进行回滚(扩容时,“回滚”与“拒绝”效果相同)。
(可选)通知方式为OOS模板场景
仅当生命周期挂钩的通知方式配置为OOS模板时,在生命周期挂钩挂起状态超时结束之前OOS模板执行结束,这时挂起状态结束后的下一步执行动作取决于OOS模板的执行结果:
成功:针对弹性扩张活动,继续向伸缩组加入该ECS实例或ECI实例;针对弹性收缩活动,继续停止该ECS实例或ECI实例在伸缩组中提供计算能力。
失败:针对弹性扩张活动,直接释放ECS实例或ECI实例;针对弹性收缩活动,继续停止该ECS实例或ECI实例在伸缩组中提供计算能力。
停止ECS实例或ECI实例在伸缩组中提供计算能力,具体分以下几种情况:
如果实例是自动创建或者手动创建并托管给伸缩组的ECS实例或ECI实例,且伸缩组的实例回收模式配置为释放模式,则移除ECS实例或者ECI实例。
如果实例是自动创建或者手动创建并托管给伸缩组的ECS实例或ECI实例,且伸缩组的实例回收模式配置为停机回收模式,则在伸缩组内停用ECS实例或ECI实例,保留ECS实例或ECI实例的部分资源。具体操作,请参见配置伸缩组。
如果实例是手动创建并未托管给伸缩组的ECS实例或ECI实例,则仅从伸缩组中移出ECS实例或ECI实例,ECS实例或ECI实例仍可正常运行。
挂钩期间执行的动作
生命周期挂钩被触发时,可以选择通过指定的方式发出通知或者自动执行更多操作。支持的选项如下:
不通知:默认选项。
MNS主题:您需要选择MNS主题。如果您填写了通知标识,弹性伸缩每次推送消息到通知对象时,会同时发送您预先指定的通知标识,便于管理和标记不同类别的通知信息。
MNS队列:您需要选择MNS队列。如果您填写了通知标识,弹性伸缩每次推送消息到通知对象时,会同时发送您预先指定的通知标识,便于管理和标记不同类别的通知信息。
OOS模板:选择执行的模板类型,并为模板设置参数。
模板类型包括公共模板和我的模板。弹性伸缩会使用您选择的模板,对ECS实例进行自定义操作。
在设置参数时,请按照实际使用情况设置参数。如果您需要设置OOS扮演的RAM角色,请注意以下信息:
RAM角色必须已受信OOS服务,即RAM角色的可信实体是阿里云服务,受信服务为系统运维管理。具体操作,请参见创建OOS扮演的角色。
RAM角色必须拥有操作资源(ECS、ECI、弹性伸缩等)的权限。权限的策略可通过单击查看授权策略获取。为RAM角色添加授权策略的具体操作,请参见为OOS角色添加授权策略。
说明关于更多配置模板参数的案例,请参见生命周期挂钩和OOS模板最佳实践概述。
事件总线:选择事件总线后,当伸缩组发生扩缩容活动时,系统会产生不同类型的生命周期通知,您可以根据对应通知灵活识别和处理相应事件。
单击确认。
创建完成后,您可以在伸缩组的生命周期挂钩页签下查看已创建的生命周期挂钩。
如果弹性伸缩自动触发了适用于生命周期挂钩的伸缩活动时,对应的ECS实例或ECI实例的状态会变为挂起中,以ECS实例为例展示被挂起中实例的运行状态,如下图所示:
修改或删除生命周期挂钩
成功创建生命周期挂钩后,您可以根据不同的业务需求,对该生命周期挂钩进行修改或删除操作。
- 登录弹性伸缩控制台。
- 在左侧导航栏中,单击伸缩组管理。
- 在顶部菜单栏处,选择地域。
在伸缩组管理页面,找到待操作的伸缩组,单击对应操作列的查看详情。
在伸缩组详情页面上方,单击生命周期挂钩页签。
修改或删除生命周期挂钩。
修改生命周期挂钩
如果生命周期挂钩的属性不再满足当前业务需求,您可以修改一项或者多项属性,而无需重新创建生命周期挂钩。
找到待操作的生命周期挂钩,在操作列下,单击修改。
修改生命周期挂钩的配置,然后单击确认。
不支持修改生命周期挂钩的名称,其他生命周期挂钩配置项的参数说明,请参见步骤7。
删除生命周期挂钩
如果您不再需要一个生命周期挂钩,可以将其删除,空出挂钩配额。例如伸缩活动被挂起时,您可以按照本步骤删除生命周期挂钩。
重要如果生命周期挂钩已经挂起一个ECS实例或ECI实例时,在删除该生命周期挂钩后,该ECS实例或ECI实例的等待状态会提前结束。
找到待操作的单个或多个生命周期挂钩,删除生命周期挂钩。
单项删除:在单个生命周期挂钩对应的操作列下,单击删除。
批量删除:选中多个待操作的生命周期挂钩,在生命周期挂钩列表底部,单击删除。
在弹出的对话框中,单击确定。
暂停或启用生命周期挂钩
创建生命周期挂钩后默认为生效状态。根据实际业务场景需要,您可以暂停或者重新启用伸缩组的生命周期挂钩功能。
- 登录弹性伸缩控制台。
- 在左侧导航栏中,单击伸缩组管理。
- 在顶部菜单栏处,选择地域。
在伸缩组管理页面,找到待操作的伸缩组,单击对应操作列的查看详情。
在伸缩组详情页面上方,单击生命周期挂钩页签。
暂停或启用生命周期挂钩。
暂停生命周期挂钩
如果您的业务暂时不需要生命周期挂钩功能,您可以暂停正在使用的生命周期挂钩。
找到待操作的生命周期挂钩,在对应操作列下,单击暂停。
在弹出的对话框中,单击确定。
启用生命周期挂钩
如果您需要使用伸缩组的生命周期挂钩功能,您可以重新启用已暂停的生命周期挂钩。
找到待操作的生命周期挂钩,在对应操作列下,单击启用。
在弹出的对话框中,单击确定。
相关文档
通过API方式创建一个或多个生命周期挂钩。更多信息,请参见CreateLifecycleHook。
通过API方式修改一个生命周期挂钩。更多信息,请参见ModifyLifecycleHook。
通过API方式删除一个生命周期挂钩。更多信息,请参见DeleteLifecycleHook。
通过API方式提前结束伸缩活动的等待状态。更多信息,请参见CompleteLifecycleAction。