基于ALB的单机QPS监控指标实现弹性扩缩容
弹性伸缩的系统报警任务支持基于ALB服务器组的单机QPS监控指标,本文为您介绍基于ALB服务器组的单机QPS监控指标实现弹性伸缩的扩缩容活动。
前提条件
已注册阿里云账号。如果还未注册,请先注册阿里云账号。
说明如果您使用RAM用户,您还需要为RAM用户授予ALB的操作或查看等权限。具体操作,请参见为RAM用户授权。
已开通ALB服务功能。确保您账号已存在AliyunServiceRoleForAlb服务关联角色,更多信息,请参见ALB服务关联角色。
已创建专有网络VPC和交换机。具体操作,请参见创建专有网络和交换机。
应用场景
本文适用于对服务器访问量比较敏感的应用场景。例如,您需要通过负载均衡ALB和弹性伸缩相结合的方式高效管理业务的场景,即您的业务需要通过ALB负责统一接收客户请求QPS,然后分发给后端服务器组(例如ECS或ECI)来处理,当用户请求QPS数增加时,需要更多的后端服务器来处理。
基于以上场景,您可以通过为伸缩组配置单机QPS监控报警任务,自动触发弹性扩缩容活动,提高应用的高可用性能,该弹性计算能力具有以下优势:
当单机QPS指标大于监控阈值时,触发弹性扩容活动,降低了单机QPS负载,从而提升系统稳定性。
当单机QPS指标小于监控阈值时,触发弹性缩容活动,从而节省成本。
概念介绍
应用型负载均衡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
创建应用型负载均衡ALB。
具体操作,请参见创建应用型负载均衡。
主要配置参数说明如下:
配置
说明
示例
实例名称
输入自定义实例名称。
alb-qps-instance
VPC
选择实例所属的专有网络(VPC)。
vpc-test****-001
可用区
选择可用区和交换机。
说明应用型负载均衡支持多可用区部署,若当前地域支持2个及以上可用区,为保障业务高可用,请至少选择2个或2个以上可用区。
可用区:杭州 可用区G和杭州 可用区H
交换机:vsw-test003和vsw-test002
创建应用型负载均衡ALB服务器组。
具体操作,请参见创建和管理服务器组。
主要配置参数说明如下:
配置
说明
示例
服务器组名称
输入自定义服务器组名称。
alb-qps-servergroup
VPC
从VPC下拉列表中选择一个VPC,只有该VPC下的服务器可以加入到该服务器组。
说明该步骤中VPC参数选步骤1中新创建ALB实例时使用的VPC。
vpc-test****-001
配置监听。
在左侧导航栏,选择应用负载均衡ALB>实例。
在实例页面,找到已创建的ALB实例(即alb-qps-instance),单击对应操作列下的创建监听。
在配置监听配置向导,监听端口选择80,其他参数保持默认选项即可,单击下一步。
说明本步骤中监听端口选择以80为例,您可以根据实际业务场景选择其他端口。
在选择服务器组配置向导,选择服务器类型下的后端服务器组为步骤2新创建的服务器组(即alb-qps-servergroup),然后单击下一步。
在配置审核配置向导,确认配置信息,单击提交,然后单击知道了。
完成配置后,单击实例详情页签,获取ALB实例的弹性公网IP。
步骤二:创建关联ALB服务器组的伸缩组
创建ECS类型的伸缩组与创建ECI类型伸缩组操作存在部分差异,请您以实际页面显示的参数配置为准,本步骤以创建ECI类型的伸缩组为例。
创建伸缩组。
具体操作,请参见创建伸缩组。在创建过程中,主要配置项参数说明如下,其他参数请根据实际需要设置。
配置项
说明
示例
伸缩组名称
输入自定义伸缩组名称。
alb-qps-scalinggroup
伸缩组类型
指定伸缩组内提供计算能力的实例类型。
ECI
组内实例配置信息来源
弹性伸缩使用该配置创建实例。
从零开始创建
组内最小实例数
当前实例数量低于下限时,伸缩组会自动添加实例,使得伸缩组内的实例数量等于下限。
1
专有网络
选择与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
容器配置
选择容器镜像和镜像版本。
说明本步骤以选择
nginx
镜像为例。容器镜像:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx
镜像版本:latest
启动伸缩组。
具体操作,请参见启用或停用伸缩组。
说明启动伸缩组后,因伸缩组最小实例数为1,伸缩组会自动触发弹性扩容活动,自动创建1台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监控指标详情。
具体操作,请参见查看伸缩组内实例的监控指标。
从上图可以看出,17:25~17:35时间段,启动了QPS为500的压测任务,伸缩组中初始ECI实例数为1台,在17:30、17:32、17:34以及17:36时间点,关联ALB的伸缩组分别触发扩容了1台ECI实例,随着每次扩容活动的执行,单机QPS数明显减少。您可以通过配置基于ALB服务器组的单机QPS监控指标实现伸缩组的弹性扩缩容。