背景
闲来无事重新又把使用Dockerfile部署jmeter分布式的知识回顾了一下,回头重新整理下使用docker-compose来启动整个环境。目前都是需要手动~<手动狗头>
看图
1.png2.png
3.png
解释
- 图片1 展示的就是是使用dokcer部署jmeter分布式的一个概览图,目的就是再一台物理机器上使用docker启动一台jmeter master,多台slave来实现jmeter的分布式压测
- 图片2 展示的是一台master 和salve的通信过程,jmeter slave需要开通 50000和1099两个端口号,
其中server_port是从机服务的端口号,另一个是远程服务通信端口号。具体我也不太清楚;jmeter master 需要开通60000端口号,用来和slave通信 - 图片3展示的是一个压力效果,可以理解为单台机器压测时如果有20个压力,使用1主3从之后,可以用3倍的压力
脚本-Dockerfile
image.png可以看到我整个脚本的目录,一共有base ,client,和master ,sample-test四个目录,其中base是用来存放jmster基础镜像的文件,master是用来存放master的镜像,client是用来存放slave的镜像,最后sample-test是用来存放jmx脚本的-目的是通过挂载的方式把脚本共享给jmeter的master,如果有改动不需要每次再上传到master容器里,方便来操作。
base的镜像
FROM openjdk:8-jre-slim # 镜像需要依赖java环境
RUN apt-get clean && \
apt-get update && \
apt-get -qy install \
wget \
telnet \
iputils-ping \
unzip # 安装一些常用工具
RUN mkdir /jmeter # 在容器新建存放jmeter的目录
ADD apache-jmeter-5.3/ /jmeter/apache-jmeter-5.3 # 把本地的jmeter添加到镜像里
ENV JMETER_HOME /jmeter/apache-jmeter-5.3/ # 设置容器里jmeter的环境变量
ENV PATH $JMETER_HOME/bin:$PATH
master的镜像
FROM myimages #base镜像的名称
MAINTAINER shd # 作者
# Ports to be exposed from the container for JMeter Master
EXPOSE 60000 # 暴露端口号
slave的镜像
FROM myimages #base镜像的名称
MAINTAINER shd
# 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 # 通过entrypoint的方式启动slave 的server
启动镜像和容器的脚本
docker build . -t myimages # 构建base镜像
docker build . -t slave_images # 构建slave镜像
docker build . -t master_images # 构建master镜像
# 通过挂载的方式启动主机
docker run -itd --name master
-v /Users/shenhaodong/PycharmProjects/my_test/jmeter/sample-test:/sample-test
master_images
# 启动从机
docker run -dit --name slave01 slave_images
docker run -dit --name slave03 slave_images
docker run -dit --name slave02 slave_images
# 查看所有ip
docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(sudo docker ps -a -q)
执行压测脚本
docker exec -it master /bin/sh # 进入容器
cd sample-test # 进入脚本目录
jmeter -n -t test.jmx -R 172.17.0.4,172.17.0.3 # 开启分布式压测
需要注意⚠️:一定要记得把jmeter/bin/jmeter.properties 的server.rmi.ssl.disable=false 改成true,并且前面的#去掉
server.rmi.ssl.disable=true
网友评论