背景
閑來(lái)無(wú)事重新又把使用Dockerfile部署jmeter分布式的知識(shí)回顧了一下查近,回頭重新整理下使用docker-compose來(lái)啟動(dòng)整個(gè)環(huán)境。目前都是需要手動(dòng)~<手動(dòng)狗頭>
看圖
解釋
- 圖片1 展示的就是是使用dokcer部署jmeter分布式的一個(gè)概覽圖裂逐,目的就是再一臺(tái)物理機(jī)器上使用docker啟動(dòng)一臺(tái)jmeter master歹鱼,多臺(tái)slave來(lái)實(shí)現(xiàn)jmeter的分布式壓測(cè)
- 圖片2 展示的是一臺(tái)master 和salve的通信過(guò)程泣栈,jmeter slave需要開(kāi)通 50000和1099兩個(gè)端口號(hào),
其中server_port是從機(jī)服務(wù)的端口號(hào)弥姻,另一個(gè)是遠(yuǎn)程服務(wù)通信端口號(hào)南片。具體我也不太清楚;jmeter master 需要開(kāi)通60000端口號(hào)庭敦,用來(lái)和slave通信 - 圖片3展示的是一個(gè)壓力效果疼进,可以理解為單臺(tái)機(jī)器壓測(cè)時(shí)如果有20個(gè)壓力,使用1主3從之后秧廉,可以用3倍的壓力
腳本-Dockerfile
可以看到我整個(gè)腳本的目錄伞广,一共有base ,client疼电,和master 嚼锄,sample-test四個(gè)目錄,其中base是用來(lái)存放jmster基礎(chǔ)鏡像的文件蔽豺,master是用來(lái)存放master的鏡像区丑,client是用來(lái)存放slave的鏡像,最后sample-test是用來(lái)存放jmx腳本的-目的是通過(guò)掛載的方式把腳本共享給jmeter的master修陡,如果有改動(dòng)不需要每次再上傳到master容器里沧侥,方便來(lái)操作。
base的鏡像
FROM openjdk:8-jre-slim # 鏡像需要依賴java環(huán)境
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/ # 設(shè)置容器里jmeter的環(huán)境變量
ENV PATH $JMETER_HOME/bin:$PATH
master的鏡像
FROM myimages #base鏡像的名稱
MAINTAINER shd # 作者
# Ports to be exposed from the container for JMeter Master
EXPOSE 60000 # 暴露端口號(hào)
slave的鏡像
FROM myimages #base鏡像的名稱
MAINTAINER shd
# Ports to be exposed from the container for JMeter Slaves/Server
# 從JMeter Slaves/Server的容器中要公開(kāi)的端口
EXPOSE 1099 50000 #暴露端口號(hào)
# Application to run on starting the container
# 啟動(dòng)容器 運(yùn)行應(yīng)用程序
ENTRYPOINT $JMETER_HOME/bin/jmeter-server \
-Dserver.rmi.localport=50000 \
-Dserver_port=1099 # 通過(guò)entrypoint的方式啟動(dòng)slave 的server
啟動(dòng)鏡像和容器的腳本
docker build . -t myimages # 構(gòu)建base鏡像
docker build . -t slave_images # 構(gòu)建slave鏡像
docker build . -t master_images # 構(gòu)建master鏡像
# 通過(guò)掛載的方式啟動(dòng)主機(jī)
docker run -itd --name master
-v /Users/shenhaodong/PycharmProjects/my_test/jmeter/sample-test:/sample-test
master_images
# 啟動(dòng)從機(jī)
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)
執(zhí)行壓測(cè)腳本
docker exec -it master /bin/sh # 進(jìn)入容器
cd sample-test # 進(jìn)入腳本目錄
jmeter -n -t test.jmx -R 172.17.0.4,172.17.0.3 # 開(kāi)啟分布式壓測(cè)
需要注意??:一定要記得把jmeter/bin/jmeter.properties 的server.rmi.ssl.disable=false 改成true魄鸦,并且前面的#去掉
server.rmi.ssl.disable=true