This video gives a step by step description to setup a Jmeter dockerized environment for distributed load test
Steps to configure Dockerize Jmeter for higher load
1. Creat Jmeter Docker base file
FROM java:8
RUN wget http://mirror.nbtelecom.com.br/apache...
RUN tar -xvzf apache-jmeter-3.2.tgz
RUN rm apache-jmeter-3.2.tgz
RUN mv apache-jmeter-3.2 /jmeter
ENV JMETER_HOME /jmeter
Add Jmeter to the Path
ENV PATH $JMETER_HOME/bin:$PATH
2. Creat Jmeter Docker master file
FROM java:8
RUN wget http://mirror.nbtelecom.com.br/apache...
RUN tar -xvzf apache-jmeter-3.2.tgz
RUN rm apache-jmeter-3.2.tgz
RUN mv apache-jmeter-3.2 /jmeter
ENV JMETER_HOME /jmeter
Add Jmeter to the Path
ENV PATH $JMETER_HOME/bin:$PATH
3. Creat Jmeter Docker slave file
FROM jmeter-base
WORKDIR $JMETER_HOME
Ports to be exposed from the container for JMeter Master
RUN mkdir scripts
EXPOSE 60000
4. create docker-composer.yml
version: '2'
services:
master:
build: ./jmeter-master
container_name: master
tty: true # tty true make the docker image stay up even with nothing running
networks:
jmeter-network
slave:
build: ./jmeter-slave
tty: true
networks:
jmeter-network
networks:
jmeter-network:
5. Create the env start file and start the environment
#!/bin/bash
COUNT=${1-1}
docker build -t jmeter-base jmeter-base
docker-compose build
docker-compose up -d
docker-compose scale master=1 slave=$COUNT
6. Go inside the container
sudo docker exec -it master /bin/bash
7. create and copy the rmi keystore file and user.properties file and copy the backendlistner
sudo docker exec -i jmeter_slave_1 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_1 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_1 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i jmeter_slave_2 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_2 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_2 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i jmeter_slave_3 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_3 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_3 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i jmeter_slave_4 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_4 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_4 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i jmeter_slave_5 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_5 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_5 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i master sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i master sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i master sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
8. Start jmeter-server in the slave images
9. Run the script from master using the slaves
jmeter -n -t ../scripts/secondscript.jmx -R172.18.0.1,172.18.0.2,172.18.0.3