cluster-manager is a component Onedata services (including Oneprovider and Onezone), which coordinates the cluster-worker instances on a single Onedata deployment.
The role of cluster-manager is to:
- supervise cluster-worker nodes (monitoring and restarting workers)
- support the load-balancing algorithm for internal requests
- coordinate communication between cluster-workers
cluster-manager is a helper application for cluster-workers. Thus, it should not be used as a standalone application but always as dependency of cluster-worker. For testing purposes, it may be started in 2 ways:
Inside Erlang Virtual Machine using command “application:start(cluster_manager)”. It requires only compiled code at path of Erlang Virtual Machine. From shell using script “cluster_manager” with argument “console” or “start”. To generate start script, release of application must be created.
To prepare cluster-manager script:
- Use command "make submodules" to initialize submodules
- Use command “./make.py” to generate release.
- Use “./make.py compile” to compile code only (faster than building release).
To provide HA, more than one cluster-manager instance should be started. Started instances should be configured to form Erlang distributed application.
cluster-manager is implemented as an Erlang gen-server and exposes standard gen-server API. Thus, communication with cluster-manager is only possible from Erlang nodes which have same cookie (see http://erlang.org/doc/reference_manual/distributed.html - 13.7 Security)
Onedata is a multi-cluster solution composed from various types of worker nodes. cluster-manager instances orchrestrate the work of a single Onedata cluster.