目的
在出现故障的时候将故障机退出集群后再将新机器加入集群。
环境
登录 66 机子上查看集群状态
$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@TK-RABBITMQ3' ...
[{nodes,[{disc,['rabbit@TK-RABBITMQ2','rabbit@TK-RABBITMQ3']}]},
{running_nodes,['rabbit@TK-RABBITMQ2','rabbit@TK-RABBITMQ3']},
{cluster_name,<<"rabbit@TK-RABBITMQ1">>},
{partitions,[]},
{alarms,[{'rabbit@TK-RABBITMQ2',[]},{'rabbit@TK-RABBITMQ3',[]}]}]
过程
在 64 机器上执行如下操作:
1 将 64 机器加入集群
$ rabbitmqctl join_cluster rabbit@TK-RABBITMQ2
Clustering node 'rabbit@TK-RABBITMQ1' with 'rabbit@TK-RABBITMQ2' ...
2 此时在 65 或 66 任一机子上查看集群状态
$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@TK-RABBITMQ3' ...
[{nodes,[{disc,['rabbit@TK-RABBITMQ1','rabbit@TK-RABBITMQ2','rabbit@TK-RABBITMQ3']}]},
{running_nodes,['rabbit@TK-RABBITMQ2','rabbit@TK-RABBITMQ3']},
{cluster_name,<<"rabbit@TK-RABBITMQ1">>},
{partitions,[]},
{alarms,[{'rabbit@TK-RABBITMQ2',[]},{'rabbit@TK-RABBITMQ3',[]}]}]
此时可以看到在 nodes 中已经存在 rabbit@TK-RABBITMQ1 节点。
3 重新启动rabbitmq应用
$ rabbitmqctl start_app
Starting node 'rabbit@TK-RABBITMQ1' ...
4 查看集群状态
$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@TK-RABBITMQ3' ...
[{nodes,[{disc,['rabbit@TK-RABBITMQ1','rabbit@TK-RABBITMQ2',
'rabbit@TK-RABBITMQ3']}]},
{running_nodes,['rabbit@TK-RABBITMQ1','rabbit@TK-RABBITMQ2',
'rabbit@TK-RABBITMQ3']},
{cluster_name,<<"rabbit@TK-RABBITMQ1">>},
{partitions,[]},
{alarms,[{'rabbit@TK-RABBITMQ1',[]},
{'rabbit@TK-RABBITMQ2',[]},
{'rabbit@TK-RABBITMQ3',[]}]}]
此时可以看到 running_nodes中存在 rabbit@TK-RABBITMQ1 节点。
结论
- 在正在运行的集群中添加节点是可行的
- 需要先添加节点,再启动start_app
更多实验可点击:Rabbitmq 实验