User Guide
17
We recommend that you have multiple seed nodes configured. After a cluster member is
started, it sends a message to all of its seed nodes. The cluster member then sends a join
command to the first seed node that responds. If none of its seed nodes reply, the cluster
member repeats this process until it successfully establishes a connection or it is shutdown.
What happens after one node becomes unreachable? Do the other two nodes function
normally? When the first node reconnects, does it automatically synchronize with the
other nodes?
After a node becomes unreachable, it remains down for configurable period of time (10
seconds, by default). Once a node goes down, you need to restart it so that it can rejoin
the cluster. Once a restarted node joins a cluster, it will synchronize with the lead node
automatically.
Can you run a two node cluster for functional testing?
For functional testing, yes. For HA testing, you need to run all three nodes.
Setting Up a Multiple Node Cluster
To run an OpenDaylight controller in a three node cluster, do the following:
1. Determine the three machines that will make up the cluster and copy the controller
distribution to each of those machines.
2. Unzip the controller distribution.
3. Navigate to the
<Karaf-distribution-location>
/bin directory.
4. Run Karaf:
./karaf
5. Install the clustering feature:
feature:install odl-mdsal-clustering
Note
To run clustering, you must install the odl-mdsal-clustering feature on each of
your nodes.
1. If you are using the integration distribution of Karaf, you should also install the open
flow plugin flow services:
feature:install odl-openflowplugin-flow-services
2. Install the Jolokia bundle:
install -s mvn:org.jolokia/jolokia-osgi/1.1.5
3. On each node, open the following .conf files:
• configuration/initial/akka.conf
• configuration/initial/module-shards.conf
4. In each configuration file, make the following changes:
a. Find every instance of the following lines and replace
127.0.0.1
with the hostname or
IP address of the machine on which the controller will run: