|
2#
楼主 |
发表于 2018-6-5 16:13:09
|
只看该作者
添加应用时导入以上配置文件,点击创建,顺间就能创建jmeter集群(几秒钟的事情)。
创建好的集群各个节点,就可以方便的进行管理(升级、重启、停止服务、查看日志、执行命令行等操作)
,无需连接Linux,就可直接进行各节点的命令操作:
通过以上ps查看,就能发现jmeter的从节点自动启动了jmeter-server,无需人为操作jmeter-server的启动。
登录到master主机,也能看到jmeter-master容器和rancher服务
三、Jmeter集群应用
到这一步就可以验证上面的成果了,直接到一个脚本newTest.jmx进行测试:
jmeter -n -t /jmeter/apache-jmeter-3.2/bin/newTest.jmx -Djava.rmi.server.hostname=172.16.1.30 -Dclien
t.rmi.localport=60000 -R 172.16.1.140,172.16.1.37 -l /jmeter/apache-jmeter-3.2/DashReport/log-222.csv
-e -o /jmeter/apache-jmeter-3.2/DashReport/htmlReport-222
将输出的报告从容器中拷出用html查看,一切OK
四、扩展应用
以上已经实现了一套Jmeter的容器云平台,但是为了让脚本和报告集中管理,我们需要构建一个文件服务器,
通过nginx或是SVN都行。在文件目录下建立jmx,jtl,report三个子目录。
将本机编辑和测试通过的脚本,直接上传到文件服务器上(需要配置SSH免密登录)
scp newTest.jmx root@x.x.x.x:/data/jmetertest/jmx/
通master节点的jmeter可以直接连接文件服务器调用脚本,并将生成的报告保存到文件服务器上。以下是jme
ter的示例脚本:
- <p>#!/bin/bash</p><p>
- </p><p>if [ ! -n "$1" ] ;then</p><p>
- </p><p> echo 'give me a parameter, ok?'</p><p>
- </p><p>else</p><p>
- </p><p> now=`date --date='0 days ago' "+%Y%m%d%H%M%S"`</p><p>
- </p><p> echo "=====Start JMeter Test $1 on $now"</p><p>
- </p><p> echo "=====Step1 wget"</p><p>
- </p><p> cmd1="wget -P /jmeter/apache-jmeter-3.2/bin/ https://xxx.xxx.xxx/jmetertest/jmx/$1"</p><p>
- </p><p> eval ${cmd1}</p><p>
- </p><p> echo "=====Step2 makedir in local"</p><p>
- </p><p> #jmeter-jtl</p><p>
- </p><p> if [ ! -d "/jmeter-jtl" ]; then</p><p>
- </p><p> mkdir /jmeter-jtl</p><p>
- </p><p> fi</p><p>
- </p><p> #jmeter-jtl/xxx.jmx</p><p>
- </p><p> if [ ! -d "/jmeter-jtl/$1" ]; then</p><p>
- </p><p> mkdir "/jmeter-jtl/$1"</p><p>
- </p><p> fi</p><p>
- </p><p> #jmeter-report</p><p>
- </p><p> if [ ! -d "/jmeter-report" ]; then</p><p>
- </p><p> mkdir /jmeter-report</p><p>
- </p><p> fi</p><p>
- </p><p> #jmeter-report/xxx.jmx</p><p>
- </p><p> if [ ! -d "/jmeter-report/$1" ]; then</p><p>
- </p><p> mkdir "/jmeter-report/$1"</p><p>
- </p><p> fi</p><p>
- </p><p> echo "=====Step3 jmeter"</p><p>
- </p><p> cmd2="/jmeter/apache-jmeter-3.2/bin/jmeter -n -t /jmeter/apache-jmeter-3.2/bin/$1 -l /jmeter-jtl/$1/$now.jtl -e -o /jmeter-report/$1/$now -Djava.rmi.server.hostname=172.16.1.30 -Dclient.rmi.localport=60000 -R 172.16.1.37,172.16.1.140"</p><p>
- </p><p> eval ${cmd2}</p><p>
- </p><p> tip="10.135.147.74"</p><p>
- </p><p> echo "=====Step4 scp"</p><p>
- </p><p> #scp jtl</p><p>
- </p><p> tjtl="/data/jmetertest/jmetertest/jtl"</p><p>
- </p><p> cmd3="ssh root@${tip} \"[ -d ${tjtl}/$1 ] && echo ok || mkdir -p ${tjtl}/$1\""</p><p>
- </p><p> eval ${cmd3}</p><p>
- </p><p> cmd4="scp /jmeter-jtl/$1/$now.jtl root@${tip}:${tjtl}/$1/"</p><p>
- </p><p> eval ${cmd4}</p><p>
- </p><p> #scp report</p><p>
- </p><p> treport="/data/jmetertest/report"</p><p>
- </p><p> cmd5="ssh root@${tip} \"[ -d ${treport}/$1 ] && echo ok || mkdir -p ${treport}/$1\""</p><p>
- </p><p> eval ${cmd5}</p><p>
- </p><p> cmd6="ssh root@${tip} \"[ -d ${treport}/$1/$now ] && echo ok || mkdir -p ${treport}/$1/$now\""</p><p>
- </p><p> eval ${cmd6}</p><p>
- </p><p> cmd7="scp -r /jmeter-report/$1/$now root@${tip}:${treport}/$1/"</p><p>
- </p><p> eval ${cmd7}</p><p>
- </p><p> echo "=====End JMeter Test $1 on $now"</p><p>
- </p><p>fi</p>
复制代码
备注说明:上面所用到的jmeter镜像都是从DockerHub调用的,为了方便镜像的分布式下发和运行,调用
DockerHub的镜像是个简便的方式,我们也可以自己生成jmeter镜像,申请个Docker Hub账号后上传到
镜像库里。
由于Rancher还有很多其他功能,也可以做一些其他方面的集成,后续再做研究!
|
|