5.3. How the Deployment Manager Works


VoltDB Home » Documentation » Administrator's Guide

5.3. How the Deployment Manager Works

The deployment engine runs as a background process, accessible both to operators — through the web or REST interfaces — and to other servers running the deployment engine. For example, say you start the deployment engine on three servers: A, B, and C. You can connect to any one of those servers, define a database, add the other two servers to the cluster and press start, to start a three node database cluster. Note that you only need to connect to one of the servers. That deployment engine takes care of communicating with the servers in the cluster.

What happens is that when you add a server to the database definition, that servers sends the full database configuration information to the other servers that are defined part of the cluster. Similarly, when you issue a start command on server A, it takes care of coordinating starting the database process on the other servers, through their deployment engines.

By default, when you connect to a server running the deployment engine, it automatically defines one cluster with one node: the server you are connected to. By issuing the start command you start a one node cluster with the default configuration options, just as if you had run the voltdb init and voltdb start commands from a command line on that node.

Alternately, you can add more servers to that database definition, as in the diagram. Since the database definitions are automatically copied between the servers whenever a change is made, it doesn't matter which node you are connected to — you can connect to any server defined as part of the cluster to perform deployment tasks.

In fact, you can define multiple databases and the server you are connected to does not even need to be a member of any of those databases, just as long as it has VoltDB installed and the deployment engine daemon running. So you could use one server simply as an administration hub that manages the deployment of databases on other servers.

However, one important point to take note of is that whenever you make a change through one deployment engine, all database definitions from that server are then copied to any server defined as part of the database. So if you connect to the Deployment Manager on two servers and make changes simultaneously, one change will overwrite the other.