docker+jmeter实现windows作为主控机,linux作为负载机的分布式压测环境搭建
1、搭建环境说明
- 准备一台windows主机作为主控机,用于进行任务的分发以及结果的收集。
- 准备一台或多台的linux主机作为负载机,用于进行负载压测,需准备docker环境。本文用的CentOs发行版本的linux。
- 需确保windows主控机以及linux负载机之间能够ping通。
- windows主控机与linux负载机的jmeter版本需保持一致。JDK保持一致。本文jmeter使用版本为5.4.1。
2、windows主控机安装Jmeter
- windows版jmeter的安装教程很多,此处不做过多赘述,请自行安装Jmeter。可参考如下文章进行安装 Jmeter安装教程【5.5】【Windows】jmeter详细安装配置教程,装不好你打我
- 修改配置文件
powershell
## 修改jmeter.properties文件
# Remote Hosts - 此处填写对应linux负载机的ip地址,多台负载机ip地址通过逗号隔开
remote_hosts=192.168.175.135:1099
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099
# the following property before starting the server:
server.rmi.localport=1099
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
powershell
## 修改system.properties文件。在最后一行加上当前windows主控机的ip地址
java.rmi.server.hostname=128.23.58.41
3、linux负载机安装Jmeter
3.1、安装docker环境
- centos下docker官方安装文档:Linux centos操作系统下安装docker
- 安装需要的安装包yum-utils。shell命令行输入:
powershell
yum install -y yum-utils
- 设置镜像仓库地址
powershell
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
##文档中仓库地址不在国内,访问较慢,此处可更改为别的镜像仓库,如:
##阿里云镜像仓:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker引擎
powershell
yum install docker-ce docker-ce-cli containerd.io
- 启动docker
powershell
systemctl start docker
- 设置docker开机自启动
powershell
systemctl enable docker
- (可选)配置docker镜像加速。
登录阿里云,找到镜像容器服务。按照步骤配置镜docker镜像。
powershell
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://magantt5.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 测试docker是否运行成功
powershell
##查看当前docker版本
docker version
##运行测试用例看看docker是否安装成功。没有报错即安装成功
docker run hello-world
3.2、使用docker安装jmeter
- 自定义jm:base的dockerfile文件。
powershell
# jmbase。dockerfile文件
# 基础镜像文件openjdk:8
FROM openjdk:8-jre-slim
# 镜像创建者名字
MAINTAINER yourname
# jmeter版本。与windows的jmeter版本保持一致
ARG JMETER_VERSION=5.4.1
# 安装基本工具
RUN apt-get clean && apt-get update && apt-get -qy install wget telnet iputils-ping unzip
# 安装jmeter
RUN mkdir /jmeter \
&& cd /jmeter/ \
&& wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-$JMETER_VERSION.tgz \
&& tar -xvzf apache-jmeter-$JMETER_VERSION.tgz -C /jmeter
# 设置jmeter容器环境
ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VERSION/
ENV PATH $JMETER_HOME/bin:$PATH
- 构建jm:base镜像
powershell
docker build -f ./jmbase -t jm:base .
- 自定义jmeter-slave的dockerfile文件。
powershell
# jm:slaves。dockerfile文件
# 使用jmbase作为基础镜像
FROM jm:base
MAINTAINER yourname
# 从JMeter Slaves/Server的容器中要公开的端口
EXPOSE 1099
# 启动容器 运行应用程序
ENTRYPOINT $JMETER_HOME/bin/jmeter-server \
-Dserver.rmi.localport=1099 \
-Dserver_port=1099 \
-Dserver.rmi.ssl.disable=true \
- 根据自己的目录层级,创建jmeter-slave镜像。我的目录层级如下,其中名为jmaster的dockerfile文件用于linux做主控机的情况,此处不涉及。对应jmmaster、jmslave01文件夹分别存放着对应linux版的jmeter应用程序,用于在上方没有指定容器内运行环境(
ENTRYPOINT $JMETER_HOME/bin/jmeter-server
)的情况下,进行挂载,手动更改配置文件使用,此处也不涉及。
powershell
## 创建jm:slave镜像
[root@localhost mydata]# docker build -f ./jmslaves -t jm:slaves .
##创建完成后,查看对应镜像
[root@localhost mydata]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jm slaves 464afdad68b6 2 hours ago 416MB
jm master c6ba6cd0665c 6 months ago 416MB
jm base 5e1087e447bb 6 months ago 416MB
openjdk 8-jre-slim 54301e8a1f0d 2 years ago 194MB
- 根据镜像运行容器
powershell
[root@localhost mydata]# docker run -it -d --name jmeter-slave -p 1099:1099 jm:slaves
## 当步骤2中jmeter-slave的dockerfile没有指定容器内运行环境时,手动挂载
## docker run -it -d --name jmeter-slave -v /mydata/jmslave01/jmeter/apache-jmeter-5.4.1:/jmeter/apache-jmeter-5.4.1 -p 1099:1099 jm:slaves
- (可选)当步骤2中dockerfile容器内没有指定运行环境、步骤4通过手动挂载 -v 的方式启动容器,需要修改对应的文件后才能进行主控机与负载机的连接。
powershell
## 修改jmeter.properties文件
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099
# the following property before starting the server:
server.rmi.localport=1099
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
powershell
## 修改system.properties文件。在最后一行加上当前linux负载机的ip地址
java.rmi.server.hostname=192.168.175.135
通过挂载的方式启动容器,修改配置文件后,重启jmeter
powershell
docker restart jmeter-slave
4、windows主控机分发测试任务
- 打开windows主控机的jmeter。远程启动。当请求成功发出后,配置成功。