通过ALB慢启动实现业务优雅上线

应用型负载均衡ALB(Application Load Balancer)支持服务器组开启慢启动功能。开启慢启动后,ALB的业务请求可以缓慢地增加至服务器组内新增的后端服务器,缓解后端服务器在资源准备、缓存预热等场景下面临的突增流量压力。

场景示例

在大流量场景下,部分客户手动或者自动添加后端服务器,健康检查正常后ALB的业务请求会按照配置的后端服务器权重指向后端服务器。后端服务器面临流量突增的压力,可能会导致后端服务器的CPU瞬间打满或内存压力增大,由此产生大量的访问异常。

ALB支持服务器组开启慢启动。开启慢启动后,ALB业务请求可以优雅地逐步引流到新增的后端服务器上,缓解后端服务器突增的流量压力。

本文以下图场景为例。某企业在阿里云华东1(杭州)地域已购买了一个公网ALB实例,该实例已配置HTTP监听并已添加后端服务器ECS01。客户端的请求通过ALB可以访问后端服务器ECS01上的服务。现想在后端再增加一台ECS02实例,通过开启慢启动功能,使ALB的业务请求能够缓慢地增加至新增的ECS02实例,缓解ECS02实例的流量压力。

image

注意事项

  • 仅标准版和WAF增强版的ALB实例支持慢启动,基础版ALB实例不支持。

  • 函数计算类型的服务器组无需配置该参数。

  • 仅当选择调度算法加权轮询算法时,服务器组支持开启慢启动。

  • 当您为服务器组开启慢启动后,服务器组内健康检查正常的后端服务器不会自动进入慢启动模式。

  • 当您为空的服务器组开启慢启动:

    • 首次添加的后端服务器不会进入慢启动模式。

    • 仅当至少有一个健康检查正常的后端服务器未处于慢启动状态时,新添加的后端服务器才会进入慢启动模式。

  • 如果您在慢启动模式下删除后端服务器,该后端服务器将退出慢启动模式。如果您再次添加同一后端,则当服务器组认为该后端服务器健康检查正常时,进入慢启动模式。

  • 如果处于慢启动模式的后端服务器健康检查异常,则该后端服务器退出慢启动模式。当后端服务器健康检查正常时,该服务器将再次进入慢启动模式。

  • 当开启慢启动后,在健康检查开启时,后端服务器健康检查正常后慢启动生效;在健康检查关闭时,慢启动立即生效。

前提条件

  • 您已创建标准版ALB实例并为该ALB实例创建了服务器组。具体操作,请参见创建应用型负载均衡创建和管理服务器组

  • 您已为该ALB实例配置了监听并关联该服务器组。具体操作,请参见添加HTTP监听

  • 您已创建ALB的访问日志。具体操作,请参见创建访问日志

  • 本文操作过程中使用了2台ECS服务器:

    承载业务应用的服务器:ECS01和ECS02实例作为后端服务器,且ECS01和ECS02实例中部署了2个不同的Nginx服务。具体操作,请参见自定义购买实例

    本文ECS01和ECS02部署测试应用示例如下:

    ECS01服务部署命令

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS01." > index.html

    ECS02服务部署命令

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS02." > index.html
  • 您已在服务器组中添加了ECS01实例,且登录客户端可以访问后端服务器ECS01中的服务。具体操作,请参见ALB快速实现IPv4服务的负载均衡ALB快速实现IPv6服务的负载均衡

    单击查看本文ALB实例的配置

    配置

    ALB实例配置

    网络类型

    公网

    DNS域名:alb-1o44v******.cn-hangzhou.alb.aliyuncs.com

    监听协议

    HTTP,监听端口80。

    后端服务器

    • ECS01实例

      • IP地址:10.0.2.50

      • 端口:80

      • 权重:100

    • ECS02实例

      • IP地址:10.0.2.51

      • 端口:80

      • 权重:100

步骤一:开启慢启动

本文前提条件中已创建过服务器组,本步骤仅以编辑服务器组并开启慢启动为例进行配置说明。如果您未创建服务器组,您也可以在创建服务器组时开启慢启动功能。

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏处,选择后端服务器所属的地域。本文选择华东1(杭州)

  3. 在左侧导航栏,选择应用型负载均衡ALB > 服务器组

  4. 服务器组页面,找到目标服务器组,单击服务器组ID。

  5. 详细信息页签的基本信息区域,单击编辑基本信息

  6. 编辑基本信息对话框中,单击高级配置,然后开启慢启动

  7. 设置慢启动持续时间30秒,然后单击保存

    说明

    慢启动持续时间设置为30秒表示ALB的业务请求会在30秒内缓慢地增加到新增的后端服务器。

步骤二:通过wrk工具模拟客户端访问

本文的客户端以Alibaba Cloud Linux 3.2104 64位操作系统为例。不同类型的操作系统安装wrk工具会有差异,具体安装方式请参见您的操作系统手册。

  1. 登录客户端,打开命令行窗口。依次执行以下命令,安装wrk工具。

    yum -y install git make gcc
    git clone https://github.com/wg/wrk.git
    yum install unzip
    cd wrk
    make
  2. 执行以下命令对ALB后端服务器中的服务进行压力测试。

    ./wrk -c 1000 -d 6000s -t 3 -H “Connection:Close” http://<ALB域名>

    其中:

    • -c:connections,每个线程保持的并发连接数。

    • -d:duration,测试的持续时长,s表示单位为秒。

    • -t:threads,指定要使用的线程数,即模拟的并发用户数量。

    • -H:header,添加到请求中的HTTP标头。例如,-H “Connection:Close”表示在每个请求中添加短连接的标头。

步骤三:添加ECS02后端服务器至服务器组

重要

添加后端服务器至服务器组需要在压测设置的测试持续时长结束前添加。

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏,选择ALB实例的所属地域。

  3. 在左侧导航栏,选择应用型负载均衡ALB > 服务器组

  4. 服务器组页面,找到目标服务器组,然后在操作列单击编辑后端服务器

  5. 后端服务器页签,单击添加后端服务器

  6. 添加后端服务器面板,选中后端服务器ECS02,然后单击下一步

  7. 配置端口和权重配置向导中,将ECS02的端口设置为80,权重保持默认值100,然后单击确定

步骤四:结果验证

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏,选择ALB实例的所属地域。

  3. 实例页面,单击目标实例ID。

  4. 单击访问日志页签,然后在基本信息区域单击SLS日志存储右侧的链接,前往日志服务中心并根据下图示例的顺序,查看新增的后端服务器ECS02上的流量。

    根据下图可以观察到在开启慢启动时间内流量逐步地分配到新增的后端服务器ECS02上。

    测试结果-cn (2).png

    序号

    步骤描述

    输入以下命令查询目标ALB发送至新增的后端服务器ECS02上的流量。

    alb-80ri6****** and upstream_addr : "10.0.2.51:80"

    其中各个字段的含义如下:

    • alb-80ri6******:表示ALB的实例ID。

    • upstream_addr:表示后端服务器的IP地址和端口,本文输入ECS02的私网IP地址和端口。

    选择要查看流日志的时间。本文选择1分钟

    单击查询/分析,即可查看新增的后端服务器ECS02上的流量。

相关文档