Skip to content
/ manada Public

Manada is a distributed configuration service that works with multicast discovery.

License

Notifications You must be signed in to change notification settings

j8la/manada

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Manada

GitHub release GitHub issues Docker Stars GitHub license

Introduction

Manada is a Node JS application that aims to maintain a distributed configuration store in JSON format, on the network, and is specially designed to working in Docker containers. Manada finds each instance on the network with multicast discovery system and builds a list, the cluster, that will be used to update or replicate the store.

Manada provides, on each instance, a REST API to update the store, serve datas, check the status, get members ... Apart from multicast discovery, communication between each instance is realized through the REST API.

The REST API is provided over HTTPS only and has a HTTP basic authentication.

Please note that new Manada releases, since the 0.9.0, are not compatible with earlier versions because the changes are too significant : new REST API, different provisioning mode, no more limits with JSON structure... This remark is also valid for the web client.

Manada scheme

Network

The 2900/UDP port is used for discovery and 8000/TCP port is used for REST API communication between instances and for client requests.

Multicast and Docker are problematic for now, so only one Manada instance must be used by host with the --net=host option when starting container. This can evolve in the future with next Docker releases (i really hope). The ultimate goal would be to use Manada with the network overlay driver.

Good news, Manada Docker container and multicast are working perfectly with Weave Net. In this case, you must use --net=weave. This configuration is described in the wiki documentation.

WeaveNet

Store

The store is a JSON structure on which you have full control via the REST API. The only limitations you have are the JSON limitations.

At each start, Manada loads its own store copy from a file and if another instance is found, updates it. The store datas are not read from file but from memory, the file is only used as backup.

The store.json file is located in the folder where is executed Manada. If it does not exist, it is automatically created.

Request and update the store

Since 0.7.x version, you can read and write on each Manada instance. This became possible since an instance replicates only an object and no more entirely the store. For now, a scenario with numerous concurrent writes on several instances has not been tested and other improvements can still be made. You can still use a single point to manage the connection redundancy to the store with the list of members returned through the REST API.

Manada example

The development is quite young and improvements are planned. A graphical client prototype will be available soon on another repository.

Check the documentation for more informations.

=====

Copyright (c) 2016 Manada by Julien Blanc

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/

About

Manada is a distributed configuration service that works with multicast discovery.

Resources

License

Stars

Watchers

Forks

Packages

No packages published