mac环境下 Dockerfile部署jmeter分布式环境

背景

闲来无事重新又把使用Dockerfile部署jmeter分布式的知识回顾了一下,回头重新整理下使用docker-compose来启动整个环境。目前都是需要手动~<手动狗头>

看图

1.png

2.png

3.png

解释

  1. 图片1 展示的就是是使用dokcer部署jmeter分布式的一个概览图,目的就是再一台物理机器上使用docker启动一台jmeter master,多台slave来实现jmeter的分布式压测
  2. 图片2 展示的是一台master 和salve的通信过程,jmeter slave需要开通 50000和1099两个端口号,
    其中server_port是从机服务的端口号,另一个是远程服务通信端口号。具体我也不太清楚;jmeter master 需要开通60000端口号,用来和slave通信
  3. 图片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

你可能感兴趣的:(mac环境下 Dockerfile部署jmeter分布式环境)