云原生压测方案可以一键部署了!

2020-11-30 17:06:14 浏览数 (1)

分布式Jmeter作为云原生的压测方案,虽然有着功能强大,压测上限高的特点,但是也有部署较为繁琐,结果展示不够形象的问题。为了解决Jmeter的问题,通过结合Jmeter Grafana influx helm打造了一套一键部署且较为易用的云原生压测解决方案。

一、现有压测方案存在的问题

现有的接口压测方案,根据使用方式我这里分为SaaS和LTaaS两大类,这两类的服务优缺点如下:

产品类型

产品代表

优点

缺点

SaaS

PTS、压测大师

UI化界面,简单易用

1、无法在私有网络内

2、使用需要付费

3、无法应对复杂的请求

LTaaS(Load testing as a service)

Jmeter-disbutied、Jmeter-kubernetes、Jmeter-Suite

可以在私有网络内部使用

1、需要自行部署压测服务

可以对应复杂请求,如一些需要通过鉴权的头

2、需要学习Jmeter知识

SaaS类压测服务的特点是简单易用,适用对压测功能性需求不高的同学,只需要简单请求 参数。而LTaaS适合较为复杂的部署场景,比如有些服务在未上线之前,只有在私有化网络可以访问,外网无法连接,或者你需要实现比较复杂的逻辑,比如内嵌代码到请求,这样的话就要采取开源的LTaaS的压测方案。

而LTaaS的方案,如开源社区里面的Jmeter-disbutied和Jmeter-kubernetes,均存在部署步骤复杂,使用较为麻烦的问题,新手上手有一定的难度。于是,为了简化部署和使用,提升压测方案的效率,我们开发了一键部署的压测方案——Jmeter-Suite。

二、如何部署Jmeter-Suite

部署方式1:Helm3部署

安装Helm3(不能用Helm2)

代码语言:javascript复制
wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
tar -zxvf helm-v3.2.1-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/

Checkout代码

代码语言:javascript复制
git clone https://github.com/tkestack/charts.git

部署压测集群

代码语言:javascript复制
helm install test-name incubator/jmeter-suite

部署方式2:TKE市场部署

如果觉得使用Helm部署还是太麻烦的话,你也可以直接在TKE市场直接点部署

三、如何使用Jmeter-Suite

1、启动测试

Checkout代码,打开jmeter-suite目录

代码语言:javascript复制
git clone https://github.com/tkestack/charts.git
cd jmeter-suite

启动一次测试

代码语言:javascript复制
sh start_test.sh demo/Test.jmx

2、查看测试结果

如果想查看测试结果,先找到你的机器IP地址

代码语言:javascript复制
kubectl get node -o wide | grep $(kubectl get pod -o wide | grep grafana | awk '{print $7}') | awk '{print $7}'

然后访问下面地址即可(注意开放入站安全组)

代码语言:javascript复制
http://机器IP:31221

3、加入Jmeter脚本的Backend Listener

Jmeter脚本的编写参考网上的教程,或者参考https://github.com/tkestack/charts/jmeter-suite/demo/Test.jmx即可。但是需要注意的是,为了能够把测试数据写入influx db,需在每个测试案例的后面,加入后置处理器Backend Listener:

除了application和title,其余均不需要修改。

四、Jmeter-Suite实践

1、用完即走的压测场景

与使用SaaS类的压测服务不一样的是,使用云原生的压测方案,需要自行准备压测用的集群,以便部署压测服务。但是如果长期维护一套集群用于压测,就会让我们的方案的低成本性有了变化。由于我们的方案已经可以做到一键部署,所以可以在需要压测的时候把压测服务部署上去,用完的时候卸载走人即可。

在我们内部建设的TMF日常压测任务当中,就遇到类似的问题,由于集群资源的匮乏,所以每次压测后都需要卸载掉压测服务,释放集群资源

2、压测与持续集成平台结合的场景

虽然Jmeter-suite能够实现一键部署,部署起来非常方便。但是对比PTS等SaaS类服务,Jmeter-Suite还是缺乏界面化操作的能力。为了解决这个问题,在文博会、腾讯云生态大会等项目的压测实践当中,引入了持续集成平台,通过持续集成平台,把压测操作UI化,大大提高执行的效率。我们这里使用了Coding平台结合压测工具,打造了较为易用的压测服务。

五、欢迎使用或加入Jmeter-Suite的开发!

欢迎大家在腾讯云TKE里直接使用该服务,或者使用helm直接部署。也欢迎到项目里面提出意见。

项目地址:https://github.com/tkestack/charts/tree/main/incubator/jmeter-suite

0 人点赞