Skip to the content.

Table of Contents:

  1. Basic usage
  2. Running experiments with baremetal

1. Basic Usage:

We provide two convenience scripts in order to generate the required images for each application together with their deployment file. Note that you will need to have the kollaps and kollapsdeploymentgenerator images available, to build them follow the instructions in the installation section

Generating a topology file:

Inside each application’s folder, you will find a sample topology.xml that specifies the topology to be emulated. Feel free to modify those at will, in particular, if you are interested in experimenting with different network shapes, modify the <bridges> and links section. The <dynamic> section can be used to simulate dynamic behavious of the experiment.

Check our pages for creating different experiments simple dynamic baremetal.

Once you are happy with your topology file, you can generate the .yaml required for the deployment using the following command for Docker Swarm deployments:

./KollapsDeploymentGenerator ./<app_name>/topology.xml -s <your_experiment_name>.yaml

Or the following one for Kubernetes (note that we just change the flag):

./KollapsDeploymentGenerator ./<app_name>/topology.xml -k <your_experiment_name>.yaml

You must always be in a shell with sudo swapoff –a active when using Kubernetes.

Deploying an experiment:

The images referenced by the .xml must already be built using dockerbuild, if you are using the supported applications (iperf3,iperf3network,redis,memcached,cassandra) they can be built using the KollapsAppBuilder.

If using kubernetes run before building the apps:

eval $(minikube docker-env)  
cd examples
./KollapsAppBuilder <app_name>

Lastly, you just need to deploy the experiment.

If you are using Docker Swarm as orchestrator:

docker stack deploy -c <your_experiment_name>.yaml <deployment_name>

If you are using Kubernetes:

kubectl apply -f experiment.yaml

Interacting with a running experiment:

The easiest way to interact with the experiments is through the dashboard through a web browser. You can also exec into the containers as needed but we do not detail this here.

After deploying the Compose/Manifest file, the containers are started up and establish a connection to the Dashboard. As soon as all containers are shown as ready, you can start the experiment. Click start or curl <dashboard IP>:8088/start to start the experiment.

After this point the experiment will run, following the schedule in the topology description file, if any. You can observe/measure the performance of the application using the usual tools.

On Swarm, the Dashboard is accessible on http://127.0.0.1:8088.

On Kubernetes, there is no port mapping from the container to the minikube. To find the allocated IP address of the dashboard, run minikube ip and . Copy the IP address shown and open <IP>:30007 in your browser.

Safely stopping an experiment:

Clicking “stop” will stop the applications and ensure a clean shutdown of the experiment. On the command line, curl http://<Dashboard IP>:8088/stop.

On Swarm, remove the containers with:

$ docker stack rm <deployment_name>

On Kubernetes:

$ kubectl delete -f <your_experiment_name>.yaml

Baremetal

After following the steps on Baremetal Installation.

Start the dashboard on a machine with ssh access to the others with.

docker run -d --name dashboard --network host dashboard:2.0

The Dashboard will be available at 0.0.0.0:8088.

Dashboard Commands

The Dashboard now has 3 commands. Always run INITIALIZE BAREMETAL first before using the START command.

Command Action
INITIALIZE BAREMETAL which will start Kollaps on the remote machines.
START which will start the script if the user provides one.
STOP which will stop the emulation.

When you are finished run

docker stop dashboard