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

前提条件

伸缩组已关联传统型负载均衡CLB(原SLB)实例或应用型负载均衡ALB实服务器组。更多信息,请参见为伸缩组添加和移出负载均衡实例

背景信息

本文以伸缩组关联传统型负载均衡CLB(原SLB)为例,介绍使用伸缩组的生命周期挂钩功能确保服务的可用性。伸缩组关联应用型负载均衡ALB时,通过使用生命周期挂钩确保服务可用,请参考本文内容。

本文涉及到的基本概念如下:
名称 说明 相关链接
负载均衡 负载均衡是一种对流量进行按需分发的服务,通过将流量分发到不同的后端服务器来扩展应用系统的吞吐能力,可以消除系统中的单点故障,提升应用系统的可用性。 负载均衡SLB产品家族介绍
负载均衡主要包括传统型负载均衡CLB(Classic Load Balancer)和应用型负载均衡ALB(Application Load Balancer)两种类型,如下所示:
  • CLB(原SLB):支持TCP、UDP、HTTP和HTTPS协议,具备强大的四层处理能力,以及基础的七层处理能力。通过设置虚拟服务地址,将添加的同一地域的多个实例虚拟成一个高性能、高可用的应用服务池。
  • ALB:专门面向七层,提供超强的业务处理性能,同时提供基于内容的高级路由特性。
生命周期挂钩 生命周期挂钩是一个管理伸缩组内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实例会被移出伸缩组,保障了应用服务的可用性。