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

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

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. 修改配置文件
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环境

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

3.2、使用docker安装jmeter

  1. 自定义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
  1. 构建jm:base镜像
powershell 复制代码
 docker build -f ./jmbase -t jm:base .
  1. 自定义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 \
  1. 根据自己的目录层级,创建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
  1. 根据镜像运行容器
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
  1. (可选)当步骤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主控机分发测试任务

  1. 打开windows主控机的jmeter。远程启动。当请求成功发出后,配置成功。
相关推荐
zyu679 小时前
03-Docker存储和网络
网络·docker·容器
牛奔10 小时前
Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)
运维·docker·云原生·容器·eureka
青州从事52115 小时前
20260108【mac】【brew】【docker】安装
macos·docker·eureka
菜鸟思维17 小时前
优化NextJs 项目的Docker 镜像 从3.62G 优化到 296.85M
docker
怣疯knight17 小时前
Docker Desktop 4.55.0版本安装成功教程
windows·docker
东方佑18 小时前
使用Docker Compose一键部署OnlyOffice:完整指南与配置解析
运维·docker·容器
赵文宇(温玉)18 小时前
Docker的价值、特点、创新与关键技术
运维·docker·容器
Coder码匠20 小时前
Docker Compose 部署 Spring Boot 应用完全指南
spring boot·docker·容器
可爱又迷人的反派角色“yang”20 小时前
k8s(二)
linux·运维·docker·云原生·容器·kubernetes·云计算
计算机小手20 小时前
内网穿透系列十六:使用 wg-easy 快速搭建基于 wireguard 的虚拟局域网,支持Docker部署
经验分享·网络协议·docker·开源软件