docker+jmeter实现windows作为主控机,linux作为负载机的分布式压测环境搭建
- 1、搭建环境说明
- 2、windows主控机安装Jmeter
- 3、linux负载机安装Jmeter
- 3.1、安装docker环境
- 3.2、使用docker安装jmeter
- 4、windows主控机分发测试任务
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详细安装配置教程,装不好你打我
- 修改配置文件
## 修改jmeter.properties文件
# Remote Hosts - 此处填写对应linux负载机的ip地址,多台负载机ip地址通过逗号隔开
remote_hosts=192.168.175.135:1099,192.168.175.134: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
## 修改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命令行输入:
yum install -y yum-utils
- 设置镜像仓库地址
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引擎
yum install docker-ce docker-ce-cli containerd.io
- 启动docker
systemctl start docker
- 设置docker开机自启动
systemctl enable docker
- (可选)配置docker镜像加速。
登录阿里云,找到镜像容器服务。按照步骤配置镜docker镜像。
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是否运行成功
##查看当前docker版本
docker version
##运行测试用例看看docker是否安装成功。没有报错即安装成功
docker run hello-world
3.2、使用docker安装jmeter
- 自定义jmbase的dockerfile文件。
# 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镜像。此步骤安装基本工具时可能会由于网络问题安装失败。多次重试一下就好。
docker build -f ./jmbase -t jm:base .
- 基于jm:base镜像自定义jmslaves的dockerfile文件。
# 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 \
- 根据自己的目录层级,创建对应文件夹。需要创建一个用于挂载目录的jmslave文件夹,该文件夹存放对应linux版本的jmeter应用程序。
- 根据jmslaves的dockerfile文件,构建jm:slaves镜像。
## 创建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 base 5e1087e447bb 6 months ago 416MB
openjdk 8-jre-slim 54301e8a1f0d 2 years ago 194MB
- 根据jm:slaves镜像运行容器。此处可能会报错,通过
docker logs jmeter-slave
查看容器日志,提示/bin/sh: 1: /jmeter/apache-jmeter-5.4.1//bin/jmeter-server: Permission denie
错误。此处需要手动给我们自己新建用于存放linux版本jmeter的文件夹授权。执行chmod -R 777 /mydata/jmslave
即可。
# -v进行目录挂载
[root@localhost mydata]# 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
- (可选)当步骤3中dockerfile容器内没有指定运行环境,则需要需要修改jmeter.properties才能进行主控机与负载机的连接。此步骤可跳过。
## 修改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
- 修改linux负载机jmeter的system.properties文件。在最后一行加上当前linux负载机的IP地址。因为我们前面通过-v进行了目录挂载,因此我们直接去对应目录修改即可。
## 修改system.properties文件。在最后一行加上当前linux负载机的ip地址
java.rmi.server.hostname=192.168.175.135
9. 通过挂载的方式启动容器,修改配置文件后,重启jmeter
docker restart jmeter-slave
- 查看容器日志。当endpoint地址为当前linux负载机ip地址,且运行没报错即可。
docker logs jmeter-slave
4、windows主控机分发测试任务
- 打开windows主控机的jmeter。远程启动。当请求成功发出后,配置成功。