Jmeter 分布式搭建

本文详细介绍了如何配置JMeter的分布式测试环境,包括在Master和Slave主机上安装JavaJDK,配置网络和防火墙,以及启动和管理Slave节点。同时,文章还涵盖了如何在Master端添加远程节点,以及通过SSL进行安全配置。在监控方面,提到了使用Docker部署InfluxDB和Grafana来收集和展示JMeter的测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


配置说明:

  1. Master 主机 IP - 192.168.75.142,操作系统为 Windows
  2. Slave1 主机 IP - 192.168.75.140,操作系统为 Centos7
  3. Slave1 主机 IP - 192.168.75.141,操作系统为 Centos7

以下所有操作默认你已经安装并配置好 JMeter 运行环境

安装程序

如果已经安装 Java JDK 和 JMeter 可跳过此安装程序阶段

安装Java JDK

卸载本地 java 环境

  1. 首先,使用 rpm 命令查询 Java 的软件包名称和版本
rpm -qa | grep java
  1. 从系统中卸载 Java,使用 yum remove 命令,指定要删除的 Java 软件包名称,例如:
sudo yum remove java-1.8.0-openjdk

注意:如果您手动安装了 Java,则可以通过删除 Java 安装目录中的文件和目录来卸载 Java。但是,由于安装方式可能不同,因此可能需要不同的步骤来卸载手动安装的 Java。

以下使用 tar.gz 包手动安装 Java JDK

  1. 下载适用于Linux的Java JDK tar.gz包,这里使用的是华为镜像https://repo.huaweicloud.com/java/jdk/
  2. 在终端中转到您下载Java JDK tar.gz包的目录,并使用以下命令解压缩该文件:
wget https://repo.huaweicloud.com/java/jdk/11+28/jdk-11_linux-x64_bin.tar.gz
tar -zxvf jdk-xxx-linux-x64.tar.gz
  1. 将解压缩的文件夹移动到 /usr/local 目录下:
sudo mv jdk-xxx /usr/local/
  1. 配置Java环境变量。打开 vim /etc/profile 文件并添加以下行:
export JAVA_HOME=/usr/local/jdk-xxx
export PATH=$JAVA_HOME/bin:$PATH
  1. 在终端中运行以下命令以重新加载 profile 文件:
source /etc/profile
  1. 检查Java安装是否成功。在终端中输入以下命令:
java -version

如果Java已成功安装,则会显示Java版本信息。

Slave 主机配置(Server)

以下配置和运行使用的是 Slave1 主机,Slave2 主机配置雷同,需要注意 IP

网络配置

开启防火墙时端口配置

在 JMeter 分布式环境中,需要打开以下端口

  1. RMI 注册表端口:默认为 1099,可以在 jmeter.properties 文件中进行更改。
  2. RMI 服务器通信端口:默认为随机端口,可以在 jmeter.properties 文件中进行更改。
  3. JMeter 服务器节点之间的通信端口:默认为 4000,可以在 jmeter.properties 文件中进行更改,${service.rmi.localport=4000}。
  4. 4444端口:用于Master和Slave之间的命令传输和控制信息传输,例如启动测试、停止测试等操作。
  5. 4445端口:用于Master向Slave发送测试脚本和数据文件。
  6. 4446端口:用于Slave向Master发送测试结果和日志文件。

请注意,这些端口是默认端口,如果您在 jmeter.properties 文件中更改了这些端口,则需要相应地打开新端口。此外,如果您在防火墙中启用了防火墙,则还需要允许这些端口通过防火墙。

操作指令

# 1. 打开防火墙
sudo systemctl start firewalld

# 2. 添加防火墙规则
sudo firewall-cmd --add-port=1099/tcp --permanent
sudo firewall-cmd --add-port=60000/tcp --permanent
sudo firewall-cmd --add-port=4444/tcp --permanent
sudo firewall-cmd --add-port=4445/tcp --permanent
sudo firewall-cmd --add-port=4446/tcp --permanent
# 这将在防火墙中添加永久规则,允许 TCP 流量通过这些端口。
# 在运行指令中会讲到这个端口的作用

# 3. 重新加载防火墙配置
sudo firewall-cmd --reload

# 4. 验证端口是否已打开
sudo firewall-cmd --list-ports

关闭防火墙

关闭防火墙后端口配置就简单的多了,但是安全风险也随之增减,不建议在生产环境关闭防火墙。

systemctl stop firewalld.service		# 关闭防火墙

运行指令

在 Slave1 主机启动 Server

jmeter-server -Djava.rmi.server.hostname=192.168.75.140 -Dserver_port=1099 -Dserver.rmi.localport=60000

# 指令说明
-Djava.rmi.server.hostname:当前主机使用的IP,多网卡时需要指定此参数
-Dserver_port:Slave 主机与 Master 主机的监听端口
-Dserver.rmi.localport:服务端端口号,Slave 主机接收到 Master 主机的任务后通过此端口进行通信,如果不配置此参数端口号是随机的,这里使用 60000 因为前面防火墙开启的是 6000 端口。

Master 主机配置

端口配置

在 JMeter 分布式测试环境中,JMeter Master 主机需要使用以下端口:

  1. RMI 注册端口 - JMeter Master 通过 RMI 注册端口监听 JMeter Server 的注册请求,通常为默认端口 1099。你可以在 jmeter.properties 文件中配置一个不同的端口号。
  2. JMeter Server 端口 - JMeter Master 通过此端口向 JMeter Server 发送请求。默认端口号为 4445,你也可以在 jmeter.properties 文件中配置一个不同的端口号。
  3. 控制台 Web 端口 - 该端口用于在 JMeter Master 主机上运行的 JMeter 控制台。默认端口为 8080,你可以在 jmeter.properties 文件中配置一个不同的端口号。

