前篇:Docker部署jar包
二、Docker中运行Jmeter进行分布式压力测试
构建镜像
1.从Jmeter官网下载指定的tgz包到本地目录
2.将Jmeter包导入到服务器的目录中,同时准备两个jmeter.properties 方便后续修改
3.在该目录下创建Dockerfile文件,并进行配置
vi Dockerfile
配置如下:
FROM openjdk:8 #拉取一个jdk为1.8的docker image也可以是本地的镜像
ARG JMETER_VERSION=5.4.3 #设置Jmeter版本
RUN mkdir /jmeter #新建Jmeter文件夹
WORKDIR /jmeter
COPY apache-jmeter-5.4.3.tgz /jmeter #将下载的包复制到文件夹中
RUN tar -xzf apache-jmeter-$JMETER_VERSION.tgz #解压文件
ENV JMETER_HOME=/jmeter/apache-jmeter-${JMETER_VERSION} #配置环境变量
ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}
ENV PATH=${JMETER_HOME}/bin:${PATH}
WORKDIR /jmeter/apache-jmeter-$JMETER_VERSION/bin
EXPOSE 60000 #配置暴露端口
4.构建jmetermaster的镜像
docker build -t jmetermaster .
# 构建完成后查看是否在镜像列表中
docker images
注:.(英文句号)表示当前文件夹
为了后续使用方便,还可以将这个master镜像push到Dockerhub,也可以跳过这个步骤
#登录私有的仓库,自己去Docker Hub申请
docker login
#docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
#docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
# 遵循命名规范,可以修改一下镜像命名
docker tag jmetermaster hensengberg/jmetermaster:1.0
# 推送镜像到Dockerhub
docker push heisenberg/jmetermaster:1.0
5.修改一份jmeter.properties文件中的配置
server.rmi.ssl.disable=true
6.准备jmeterslave镜像的Dockerfile
FROM heisenberg/jmetermaster:1.0 #不上传私有库的话可以直接去导本地的镜像
#FROM jmetermaster
WORKDIR /jmeter/apache-jmeter-5.4.3/bin
COPY jmeter.properties .
EXPOSE 1099 50000
ENTRYPOINT $JMETER_HOME/bin/jmeter-server \
-Dserver.rmi.localport=50000 \
-Dserver_port=1099
7.构建slave镜像, 把镜像推到私有库
#构建salve镜像
docker build -t jmeterslave .
# 遵循命名规范,可以修改一下镜像命名
docker tag jmetermaster hensengberg/jmeterslave:1.0
# 推送镜像到Dockerhub
docker push heisenberg/jmeterslave:1.0
启动容器
1.启动jmetermaster
docker run -itd --name jmetermaster jmetermaster
2.启动 jmeterslave
docker run -d --name jmeterslave1 jmeterslave
docker run -d --name jmeterslave2 jmeterslave
3.查看jmeter 主机和执行机的ip
docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $( docker ps -a -q)
4.修改另一份 jmeter.properties 放入 jmetermaster
在jmeter.properties修改执行机的ip
# 两个执行机的ip:port
remote_hosts=172.17.0.7,172.17.0.8
# 同时也需要开启以下配置
server.rmi.ssl.disable=true
将修改好的jmeter.properties复制到jmeter容器中
docker cp ./jmeter.properties jmetermaster:/jmeter/apache-jmeter-5.4.3/bin/
5.进入jmetermaster执行测试脚本
在windows客户端生成jmx文件,将jmx文件复制到jmeter容器中
docker cp test.jmx jmetermaster:/jmeter/apache-jmeter-5.4.3/bin/
- 在master中运行测试并查看它是否可以正常工作(非分布式模式下)。Docker容器将能够运行JMeter测试,因为它拥有运行JMeter测试所需的所有软件和依赖项。
jmeter -n -t test.jmx -l /test.jtl -e -o /reports
- 现在,我们准备 使用Docker容器在分布式环境中运行测试。我们只需要附加 -R[slave01,slave02]
jmeter -n -t test.jmx -R172.17.0.7,172.17.0.8 -l /test.jtl -e -o /reports
将jmeter容器中的分析结果test.jtl复制到指定的目录文件中
docker cp jmetermaster:test.jtl .
将test.jtl复制本地客户端,然后使用jmeter的客户端进行读取分析