/jmeter-docker

Docker images for JMeter 3.2

Primary LanguageDockerfile

jmeter-docker

Docker images for JMeter 3.2 master and slave configurations

On a local machine

Bring up slaves

sudo docker run -dit --name slave1 bsmithio/jmeter-slave:latest /bin/bash && \
sudo docker run -dit --name slave2 bsmithio/jmeter-slave:latest /bin/bash && \
sudo docker run -dit --name slave3 bsmithio/jmeter-slave:latest /bin/bash

Bring up master

sudo docker run -dit --name master bsmithio/jmeter-master:latest /bin/bash

Check if they're all running

sudo docker ps -a

Get all of their IP addresses

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

Put a sample test plan in the master container

sudo docker exec -i master sh -c 'cat > /home/jmeter/apache-jmeter-3.2/bin/test.jmx' < test.jmx

Go inside the master container

sudo docker exec -it master /bin/bash

Run the sample test plan

/home/jmeter/apache-jmeter-3.2/bin/jmeter -n -t \
/home/jmeter/apache-jmeter-3.2/bin/test.jmx \
-Djava.rmi.server.hostname=172.17.0.5 \
-Dclient.rmi.localport=60000 \
-R172.17.0.2,172.17.0.3,172.17.0.4

On AWS instances

Create AWS instances with the following security groups:

Port=22         Protocol=tcp    Source=0.0.0.0/0
Port=1099       Protocol=tcp    Source=0.0.0.0/0
Port=50000      Protocol=tcp    Source=0.0.0.0/0
Port=60000      Protocol=tcp    Source=0.0.0.0/0

Install docker on the instances

sudo su -
apt-get update
apt-get install docker.io

Get out of root user

exit

On the slave instances

Where $LOCALIP should be the public IP address of the host.

sudo docker run -dit -e LOCALIP='(slave1 ip)' -p 1099:1099 -p 50000:50000 bsmithio/jmeter-slave:latest /bin/bash
sudo docker run -dit -e LOCALIP='(slave2 ip)' -p 1099:1099 -p 50000:50000 bsmithio/jmeter-slave:latest /bin/bash
sudo docker run -dit -e LOCALIP='(slave3 ip)' -p 1099:1099 -p 50000:50000 bsmithio/jmeter-slave:latest /bin/bash

On the master instance, do

sudo docker run -dit --name master -p 60000:60000 bsmithio/jmeter-master:latest /bin/bash

Copy the test to the master container

curl https://raw.githubusercontent.com/smithbr/jmeter-docker/master/test.jmx > test.jmx

Move the test to the container

sudo docker exec -i master sh -c 'cat > /home/jmeter/apache-jmeter-3.2/bin/test.jmx' < test.jmx

Enter the master container

sudo docker exec -it master /bin/bash

And run the test

/home/jmeter/apache-jmeter-3.2/bin/jmeter -n -t \
/home/jmeter/apache-jmeter-3.2/bin/test.jmx \
-Djava.rmi.server.hostname=(master ip) \
-Dclient.rmi.localport=60000 \
-R(slave1 ip),(slave2 ip),(slave3 ip)