A tool to test the performance of MariaDB, Galera and CockroachDB with OpenStack using enoslib
On a Grid'5000 frontend:
git clone https://github.com/Marie-Donnie/juice.git
cd juice
virtualenv -p python3 venv
source venv/bin/activate
pip install -U pip
pip install -r requirements.txt
There is a sample configuration you can use cp conf.yaml.sample conf.yaml
You can then change conf.yaml according to your needs. For instance,
change the value of database from cockroachdb to mariadb or galera to go
with the mariadb or a galera replicated database.
Launch with ./juice.py deploy
.
Once it has been launched, you can destroy the containers using ./juice destroy
and then restart them with ./juice deploy
.
In the experiments folder you'll find different scenarios you can tweak to accomodate to your needs. For example, if you want to test the impact of latency on the cluster:
cd experiments
python latency-impact.py
Use ./juice.py info
to get informations about current environment. You can format the results into json, yaml and pickle using ./juice.py info --out <format>
.
You can launch sysbench tests afterwards using ./juice stress
.
- Launch devstack (only Keystone service) using
./juice openstack
. This will deploy Keystone on every database nodes. (- Note from 02/22/18 - this is a bit unstable for now, you may have to use it several times until it succeeds. You can check the logs using the command ansible will provide you before launching stack.sh) - You can use either
./juice.py rally --files <service-name>/<scenario>
to launch one or several specific scenarios or./juice.py rally --directory <service-name>
to launch every scenarios for the given service.- tip1: you can use
./juice.py rally --directory .
to launch every scenarios - tip2: you can use
./juice.py rally
to execute every keystone scenarios
- tip1: you can use
There are two data sources for Grafana, using InfluxDB: collectd (only for MariaDB currently) and cAdvisor.
To monitor activity on your databases:
- Open a ssh tunnel in a shell using
ssh -NL 8080:<control-node>:3000 <location-of-the-node>.g5k
(assuming you have followed Grid'5000 tutorial). You can check which node is used using./juice.py info
and find control node. - Go to http://localhost:8080/ in your browser
- You can check your data sources in Configuration -> Data Sources
- There are several dashboard you can import for cadvisor and collectd:
- Service - MySQL InnoDB Metrics provides performance metrics about MariaDB Innodb engine
- Service - MySQL Metrics provides performance metrics for MariaDB
- For cAdvisor, you have to make your own dashboards using whatever metrics you need because the one made for cAdvisor/InfluxDB does not work with Juice
You can emulate different constraints on the network with emulate by changing the juice.py (or directly in the experiment file if you use one). The constraints look like that:
tc = {
"enable": True,
"default_delay": "0ms",
"default_rate": "10gbit",
"constraints": [{
"src": "database",
"dst": "database",
"delay": "0ms",
"rate": "10gbit",
"loss": "0",
"network": "database_network",
}],
"groups": ['database'],
}
The constraints are applicable to a specific network (network) for different roles (src and dst). You can change the delay, rate and packet loss of the network. There are also global choices for the network, with a default delay and rate, applicable if need be on specific roles.
Backup important metrics using ./juice.py backup
.
The destroy tasks, called with ./juice.py destroy
removes all dockers and unmount volumes.
Tool to test the performances of MariaDB, Galera and CockroachdB with OpenStack on Grid'5000 using Enoslib
Usage:
juice [-h | --help] [-v | --version] <command> [<args>...]
Options:
-h --help Show this help
-v --version Show version number
Commands:
deploy Claim resources from g5k and configure them
openstack Add OpenStack Keystone to the deployment
rally Benchmark the Openstack
stress Launch sysbench tests (after a deployment)
emulate Emulate network using tc
backup Backup the environment
destroy Destroy all the running dockers (not the resources)
info Show information of the actual deployment
Run 'juice COMMAND --help' for more information on a command