如果在 JMeter Master 主机上启用了防火墙,则需要打开上述端口,以允许来自 JMeter Server 和 JMeter 客户端的流量通过。你可以使用以下命令向防火墙添加相应的规则:

# 1. 打开防火墙
sudo systemctl start firewalld

# 2. 添加防火墙规则
sudo firewall-cmd --zone=public --add-port=1099/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4445/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 3. 重新加载防火墙配置
sudo firewall-cmd --reload

# 4. 验证端口是否已打开
sudo firewall-cmd --list-ports

添加远程节点

在 Master 主机中添加 Slave1 和 Slave2 远程节点。

Master 端配置 remote_host 时在 jmeter.properties 中完成

# filePath: apache-jmeter-x.x\bin\jmeter.properties
#remote_hosts=127.0.0.1
remote_hosts=192.168.75.140:1099,192.168.75.141:1099

如果 Slave 端口有变化,IP 地址后就需要带上端口号,默认为 1099,此处可以使用域名或主机名代替,只要能够在网络中确定主机地址即可。

配置 SSL (可忽略)

%JMETER_HOME%/bin/目录下有create-rmi-keystore.bat、
create-rmi-keystore.sh两个文件,分别是Windows与Linux下生成密
钥及证书的脚本。本例在Master机器执行此脚本。
在这里插入图片描述
上述代码清单是本例生成证书的交互过程,其中first and last name必须是rmipassword必须是changit,否则,就需要去修改
jmeter.properties文件有关SSL的配置。如果仅是用于内网测试,沿
用默认配置是最方便的。

当Master主机上配置成功后会输出以下语句:

Copy the generated rmi_keystore.jks to jmeter/bin folder or reference it in property 'server.rmi.ssl.keystore.file

按照提示将 Master主机中的 jmeter/bin/rmi_keystore.jks 文件复制到 Slave 主机的 jmeter/bin 目录下。

在 Master 端执行

GUI 运行

在这里插入图片描述
注意:在 jmeter.properties 文件完成 remote_hosts 配置后需要重启 JMeter 才会显示可以远程运行的 Slave 主机。

非 GUI 运行

在非 GUI 运行模式下可以不用配置 jmeter.properties 文件中的 remote_host ,在执行时使用 -R 参数指定 Slave 机器。

jmeter -n -t <脚本.jmx> -R <Slave1IP>, <Slave2IP>

测试监听

非GUI方式运行JMeter来制造负载时,对于测试结果的监听是十分简陋的,仅仅是在控制台打印,或者存到文件,并不能实时地监控到结果,这种状况当然是不能忍的。近年来,时序数据库崛起,辅以Dashboard工具,它们能够高效地对监控数据进行展示。例如,Prometheus+Grafana的组合在原生云的监控中占据大的份额,JMeter的测试结果可以利用Influx+Grafana的组合来监控。

安装 Docker 环境

Doument: https://docs.docker.com/engine/install/centos/

安装 influxdb 和 grafana

通过 Docker 的方式搭建 InfluxDB 和 Grafana 环境的步骤如下:

  1. 安装 Docker 和 Docker Compose

确保你的系统已经安装了 Docker 和 Docker Compose。你可以参考 Docker 的官方文档进行安装。

  1. 创建 Docker Compose 配置文件

在本地创建一个名为 docker-compose.yml 的 Docker Compose 配置文件,并将以下内容复制进去:

version: '3'
services:
  influxdb:
    image: influxdb
    ports:
      - "8086:8086"
    environment:
      - INFLUXDB_DB=mydb
      - INFLUXDB_ADMIN_USER=admin
      - INFLUXDB_ADMIN_PASSWORD=admin
      - INFLUXDB_USER=myuser
      - INFLUXDB_USER_PASSWORD=mypassword
      - INFLUXDB_BUCKET=my-bucket
    volumes:
      - influxdb:/var/lib/influxdb
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    depends_on:
      - influxdb
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
volumes:
  influxdb:

这个配置文件定义了两个服务:InfluxDB 和 Grafana。其中 InfluxDB 使用 influxdb 镜像,Grafana 使用 grafana/grafana 镜像。

  1. 启动 Docker Compose

在本地的命令行中进入配置文件所在的目录,然后执行以下命令启动 Docker Compose:

docker-compose up -d

这个命令会启动 Docker Compose,并且将所有的容器在后台运行。

  1. 访问 Grafana 界面

在浏览器中访问 http://<服务器IP地址>:3000/,即可进入 Grafana 的登录界面。默认用户名和密码都是 admin。
在浏览器中访问 http://<服务器IP地址>:8086/,即可进入 Influx 的登录界面。需要配置用户和用户密码。

配置 InfluxDB

参考:https://qainsights.com/jmeter-integration-with-influxdb-2-0/

  1. 创建用户
    在这里插入图片描述
  2. 获取 需要的令牌
  • LOAD YOUR DATA >> API TOKENS >> GENERATE API TOKEN >> All Access Token
    在这里插入图片描述
  • 输入 token 名称 >> SAVE
    在这里插入图片描述
  • 复制 token 一定要记住 重要
    在这里插入图片描述
  1. Jmeter 设置
  • 启动 JMeter,并打开您将要执行的测试计划。通过右键单击Thread Group > Add > Listener > Backend Listener 添加后端侦听器。
    在这里插入图片描述
  • 配置后端监听器
    在这里插入图片描述
  • 查看数据库结构
    在这里插入图片描述

配置 Grafana

在 Grafana 中添加 InfluxDB 数据源,并创建 Dashboard。

账户名和密码默认为:admin

  1. 添加 influx 数据库
    在这里插入图片描述
    在这里插入图片描述
  2. 配置数据库信息并验证
    在这里插入图片描述
  3. 查看仪表盘
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值