弹性伸缩支持使用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指标小于监控阈值时,触发弹性缩容活动,自动减少实例数量,从而节省成本。 
前提条件
- 如果您使用RAM用户,您需要为RAM用户授予ALB的操作或查看等权限。具体操作,请参见为RAM用户授权。 
- 已创建专有网络VPC和交换机。具体操作,请参见创建专有网络和交换机。 
步骤一:配置应用型负载均衡ALB
- 创建应用型负载均衡ALB。 - 具体操作,请参见创建和管理ALB实例。 - 主要配置参数说明如下: - 配置 - 说明 - 示例 - 实例名称 - 输入自定义实例名称。 - alb-qps-instance - VPC - 选择实例所属的专有网络(VPC)。 - vpc-test****-001 - 可用区 - 选择可用区和交换机。 说明- 应用型负载均衡支持多可用区部署,若当前地域支持2个及以上可用区,为保障业务高可用,请至少选择2个或2个以上可用区。 - 可用区:杭州 可用区G和杭州 可用区H 
- 交换机:vsw-test003和vsw-test002 
 
- 创建应用型负载均衡ALB服务器组。 - 具体操作,请参见创建和管理服务器组。 - 主要配置参数说明如下: - 配置 - 说明 - 示例 - 服务器组类型 - 选择一种服务器组类型:选择服务器类型将按照ECI实例添加后端服务器。 - 服务器类型 - 服务器组名称 - 输入自定义服务器组名称。 - alb-qps-servergroup - VPC - 从VPC下拉列表中选择一个VPC,只有该VPC下的服务器可以加入到该服务器组。 重要- 该步骤中VPC参数选步骤1中新创建ALB实例时使用的VPC。 - vpc-test****-001 
- 配置监听。 - 在左侧导航栏,选择。 
- 在实例页面,找到已创建的ALB实例(即alb-qps-instance),单击对应操作列下的创建监听。 
- 在配置监听配置向导,监听端口选择80,其他参数保持默认选项即可,单击下一步。 说明- 本步骤中监听端口选择以80为例,您可以根据实际业务场景选择其他端口。 
- 在选择服务器组配置向导,选择服务器类型下的后端服务器组为步骤2新创建的服务器组(即alb-qps-servergroup),然后单击下一步。  
- 在配置审核配置向导,确认配置信息,单击提交,然后单击知道了。 
 
- 完成配置后,单击实例详情页签,获取ALB实例的弹性公网IP。  
步骤二:创建关联ALB服务器组的伸缩组
创建ECS类型的伸缩组与创建ECI类型伸缩组操作存在部分差异,请您以实际页面显示的参数配置为准,本步骤以创建ECI类型的伸缩组为例。
- 创建伸缩组。 - 具体操作,请参见创建伸缩组。在创建过程中,主要配置项参数说明如下,其他参数请根据实际需要设置。 - 配置项 - 说明 - 示例 - 伸缩组名称 - 输入自定义伸缩组名称。 - 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 
 
- 创建并启动伸缩配置。 - 具体操作,请参见创建伸缩配置(ECI实例)。在创建过程中,主要配置项参数说明如下,其他参数请根据实际需要设置。 - 配置项 - 说明 - 示例 - 容器组配置 - 选择容器组的规格(例如CPU和内存)。 - CPU:2 vCPU 
- 内存:4 GiB 
 - 容器配置 - 选择容器镜像和镜像版本。 - 容器镜像:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx 
- 镜像版本:latest 
 
- 启用伸缩组。 - 具体操作,请参见启用或停用伸缩组。 说明- 启用伸缩组后,因伸缩组最小实例数为1,伸缩组会自动触发弹性扩容活动,自动创建1台ECI实例。 
- 查看伸缩组内ECI实例及其容器的状态,确认容器已经处于运行中。 
- 访问步骤一中获取的ALB实例的弹性公网IP,确认可以正常访问 - nginx服务。 
步骤三:配置基于ALB单机QPS指标的报警任务
- 登录弹性伸缩控制台。 
- 创建伸缩规则。 - 本步骤以创建2条简单规则类型的伸缩规则为例,即伸缩规则(Add1)为增加1台实例的扩容规则,伸缩规则(Reduce1)为减少1台实例的缩容规则。具体操作,请参见配置伸缩规则。 
- 创建报警任务。 - 在伸缩组管理页面,找到已创建的伸缩组(alb-qps-scalinggroup),单击对应操作列的查看详情。 
- 选择,然后单击创建报警任务。 - 本步骤以创建2条报警任务为例,即报警认任务(Alarm1)为关联扩容规则(Add1)的报警任务,报警认任务(Alarm2)为关联缩容规则(Reduce1)的报警任务。具体操作,请参见配置报警任务。 - 报警任务(Alarm1):报警指标选择(ALB)服务器组单机QPS,监控指标选择Average(平均值)>= 100次/s。 说明- 单机QPS=总QPS/后端服务器上的实例数量。  
- 报警任务(Alarm2):报警指标选择(ALB)服务器组单机QPS,监控指标选择Average(平均值)< 50次/s。  
 
 
验证QPS监控效果
- 登录PTS控制台。 
- 配置ALB实例IP的压测场景。 - 在左侧导航栏,选择,然后单击PTS压测。 
- 输入自定义场景名。 
- 在场景配置页签中,单击添加压测节点。 说明- 直接单击添加压测节点,系统会默认选择添加HTTP压测节点。 
- 输入压测API名称,然后输入压缩URL。 - 本步骤中压测API名称以nginx_api为例,压测URL以步骤一中获取的ALB实例的弹性公网IP为例。 
- 单击施压配置页签,配置压测模式。  - 主要配置参数说明如下,其他参数保持默认选项即可。 - 配置项 - 说明 - 示例 - 压力模式 - 支持并发模式和RPS模式。 - 并发模式:指虚拟并发用户数。 
- RPS模式:指每秒的请求数。 
 - RPS模式(Requests Per Second) - 压测总时长 - 整个压测持续的时长。 - 10分钟 - 最大RPS - 在RPS模式下,摸底的是单API接口的服务端吞吐能力,故需要给每个API设置最大RPS与起始RPS。 - 500 - 起始RPS - 设置单个API的起始RPS。 - 500 
 
- 单击下方的调试场景,进行场景调试。 - 调试成功后,单击关闭。 
- 单击下方的保存去压测,在弹出的对话框中,执行周期选择为立即执行,然后单击确认,启动压测。 - 压测成功后,您可以在报告列表中选择自定义的场景名,查看压测报告、采样日志等。 
- 查看QPS监控指标详情。 - 具体操作,请参见查看伸缩组内实例的监控指标。  - 从上图可以看出,启动了QPS为500的压测任务后,因单机QPS负载远超伸缩组的报警阈值,随即报警任务被触发,系统每次自动扩容1台ECI实例,单机负载随之减轻,QPS值减小。