伸缩组关联负载均衡后,伸缩组中的ECS实例或ECI实例都会自动加入到传统型负载均衡CLB(原SLB)实例的后端服务器组,或者自动加入到应用型负载均衡ALB创建的服务器组中的后端服务器组,处理来自CLB实例或ALB实例分发的客户端请求。本文建议您使用生命周期挂钩,为您保留指定时长的操作时间,确保服务可用。
前提条件
伸缩组已关联传统型负载均衡CLB(原SLB)实例或应用型负载均衡ALB实服务器组。更多信息,请参见为伸缩组添加和移出负载均衡实例。
背景信息
本文以伸缩组关联传统型负载均衡CLB(原SLB)为例,介绍使用伸缩组的生命周期挂钩功能确保服务的可用性。伸缩组关联应用型负载均衡ALB时,通过使用生命周期挂钩确保服务可用,请参考本文内容。
名称 | 说明 | 相关链接 |
---|---|---|
负载均衡 | 负载均衡是一种对流量进行按需分发的服务,通过将流量分发到不同的后端服务器来扩展应用系统的吞吐能力,可以消除系统中的单点故障,提升应用系统的可用性。 | 负载均衡SLB产品家族介绍 |
负载均衡主要包括传统型负载均衡CLB(Classic Load Balancer)和应用型负载均衡ALB(Application Load Balancer)两种类型,如下所示:
|
||
生命周期挂钩 | 生命周期挂钩是一个管理伸缩组内ECS实例或ECI实例生命周期的工具。 | 生命周期挂钩概述 |
场景一:弹性扩张
弹性扩张时,伸缩组是否使用生命周期挂钩功能对应用服务具有不同的影响,对比如下:
条件 | 说明 |
---|---|
未使用生命周期挂钩功能 | 弹性扩张时,扩容出的ECS实例或ECI实例会直接加入伸缩组,包括加入关联的负载均衡CLB(原SLB)的后端服务器组,并开始对外提供服务。然而,在ECS实例或ECI实例中,为客户端提供服务的应用需要一定的启动时间,如果应用在接收客户端请求时尚未启动,则无法对外提供服务。 |
使用生命周期挂钩功能 | 弹性扩张时,在ECS实例或ECI实例加入负载均衡CLB(原SLB)实例的后端服务器组前,生命周期挂钩将扩容的ECS实例或ECI实例挂起。等ECS实例或ECI实例中的应用启动完成,挂钩的超时时间结束后,ECS实例或ECI实例加入到负载均衡CLB(原SLB)实例的后端服务器组,并对外提供服务。 |
- 适用的伸缩活动类型选择为弹性扩张活动。
- 超时时间建议配置为ECS实例或ECI实例中应用能正常启动的时间。单位为秒,取值必须是整数,且30≤超时时间≤21600。
说明 如果您想提前结束超时时间,您可以调用API CompleteLifecycleAction。更多信息,请参见CompleteLifecycleAction。
- 默认执行策略选择为继续。
生命周期挂钩创建完成后,扩容的ECS实例或ECI实例会先进入加入挂起中状态并等待超时时间结束。在挂起期间,ECS实例或ECI实例提供服务的应用完成启动。挂起状态结束后,ECS实例或ECI实例会加入伸缩组,包括加入SLB实例的后端服务器。等ECS实例或ECI实例的状态为服务中后,ECS实例或ECI实例对外提供服务,保障了应用服务的可用性。
场景二:弹性收缩
弹性收缩时,伸缩组是否使用生命周期挂钩功能对应用服务具有不同的影响,对比如下:
条件 | 说明 |
---|---|
未使用生命周期挂钩功能 | 弹性收缩时,缩容的ECS实例或ECI实例会直接被移出伸缩组,包括移出关联的负载均衡CLB(原SLB)的后端服务器组,对外停止提供服务。然而,在缩容的ECS实例或ECI实例中,可能存在为处理完成的客户端请求,会导致客户端访问异常。 |
使用生命周期挂钩功能 | 弹性收缩时,在ECS实例或ECI实例移出关联的负载均衡CLB(原SLB)实例的后端服务器组后,生命周期挂钩会先将该ECS实例或ECI实例挂起。等ECS实例或ECI实例处理完毕已接收的客户端请求,挂钩的超时时间结束后,再将该ECS实例或ECI实例移出伸缩组,保障了客户端的正常访问。 |
弹性收缩时,建议您为已有的伸缩组创建生命周期挂钩。具体操作,请参见配置生命周期挂钩。创建生命周期挂钩时,请注意以下配置项:
- 适用的伸缩活动类型选择为弹性收缩活动。
- 超时时间建议配置为所有请求的最长处理时间。单位为秒,取值必须是整数,且30≤超时时间≤21600。
说明 如果您想提前结束超时时间,您可以调用API CompleteLifecycleAction。更多信息,请参见CompleteLifecycleAction。
生命周期挂钩创建完成后,缩容的ECS实例或ECI实例会先从关联的负载均衡CLB(原SLB)实例的后端服务器移出,然后进入移出挂起中状态并等待超时时间结束。在挂起期间,ECS实例或ECI实例处理完成已接收的请求,且不再接收请求。挂起状态结束后,ECS实例或ECI实例会被移出伸缩组,保障了应用服务的可用性。