Symmetry - A cluster management system for micro-clusters
Project description
symmetry
Cluster management tool for the MC2.
Build
To create a virtual environment and install the requirements, run (by default it uses python3.7, you can change that
in the Makefile variable VENV_BIN)
make venv
Build the Docker image for local use (may need sudo)
make docker-build
Run Symmetry with Docker
Populate etc/nodes.ini with the information from your cluster.
The application can then be started with
make start
And point your browser to http://localhost:5000/ui/dashboard
Stop with
make stop
Both commands use docker-compose on docker/symmetry/docker-compose.yml, and may need sudo
Run Symmetry components manually
Prerequisites
Make sure the virtualenv is activated
source .venv/bin/activate
Symmetry publishes and reads telemetry data to and from redis, so you need a running redis instance first:
redis-server
Start the telemetry deamon
Start the telemetry daemon in the activated virtualenv via
python -m symmetry.cli.telemd
telemd also takes various arguments to control runtime aspects (activate the -h flag).
For exampe, to disable power monitoring and probe nodes every 0.5 seconds, run
python -m symmetry.cli.telemd --power-disable --agent-interval=.5
You can verify that the telemetry daemon sends data by suscribing to the topic via the redis CLI:
redis-cli psubscribe "telemetry:*"
Start the cluster deamon
Start the cluster daemon (which controls the cluster state)
python -m symmetry.cli.clusterd
Websocket server
To start the websocket server for the dashboard:
python -m symmetry.cli.websocket
The websocket is running on port 8082 and automatically connects to the local redis-server on localhost:6379.
Connect with ws://ip:8082/topic to receive all published messages for the given topic.
Run the dashboard
Serve the app with gunicorn
gunicorn -w 4 --preload -b 0.0.0.0:5000 \
-c symmetry/webapp/gunicorn.conf.py \
symmetry.webapp.wsgi:api
Point your browser to http://localhost:5000/ui/dashboard.
Using Symmetry
Creating services
To create a new service in the cluster a POST request must be sent to the
api/services/{service_id} endpoint, with service_id being the new service.
The POST request has one optional
(tar-exported docker image) and one mandatory (service
description) body element.
The service description is structured this way:
%YAML 1.2
---
id: #must be same id as in endpoint
maintainer: #the uploader of the service
name: #"Pretty" version of the name
version: #any version number
description: #simple description
image_tag: #if docker image uploaded then this tag must be provided by the image. otherwise it is pulled
port: #the port which is exposed by the service
After correct execution the answer should look somewhat like this:
{
"name": "Test Service",
"version": "1.0.0",
"desc": "This is a simple test_service",
"maintainer": "silvio",
"10.0.0.3": "1"
}
Other Client Scripts
Recording telemetry data
You can use the telemetry client cli.telemc to consume telemetry data in
various ways.
# prints to system out
python -m symmetry.cli.telemc
# writes to a csv file
python -m symmetry.cli.telemc --file /tmp/telemetry-results.csv
Arduino Power Meter
To sample wattage from the arduino power monitor every 0.5 seconds call:
python -m symmetry.cli.power --interval 0.5
This will write the data into the Redis instance like the telemetry daemon.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mc2-symmetry-0.4.0.tar.gz.
File metadata
- Download URL: mc2-symmetry-0.4.0.tar.gz
- Upload date:
- Size: 49.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ed8825921749264102023b3886018ba560dec8928f8022a9151e16a17a17fc3
|
|
| MD5 |
b8bf690553b3b96c148239e52ff45eb4
|
|
| BLAKE2b-256 |
0f05b1a7e151dcb177668a886b25686edb12856d24f10f9e7067f86da1162b97
|
File details
Details for the file mc2_symmetry-0.4.0-py3-none-any.whl.
File metadata
- Download URL: mc2_symmetry-0.4.0-py3-none-any.whl
- Upload date:
- Size: 69.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91bb49e2411e61bb099a01500d1c8cb40b3bbd498de28e7df2944af967d3753f
|
|
| MD5 |
04d8f6bc45fe83a8f57df2fa1202c41f
|
|
| BLAKE2b-256 |
450c060ae9f1b26c4f9a9205a065711096fa3bbb54991474d740d5001a4132b4
|