开始独立节点
集群是通过重新配置现有的RabbitMQ节点到集群配置来设置。因此,第一步是在正常方式启动RabbitMQ的所有节点:
rabbit1$ rabbitmq-server -detached
rabbit2$ rabbitmq-server -detached
rabbit3$ rabbitmq-server -detached
这将创建三个独立的RabbitMQ中间件,一个在每个节点上,用来确认的cluster_status命令:
rabbit1$ rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit1 ...
[{nodes,[{disc,[rabbit@rabbit1]}]},{running_nodes,[rabbit@rabbit1]}]
...done.
rabbit2$ rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit2 ...
[{nodes,[{disc,[rabbit@rabbit2]}]},{running_nodes,[rabbit@rabbit2]}]
...done.
rabbit3$ rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit3 ...
[{nodes,[{disc,[rabbit@rabbit3]}]},{running_nodes,[rabbit@rabbit3]}]
...done.
RabbitMQ中间件的节点名称从rabbitmq-server shell脚本开始,
rabbit@shorthostname ,这个短节点名称是小写(如:rabbit@rabbit1) 。如果你用rabbitmq-server.bat批处理文件,这个短节点名字是大写(rabbit@RABBIT1) 。当你键入节点名称时,重要情况,这些字符串必须匹配。
创建集群
为了在集群中连接起来3个节点,我们告诉2个节点: rabbit@rabbit2 和 rabbit@rabbit3加入集群的第三个, rabbit@rabbit1 。
我们首先连接 rabbit@rabbit2 和 rabbit@rabbit1 在集群里。为了实现这个,我们停止rabbit@rabbit2 的RabbitMQ应用,加入rabbit@rabbit1 集群,然后重启RabbitMQ应用。
注意:加入一个集群节点隐式重置,因此,移除了以前存在于该节点上的所有资源和数据。
rabbit2$ rabbitmqctl stop_app
Stopping node rabbit@rabbit2 ...done.
rabbit2$ rabbitmqctl join_cluster rabbit@rabbit1
Clustering node rabbit@rabbit2 with [rabbit@rabbit1] ...done.
rabbit2$ rabbitmqctl start_app
Starting node rabbit@rabbit2 ...done.
我们在任意一个节点上通过运行cluster_status命令看到2个节点加入到集群了:
rabbit1$ rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit1 ...
[{nodes,[{disc,[rabbit@rabbit1,rabbit@rabbit2]}]},
{running_nodes,[rabbit@rabbit2,rabbit@rabbit1]}]
...done.
rabbit2$ rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit2 ...
[{nodes,[{disc,[rabbit@rabbit1,rabbit@rabbit2]}]},
{running_nodes,[rabbit@rabbit1,rabbit@rabbit2]}]
...done.
现在我们加入 rabbit@rabbit3 到同一个集群。步骤与上面的步骤相同,只是这次我们集群rabbit2来证明选择的节点没有集群关系–它足以提供一个在线节点,并且该节点将集群到指定节点所属的集群中。
rabbit3$ rabbitmqctl stop_app
Stopping node rabbit@rabbit3 ...done.
rabbit3$ rabbitmqctl join_cluster rabbit@rabbit2
Clustering node rabbit@rabbit3 with rabbit@rabbit2 ...done.
rabbit3$ rabbitmqctl start_app
Starting node rabbit@rabbit3 ...done.
我们在任意一个节点中通过运行cluster_status命令看到三个节点已经加入到集群了: