基于ALB的单机QPS监控指标实现自动扩缩容ECI实例

弹性伸缩支持使用ALB服务器组的单机QPS监控指标作为系统报警任务的触发条件,从而实现自动扩缩容ECS或ECI实例。本文将具体为您介绍自动扩缩容ECI实例的操作。

概念介绍

  • 应用型负载均衡ALB(Application Load Balancer):是阿里云推出的专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务,具备超强弹性及大规模应用层流量处理能力。更多信息,请参见什么是应用型负载均衡ALB

  • 每秒查询数QPS(Query Per Second):是七层监听特有的概念,指负载均衡ALB每秒可以完成的HTTP(S)的查询(请求)的总数量。单机QPS指单个服务器的性能指标,表示负载均衡ALB每秒完成的客户请求总数量/后端服务器组的ECS或ECI总数量。

  • 性能测试PTS(Performance Testing Service):是一款简单易用,具备强大的分布式压测能力的SaaS压测平台。更多信息,请参见什么是性能测试PTS

应用场景

如果您的业务依托于ALB来统一承接并分配客户的请求流量(以每秒查询量QPS衡量),这些请求随后被导向至后端服务器集群(如ECS或ECI实例)进行处理。当发生请求QPS激增,为了维持服务的流畅与稳定,系统需敏捷扩容后端服务资源来应对。

基于以上场景,您可以通过为伸缩组配置基于单机QPS监控的报警任务,比如设置报警指标QPS的阈值等,自动触发弹性扩缩容活动,提高应用的高可用性能。该方案具有以下优势:

  • 当单机QPS指标大于监控阈值时,触发弹性扩容活动,降低单机QPS负载,以提升系统的响应时间和稳定性。

  • 当单机QPS指标小于监控阈值时,触发弹性缩容活动,自动减少实例数量,从而节省成本。

前提条件

步骤一:配置应用型负载均衡ALB

  1. 创建应用型负载均衡ALB。

    具体操作,请参见创建应用型负载均衡

    主要配置参数说明如下:

    配置

    说明

    示例

    实例名称

    输入自定义实例名称。

    alb-qps-instance

    VPC

    选择实例所属的专有网络(VPC)。

    vpc-test****-001

    可用区

    选择可用区和交换机。

    说明

    应用型负载均衡支持多可用区部署,若当前地域支持2个及以上可用区,为保障业务高可用,请至少选择2个或2个以上可用区。

    • 可用区:杭州 可用区G和杭州 可用区H

    • 交换机:vsw-test003和vsw-test002

  2. 创建应用型负载均衡ALB服务器组。

    具体操作,请参见创建和管理服务器组

    主要配置参数说明如下:

    配置

    说明

    示例

    服务器组类型

    选择一种服务器组类型:选择服务器类型将按照ECI实例添加后端服务器。

    服务器类型

    服务器组名称

    输入自定义服务器组名称。

    alb-qps-servergroup

    VPC

    从VPC下拉列表中选择一个VPC,只有该VPC下的服务器可以加入到该服务器组。

    重要

    该步骤中VPC参数选步骤1中新创建ALB实例时使用的VPC。

    vpc-test****-001

  3. 配置监听。

    1. 在左侧导航栏,选择应用负载均衡ALB > 实例

    2. 实例页面,找到已创建的ALB实例(即alb-qps-instance),单击对应操作列下的创建监听

    3. 配置监听配置向导,监听端口选择80,其他参数保持默认选项即可,单击下一步

      说明

      本步骤中监听端口选择以80为例,您可以根据实际业务场景选择其他端口。

    4. 选择服务器组配置向导,选择服务器类型下的后端服务器组为步骤2新创建的服务器组(即alb-qps-servergroup),然后单击下一步后端服务器-zh

    5. 配置审核配置向导,确认配置信息,单击提交,然后单击知道了

  4. 完成配置后,单击实例详情页签,获取ALB实例的弹性公网IP。ALB的IP-zh

步骤二:创建关联ALB服务器组的伸缩组

