Docker中运行Jmeter进行分布式压力测试

前篇: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的客户端进行读取分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值