Table of Contents:
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