创建ECS类型的伸缩组与创建ECI类型伸缩组操作存在部分差异,请您以实际页面显示的参数配置为准,本步骤以创建ECI类型的伸缩组为例。

  1. 创建伸缩组。

    具体操作,请参见创建伸缩组。在创建过程中,主要配置项参数说明如下,其他参数请根据实际需要设置。

    配置项

    说明

    示例

    伸缩组名称

    输入自定义伸缩组名称。

    alb-qps-scalinggroup

    伸缩组类型

    指定伸缩组内提供计算能力的实例类型。

    ECI

    组内实例配置信息来源

    弹性伸缩使用该配置创建实例。

    从零开始创建

    组内最小实例数

    当前实例数量低于下限时,伸缩组会自动添加实例,使得伸缩组内的实例数量等于下限。

    1

    组内最大实例数

    当前实例数量超过上限时,伸缩组会自动移出实例,使得伸缩组内的实例数量等于上限。

    5

    专有网络

    选择与ALB相同的专有网络(VPC)。

    vpc-test****-001

    选择交换机

    选择与ALB相同的交换机。

    vsw-test003和vsw-test002

    关联负载均衡ALB、NLB服务器组

    选择步骤一新创建的ALB服务器组。端口输入80。

    • 服务器组:sgp-****/alb-qps-servergroup

    • 端口:80

  2. 创建并启动伸缩配置。

    具体操作,请参见创建伸缩配置(ECI实例)。在创建过程中,主要配置项参数说明如下,其他参数请根据实际需要设置。

    配置项

    说明

    示例

    容器组配置

    选择容器组的规格(例如CPU和内存)。

    • CPU:2 vCPU

    • 内存:4 GiB

    容器配置

    选择容器镜像和镜像版本。

    • 容器镜像:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx

    • 镜像版本:latest

  3. 启用伸缩组。

    具体操作,请参见启用或停用伸缩组

    说明

    启用伸缩组后,因伸缩组最小实例数为1,伸缩组会自动触发弹性扩容活动,自动创建1台ECI实例。

  4. 查看伸缩组内ECI实例及其容器的状态,确认容器已经处于运行中。

  5. 访问步骤一中获取的ALB实例的弹性公网IP,确认可以正常访问nginx服务。访问ip

步骤三:配置基于ALB单机QPS指标的报警任务

  1. 登录弹性伸缩控制台

  2. 创建伸缩规则。

    本步骤以创建2条简单规则类型的伸缩规则为例,即伸缩规则(Add1)为增加1台实例的扩容规则,伸缩规则(Reduce1)为减少1台实例的缩容规则。具体操作,请参见配置伸缩规则

  3. 创建报警任务。

    1. 伸缩组管理页面,找到已创建的伸缩组(alb-qps-scalinggroup),单击对应操作列的查看详情

    2. 选择伸缩规则与报警任务 > 报警任务 > 报警任务(系统),然后单击创建报警任务

      本步骤以创建2条报警任务为例,即报警认任务(Alarm1)为关联扩容规则(Add1)的报警任务,报警认任务(Alarm2)为关联缩容规则(Reduce1)的报警任务。具体操作,请参见配置报警任务

      • 报警任务(Alarm1):报警指标选择(ALB)服务器组单机QPS,监控指标选择Average(平均值)>= 100次/s

        说明

        单机QPS=总QPS/后端服务器上的实例数量。

        alarm1

      • 报警任务(Alarm2):报警指标选择(ALB)服务器组单机QPS,监控指标选择Average(平均值)< 50次/salarm2-zh1

验证QPS监控效果

  1. 登录PTS控制台

  2. 配置ALB实例IP的压测场景。

    1. 在左侧导航栏,选择性能测试 > 创建场景,然后单击PTS压测

    2. 输入自定义场景名

    3. 场景配置页签中,单击添加压测节点

      说明

      直接单击添加压测节点,系统会默认选择添加HTTP压测节点

    4. 输入压测API名称,然后输入压缩URL。

      本步骤中压测API名称以nginx_api为例,压测URL以步骤一中获取的ALB实例的弹性公网IP为例。

    5. 单击施压配置页签,配置压测模式。

      PTS

      主要配置参数说明如下,其他参数保持默认选项即可。

      配置项

      说明

      示例

      压力模式

      支持并发模式和RPS模式。

      • 并发模式:指虚拟并发用户数。

      • RPS模式:指每秒的请求数。

      RPS模式(Requests Per Second)

      压测总时长

      整个压测持续的时长。

      10分钟

      最大RPS

      在RPS模式下,摸底的是单API接口的服务端吞吐能力,故需要给每个API设置最大RPS与起始RPS。

      500

      起始RPS

      设置单个API的起始RPS。

      500

  3. 单击下方的调试场景,进行场景调试。

    调试成功后,单击关闭

  4. 单击下方的保存去压测,在弹出的对话框中,执行周期选择为立即执行,然后单击确认,启动压测

    压测成功后,您可以在报告列表中选择自定义的场景名,查看压测报告、采样日志等。

  5. 查看QPS监控指标详情。

    具体操作,请参见查看伸缩组内实例的监控指标监控详情

    从上图可以看出,启动了QPS为500的压测任务后,因单机QPS负载远超伸缩组的报警阈值,随即报警任务被触发,系统每次自动扩容1台ECI实例,单机负载随之减轻,QPS值减小。