使用Docker创建JMeter分布式测试基础架构

2021-10-11

跟伙计们群闲聊想到如何分布式压力测试,查阅了些资料,进行简单的实践。
(前两天才装了个ubuntu么,用上了)

在网上找到一个现成的镜像,当然如果你对docker比较熟悉的话,也可以自己做一个,现在这个直接拿来用就好了
执行下面命令获取

sudo docker run -dit --name slave01 vinsdocker/jmserver /bin/bash

image.png

查看镜像文件报错:

docker ps -a
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied

问题分析:

尝试连接到 Docker 守护进程套接字时权限被拒绝

解决问题:

sudo chmod 666 /var/run/docker.sock

想要几个容器修改下名字就可以要几个,我这里先搞3个,主要是分布式压测搭建一个小框架

sudo docker run -dit --name slave02 vinsdocker/jmserver /bin/bash
sudo docker run -dit --name slave03 vinsdocker/jmserver /bin/bash

image.png
为jmeter master创建一个容器

sudo docker run -dit --name master vinsdocker/jmmaster /bin/bash

image.png

获取这些容器的ip地址

sudo docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(sudo docker ps -a -q)

image.png

在sample-test文件夹有一个测试脚本,可以测试下

单机执行脚本测试:

jmeter -n -t sample-test/sample-test.jmx

image.png

分布式执行脚本测试:在后面加上ip地址

jmeter -n -t sample-test/sample-test.jmx -R172.17.0.2,172.17.0.3,172.17.0.4

image.png

jmeter和jmeter slave都在同一台机器上运行。因此,所有系统资源容器共享,所以讲道理这样是不对的,我们应该在不同的机器上部署才行
image.png

总结:

我们的目的是使用docker创建jmeter分布式测试基础架构。使用docker创建测试基础架构并且是快的。将整个基础架构写入一个可以进行版本控制的文件中。然后,我们从文件中创建一个实例(容器)。 docker确保容器拥有所有软件和依赖项。