4.2. Adding nodes to your cluster

Adding nodes to your cluster is easy and requires a single command with two parameters:

  1. A node name which must match the output of uname -n
  2. The IP address of the node.

    Note. If DNS is configured properly, the tab-completion of drbdmanage is able to complete the IP of the given node name.

# drbdmanage add-node bravo 10.43.70.3

Here we assume that the command was executed on node alpha. If the root user is allowed to execute commands as root on bravo via ssh, then the node bravo will automatically join your cluster.

If ssh access with public-key authentication is not possible, drbdmanage will print a join command that has to be executed on node bravo. You can always query drbdmanage to output the join command for a specific node:

# drbdmanage howto-join bravo
# drbdmanage join -p 6999 10.43.70.3 1 alpha 10.43.70.2 0 cOQutgNMrinBXb09A3io

4.2.1. Types of DRBD Manage nodes

There are quite a few different types of DRBD Manage nodes; please see the diagram below.

Figure 4.1. DRBD Manage node types

drbdmanage-venn

The rational behind the different types of nodes is as follows: Currently, a DRBD9/DRBD Manage cluster is limited to ~30 nodes. This is the current DRBD9 limit of nodes for a replicated resource. As DRBD Manage uses a DRBD volume itself (i.e., the control volume) to distribute the cluster information, DRBD Manage was also limited by the maximum number of DRBD9 nodes per resource.

The satellites concept relaxes that limit by splitting the cluster into:

  • Control nodes: Nodes having direct access to the control volume.
  • Satellite nodes: Nodes that are not directly connected to to the control volume, but are able to receive the content of the control volume via a control node.

In a cluster there is one special node, which we call the "leader". The leader is selected from the set of control nodes and it is the only node that writes data to the control volume (i.e., it has the control volume in DRBD Primary role). All the other control nodes in the cluster automatically switch their role to a "satellite node" and receive their cluster information via TCP/IP, like ordinary satellite nodes. If the current leader node fails, the cluster automatically selects a new leader node among the control nodes.

Control nodes have:

  • Direct access to the control volume
  • One of them is in the leader role, the rest act like satellite nodes.
  • Local storage if it is a normal control node
  • No local storage if it is a pure controller

Satellite nodes have:

  • No direct access to the control volume, they receive a copy of the cluster configuration via TCP/IP.
  • Local storage if it is a normal satellite node
  • No local storage if it is a pure client

Figure 4.2. Cluster consisting of satellite nodes

satellitecluster

External nodes:

  • Have no access to the control volume at all (no dedicated TCP/IP connection to a control node) and no local storage
  • Gets its configuration via a different channel (e.g., DRBD configuration via scp)
  • These are not the droids you are looking for, if you are not sure if you want to use that type of nodes.

4.2.2. Adding a control node

# drbdmanage add-node bravo 10.43.70.3

4.2.3. Adding a pure controller node

# drbdmanage add-node --no-storage bravo 10.43.70.3

4.2.4. Adding a satellite node

Here we assume that the node charlie was not added to the cluster so far. The following command adds charlie as a satellite node.

# drbdmanage add-node --satellite charlie 10.43.70.4

4.2.5. Adding a pure client node

# drbdmanage add-node --satellite --no-storage charlie 10.43.70.4

4.2.6. Adding an external node

# drbdmanage add-node --external delta 10.43.70.5