Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
rabbitmq [2015/12/08 11:50]
steve [Creating a Cluster]
rabbitmq [2015/12/08 12:11]
steve [Creating a Cluster]
Line 60: Line 60:
  
 A cluster can be created with more than one node. You will first create one instance which will act as the primary node, and then additional ones after that. Any time that a node is added to a running cluster, it will remove all the data currently in the primary node. A cluster can be created with more than one node. You will first create one instance which will act as the primary node, and then additional ones after that. Any time that a node is added to a running cluster, it will remove all the data currently in the primary node.
 +
 +One thing that is interesting and may be different to the user, is that RabbitMQ does not contain the settings for the cluster a config file. The cluster itself keeps track of who the nodes are, so there are no special settings that need to be added in ''/​etc/​rabbitmq/​rabbitmq.config''​.
  
 In this example, there will be two nodes only. A primary node which will start as normal using the default configuration,​ and then a secondary node which will be added to the first, therefore creating a cluster. In this example, there will be two nodes only. A primary node which will start as normal using the default configuration,​ and then a secondary node which will be added to the first, therefore creating a cluster.
 +
 +The server hostnames used here are ''​rabbitmq1''​ and ''​rabbitmq2''​.
  
 First of all, start rabbitmq as normal on both of the nodes. First of all, start rabbitmq as normal on both of the nodes.
Line 88: Line 92:
  
 On the second node, the RabbitMQ service is already running as normal, from when we started it earlier. Now, we need to tell rabbitmq to stop the application -- not the service -- so that we can join it to the primary node. On the second node, the RabbitMQ service is already running as normal, from when we started it earlier. Now, we need to tell rabbitmq to stop the application -- not the service -- so that we can join it to the primary node.
 +
 +Stop the app on the second node:
  
 <​code>​ <​code>​
 rabbitmqctl stop_app rabbitmqctl stop_app
 +</​code>​
 +
 +Next, edit the ''/​var/​lib/​rabbitmq/​.erlang.cookie''​ value on the secondary node as well.
 +
 +Join the secondary node to the first, creating the cluster. This will flush the data on the primary node as well:
 +
 +<​code>​
 +rabbitmqctl join_cluster rabbit@rabbitmq1
 +</​code>​
 +
 +<​code>​
 +Clustering node '​rabbit@rabbitmq2'​ with '​rabbit@rabbitmq1'​ ...
 +...done.
 +</​code>​
 +
 +Finally, start the app again using ''​rabbitmqctl''​ on the second node:
 +
 +<​code>​
 +rabbitmqctl start_app
 +</​code>​
 +
 +You can check the status of the cluster as well:
 +
 +<​code>​
 +rabbitmqctl cluster_status
 +</​code>​
 +
 +<​code>​
 +Cluster status of node '​rabbit@rabbitmq2'​ ...
 +[{nodes,​[{disc,​['​rabbit@rabbitmq1','​rabbit@rabbitmq2'​]}]},​
 + ​{running_nodes,​['​rabbit@rabbitmq1','​rabbit@rabbitmq2'​]},​
 + ​{partitions,​[]}]
 +...done.
 </​code>​ </​code>​