docker+jmeter实现windows作为主控机,linux作为负载机的分布式压测环境搭建

发布时间:2024年01月10日

1、搭建环境说明

  1. 准备一台windows主机作为主控机,用于进行任务的分发以及结果的收集。
  2. 准备一台或多台的linux主机作为负载机,用于进行负载压测,需准备docker环境。本文用的CentOs发行版本的linux。
  3. 需确保windows主控机以及linux负载机之间能够ping通。
  4. windows主控机与linux负载机的jmeter版本需保持一致。JDK保持一致。本文jmeter使用版本为5.4.1。

2、windows主控机安装Jmeter

  1. windows版jmeter的安装教程很多,此处不做过多赘述,请自行安装Jmeter。可参考如下文章进行安装 Jmeter安装教程【5.5】【Windows】jmeter详细安装配置教程,装不好你打我
  2. 修改配置文件
## 修改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
## 修改system.properties文件。在最后一行加上当前windows主控机的ip地址
java.rmi.server.hostname=128.23.58.41

3、linux负载机安装Jmeter

3.1、安装docker环境

  1. centos下docker官方安装文档:Linux centos操作系统下安装docker
  2. 安装需要的安装包yum-utils。shell命令行输入:
yum install -y yum-utils
  1. 设置镜像仓库地址
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
  1. 安装docker引擎
yum install docker-ce docker-ce-cli containerd.io
  1. 启动docker
systemctl  start  docker
  1. 设置docker开机自启动
systemctl enable docker
  1. (可选)配置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
  1. 测试docker是否运行成功
##查看当前docker版本
docker version
##运行测试用例看看docker是否安装成功。没有报错即安装成功
docker run hello-world

3.2、使用docker安装jmeter

  1. 自定义jm:base的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
  1. 构建jm:base镜像
 docker build -f ./jmbase -t jm:base .
  1. 自定义jmeter-slave的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 \
  1. 根据自己的目录层级,创建jmeter-slave镜像。我的目录层级如下,其中名为jmaster的dockerfile文件用于linux做主控机的情况,此处不涉及。对应jmmaster、jmslave01文件夹分别存放着对应linux版的jmeter应用程序,用于在上方没有指定容器内运行环境(ENTRYPOINT $JMETER_HOME/bin/jmeter-server)的情况下,进行挂载,手动更改配置文件使用,此处也不涉及。
    在这里插入图片描述
## 创建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
  1. 根据镜像运行容器
[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

  1. (可选)当步骤2中dockerfile容器内没有指定运行环境、步骤4通过手动挂载 -v 的方式启动容器,需要修改对应的文件后才能进行主控机与负载机的连接。
## 修改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
## 修改system.properties文件。在最后一行加上当前linux负载机的ip地址
java.rmi.server.hostname=192.168.175.135

通过挂载的方式启动容器,修改配置文件后,重启jmeter

docker restart jmeter-slave

4、windows主控机分发测试任务

  1. 打开windows主控机的jmeter。远程启动。当请求成功发出后,配置成功。
    在这里插入图片描述
文章来源:https://blog.csdn.net/ptGrapes/article/details/135503921
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。