- 最新动态
- 功能总览
- 产品介绍
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
-
通用类
- 弹性伸缩有什么限制?
- 弹性伸缩一定要搭配弹性负载均衡、云监控才能使用吗?
- 弹性伸缩是否收取费用?
- 弹性伸缩是否会因监控指标突变导致误伸缩?
- 我能创建和使用多少个伸缩策略和配置?
- 弹性伸缩是否能够自动升降云服务器的CPU、内存和带宽?
- 弹性伸缩的配额是什么?
- 同账户下不同用户操作弹性伸缩资源时,为什么提示密钥对不存在而拦截操作?
- 伸缩带宽对弹性公网IP带宽和共享带宽有什么要求?
- 弹性伸缩目前支持配置的服务器类型有哪些?可以配置云耀云服务器(HECS)吗?
- 组内单台ECS上的程序版本会随时更新,伸缩组能否自动创建并切换为最新镜像?
- 咨询AS扩容实例时能否创建包周期实例?
- 弹性伸缩能根据某个场景将带宽调高吗?
- 伸缩组类
- 伸缩策略类
-
实例类
- 如何保证手动移入的ECS实例不被移出伸缩组?
- 多规格伸缩配置创建实例的选择的规格顺序是什么?
- 当实例被移出伸缩组并删除后,实例中的数据会保留吗?
- 我能添加已经创建的包年包月ECS实例吗?
- 按照伸缩策略增加的云服务器,当我不用时可以自动删除吗?
- 什么是期望实例数?
- 如何删除通过弹性伸缩创建的云服务器?
- 包年包月的ECS实例出现异常后会不会被伸缩组删除?
- 如何处理伸缩组中状态是“异常”的实例?
- 当伸缩组中实例无法通过负载均衡健康检查而频繁地被删除再重新创建时应该怎么办?
- 如何阻止伸缩组内的云服务器被自动移除?
- 为什么在伸缩组内移除并删除实例后,ECS页面还能看到实例?
- 手动将实例移入伸缩组时,需要该实例已绑定弹性公网IP吗?
- 弹性伸缩(AS)伸缩出来的新实例必须是伸缩组已经关联的伸缩配置里的镜像,而不能复制现有的实例状态吗?
- 为ECS自动分配的EIP,是自动新购,还是从未绑定的EIP中绑定?
- 其他
-
通用类
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
生命周期挂钩
生命周期挂钩功能提供灵活控制伸缩组内ECS实例创建和移出过程的能力,以便用户灵活管理ECS实例的生命周期。伸缩组中未添加生命周期挂钩时,实例生命周期状态如图1所示。
添加生命周期挂钩后,实例生命周期状态如图2所示。
当伸缩组中发生伸缩活动,触发生命周期挂钩时,伸缩活动将被挂起,正在进行伸缩活动的实例会被置为等待状态,如图2中②和⑥。您可在实例保持等待状态时进行一些自定义操作。例如,在新实例移入伸缩组时,您可以在其上安装或配置软件。有以下两种方式可以结束被挂起的伸缩活动:
- 实例保持等待的时间大于超时时间。
例如当您参考表1设置超时时间为3600秒时,如果实例被置为等待状态的时间超过3600秒后,会自动结束被挂起的伸缩活动。
- 手动执行回调操作,主动结束实例等待状态。详细操作步骤请参见进行回调操作。
使用场景
- 伸缩组中新移入的实例,需要先进行初始化(安装或配置软件等)并检测服务正常运行后,再绑定到负载均衡监听器对外提供服务。
- 伸缩组中的实例被释放之前,需要先从负载均衡监听器上解绑以确保不再接收新的请求,待检测已经接收到的请求处理完毕后进行释放。
- 伸缩组中的实例被释放之前,需要执行数据备份操作或者下载日志文件。
- 其它需要执行自定义操作的场景。
工作原理
将生命周期挂钩添加到伸缩组后,生命周期挂钩将按照如下方式工作:
- 实例移入伸缩组
实例移入伸缩组并且初始化完成之后,自动触发挂钩类型为“实例启动”的生命周期挂钩,实例进入“加入挂起”状态,即实例被挂钩挂起。若您配置了一个通知目标,则系统会向该目标发送消息。收到消息后,您可以执行自定义操作,例如在实例上安装软件。自定义操作执行完成后,您可以手动执行回调操作,结束实例等待状态,详细操作步骤请参见进行回调操作。或等待超时时间结束,系统自动结束实例等待状态。实例等待状态结束之后的默认回调操作有两种执行方案,“继续”或“终止”。这两种执行方案解释如下:
- 继续:处于等待状态的实例将加入伸缩组。
- 终止:处于等待状态的实例将被直接删除并重新创建新实例。
若配置了多个“实例启动”类型的生命周期挂钩,实例移入伸缩组会触发多个生命周期挂钩,若有一个挂钩默认回调操作为“终止”时,将会直接删除实例并重新创建新实例。若所有挂钩默认回调操作都为“继续”时,则会等待最后一个挂钩挂起结束后,将实例加入伸缩组。
使用限制
- 添加挂钩、删除挂钩、修改挂钩等操作都是在该伸缩组未进行伸缩活动时可操作。
- 一个伸缩组内最多可添加5个生命周期挂钩。
添加挂钩
- 登录管理控制台。
- 选择“计算 > 弹性伸缩 > 伸缩实例 > 弹性伸缩组”。
- 单击需要添加生命周期挂钩的弹性伸缩组名称,进入伸缩组的“基本信息”界面,选择“生命周期挂钩”页签,单击“添加生命周期挂钩”。
- 在“添加生命周期挂钩”界面,根据界面提示进行参数配置,如表1所示。
表1 参数配置 参数名称
参数说明
取值样例
挂钩名称
生命周期挂钩名称(1~32个字符),只能由字母、数字、下划线、中划线组成。
we12_w
挂钩类型
挂钩类型包括“实例启动”和“实例终止”,它们分别在实例加入伸缩组和实例移出伸缩组时将实例置于“加入挂起”或者“移出挂起”状态。
实例启动
默认回调操作
默认回调操作是指当实例为等待状态且等待状态的时间已经达到超时时间后的系统默认操作。
在当前实例正在加入伸缩组时,默认回调操作的含义为:- 继续:当有一个挂钩时,表示继续将实例加入伸缩组;当有多个挂钩时,表示继续等待其他挂钩的状态,只有所有挂钩状态都为“继续”时,才会继续将实例加入伸缩组。
- 终止:无论有几个挂钩,只要有一个挂钩状态为“终止”,将会直接删除实例并重新创建新实例。
在当前实例正在移出伸缩组时,默认回调操作的含义为:- 继续:当只有一个挂钩时,“继续”表示直接将实例移出伸缩组;当有多个挂钩时,表示继续等待其他挂钩的状态,只有所有挂钩状态都为“继续”时,才会继续将实例移出伸缩组。
- 终止:无论有几个挂钩,只要有一个挂钩状态为“终止”,会直接将实例移出伸缩组。
继续
超时时间
默认情况下,实例保持等待状态的时间。取值范围为:60秒~86400秒。
您可以延长超时时间,也可以在超时时间结束前进行“继续”或“终止”操作。关于回调操作更多信息请参见进行回调操作。
3600秒
通知主题
为生命周期挂钩定义一个通知目标(请参见《消息通知服务用户指南》创建主题),当实例被挂钩挂起时向该通知目标发送消息。该消息包含实例的基本信息、用户自定义通知消息,以及可用于控制生命周期操作的令牌信息。消息样例如下:
{ "service": "AutoScaling", "tenant_id": "93075aa73f6a4fc0a3209490cc57181a", "lifecycle_hook_type": "INSTANCE_LAUNCHING", "lifecycle_hook_name": "test02", "lifecycle_action_key": "4c76c562-9688-45c6-b685-7fd732df310a", "notification_metadata": "xxxxxxxxxxxxx", "scaling_instance": { "instance_id": "89b421e4-5fa6-4733-bf40-6b07a8657256", "instance_name": "as-config-kxeg_RM6OCREY", "instance_ip": "192.168.0.202" }, "scaling_group": { "scaling_group_id": "fe376277-50a6-4e36-bdb0-685da85f1a82", "scaling_group_name": "as-group-wyz01", "scaling_config_id": "16ca8027-b6cc-45fc-af2d-5a79996f685d", "scaling_config_name": "as-config-kxeg" } }
-
自定义通知消息
当配置了通知目标时,可向其发送用户自定义的通知内容。
-
- 单击“确定”。
进行回调操作
- 在伸缩实例页面,单击需要进行回调操作的伸缩组名称,进入弹性伸缩组的“基本信息”界面。
- 选择“伸缩实例”页签。
- 单击被挂钩挂起实例“生命周期状态”列下的“加入挂起” 或“移出挂起”,如图3所示。
说明:
只有被生命周期挂钩挂起的实例,可执行回调操作。
- 在弹出的“伸缩实例挂起信息”界面,可查看某个实例的挂起信息及当前伸缩组中所有的挂钩,并且可对每个挂钩执行回调操作。如图4所示。
回调操作包括:
- 继续
- 终止
- 延长超时时间
如果您在超时时间结束前已完成自定义操作,选择“继续”或“终止”完成生命周期操作。“继续”或“终止”操作含义请参见表1。如果您需要更多时间完成自定义操作,选择“延长超时间”延长超时时间,实例保持等待状态的时间将增加3600秒。
修改挂钩
在“生命周期挂钩”页签,选择要修改的挂钩“操作”列下的“修改”,修改时界面的参数配置请参考表1,您可以修改除挂钩名称外的其余参数,例如挂钩类型、默认回调操作、超时时间等。
删除挂钩
在“生命周期挂钩”页签,选择要删除的挂钩“操作”列下的“删除”。