全部产品
Search
文档中心

弹性伸缩:使用生命周期挂钩确保服务可用

更新时间:Jan 18, 2024

伸缩组关联负载均衡后,伸缩组中的ECS实例或ECI实例都会自动加入到负载均衡(CLB、ALB或NLB)的后端服务器组,及时处理来自CLB实例、ALB实例或NLB实例分发的客户端请求。本文建议您使用伸缩组的生命周期挂钩功能,为您保留指定时长的操作时间,确保应用服务的可用性。

基本概念

本文涉及到的基本概念如下:

名称

说明

相关文档

负载均衡

负载均衡是一种对流量进行按需分发的服务,通过将流量分发到不同的后端服务器来扩展应用系统的吞吐能力,可以消除系统中的单点故障,提升应用系统的可用性。

阿里云负载均衡SLB分为传统型负载均衡CLB(Classic Load Balancer)应用型负载均衡ALB(Application Load Balancer)网络型负载均衡NLB(Network Load Balancer)三种类型。

负载均衡SLB产品家族介绍

生命周期挂钩

生命周期挂钩是一个管理伸缩组内ECS实例或ECI实例生命周期的工具。

生命周期挂钩概述

操作步骤

本文以伸缩组关联传统型负载均衡CLB(原SLB)为例,展示不同场景(例如弹性扩张场景和弹性收缩场景)下,伸缩组使用生命周期挂钩功能对应用服务的不同影响,以及如何使用生命周期挂钩确保服务的可用性。

说明

操作前,请确保伸缩组已关联传统型负载均衡CLB(原SLB)实例或负载均衡ALB、NLB服务器组。具体操作,请参见为伸缩组添加和移出负载均衡实例

场景一:弹性扩张

影响对比

弹性扩张时,伸缩组是否使用生命周期挂钩功能对应用服务具有不同的影响,对比如下:

条件

说明

未使用生命周期挂钩功能

弹性扩张时,扩容出的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实例会加入伸缩组,包括加入CLB实例的后端服务器。等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实例会被移出伸缩组,保障了应用服务的可用性。