Docker构建jmeter分布式压测实战
一、Jmeter基于docker分布式压测的测试环境搭建
1、在本机按照自己的习惯找一个目录存放新建的Dockerfile文件
mkdir Jm_Docker cd Jm_Docker touch Dockerfile
2、在Dockerfile文件中写入如下内容:
FROM openjdk:8-jre-slim MAINTAINER TesterHome ARG JMETER_VERSION=5.4 # 使用清华大学的镜像源 RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \ sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list # 安装所需工具 RUN apt-get update && \ apt-get install -y --no-install-recommends \ apt-utils \ wget \ telnet \ iputils-ping \ unzip # 创建目录 RUN mkdir -p /opt/data/tmp1/SCS/jmeter_fbs/jmeter # 安装 JMeter RUN cd /opt/data/tmp1/SCS/jmeter_fbs/jmeter/ \ && wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-$JMETER_VERSION.tgz \ && tar -xvzf apache-jmeter-$JMETER_VERSION.tgz -C /opt/data/tmp1/SCS/jmeter_fbs/jmeter \ && rm apache-jmeter-$JMETER_VERSION.tgz # 设置环境变量 ENV JMETER_HOME /opt/data/tmp1/SCS/jmeter_fbs/jmeter/apache-jmeter-$JMETER_VERSION/ ENV PATH="$JMETER_HOME/bin:${PATH}"
主要做的事情是做一个基础的jmeter镜像。其中做了以下事
- 定义了Jmeter的版本:JMETER_VERSION=5.4
⚠️注意,在修改Jmeter版本时,先自己手动确认一下自己需要的版本在链接https://archive.apache.org/dist/jmeter/binaries/中存在。 - 安装自己指定的Jmeter,并配置好Jmeter的环境变量
3、在Dockerfile文件所在目录下执行以下命令。
【.】表示当前目录下即Dockerfile文件所在的目录;test1是对应镜像的标签;jm是镜像的REPOSITORY,都可以自己定义
Jm_Docker# docker build -t jm:test1 .
在命令行执行docker images查看所有镜像,就可以看到自己构建的jmbase镜像
4、配置slave镜像文件,需要将之前创建的Dockerfile重命名,重新创建Dockerfile
新的Dockerfile内容如下:
# Use jmbase image # 使用jm基本映像 FROM jm:test1 MAINTAINER TesterHome # Ports to be exposed from the container for JMeter Slaves/Server # 从JMeter Slaves/Server的容器中要公开的端口 EXPOSE 1099 50000 # Application to run on starting the container # 启动容器 运行应用程序 ENTRYPOINT $JMETER_HOME/bin/jmeter-server \ -Dserver.rmi.localport=50000 \ -Dserver_port=1099 \ -Jserver.rmi.ssl.disable=true
-
命令行中输入
docker build -t slaves:server .
-
再次修改Dockerfile文件内容如下:做Jmeter分布式中的master
# Use jmbase image FROM jm:test1 MAINTAINER Testerhome # Ports to be exposed from the container for JMeter Master EXPOSE 60000 -Jserver.rmi.ssl.disable=true
- 命令行执行
docker build -t master:server .
- 命令行执行docker imagers就会看到如图所示已经建好的images
- 运行以下命令启动master和slaves
docker run -it -d --name jmmaster master:server docker run -it -d --name jmslave01 slaves:server docker run -it -d --name jmslave02 slaves:server
docker ps
可以看到已经运行起来的容器
- 输入以下命令找到对应的slaves的ip地址,并记录下来
备注:执行过程遇到提示java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
说明Dockerfile文件中没有开启server.rmi.ssl.disable 在构建Dockerfile文件时配置即可,slaves必须先配置好,再构建容器,不然容器无法启动
5、jmeter分布式测试执行
把测试脚本放到jmmaster容器中
docker cp ./testplan.jmx jmmaster:/opt/data/tmp1/SCS/jmeter_fbs/jmeter
进入jmmaster容器
docker exec -it jmmaster /bin/bash
进入容器指定目录
cd /opt/data/tmp1/SCS/jmeter_fbs/jmeter/
执行分布式压测(-R 接的是slave容器 ip,有多个容器配置多个ip即可)
jmeter -n -t /opt/data/tmp1/SCS/jmeter_fbs/jmeter/testplan.jmx -l /opt/data/tmp1/SCS/jmeter_fbs/jmeter/testplan.jtl -R 172.17.0.5,172.17.0.4
容器内部jtl生成report报告:
jmeter -g ./testplan.jtl -o ./report
将jtl或者report复制到linux环境目录下:
docker cp jmmaster:/opt/data/tmp1/SCS/jmeter_fbs/jmeter/testplan.jtl ./ docker cp jmmaster:/opt/data/tmp1/SCS/jmeter_fbs/jmeter/report ./
report报告展示:
备注:linux环境对应的端口1099 50000 60000 需要对外开放
参考地址:
https://www.jianshu.com/p/ba7ae4e5de89
https://www.cnblogs.com/T-CYP/p/14657204.html
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/17970380