1.声明
当前内容主要用于本人学习和复习之用,当前内容主要为Nodes的操作
当前内容来源:RabbitMQ官方文档
2.查看命令
- 查看集群状态 (cluster_status)
- 加入指定的集群主节点 (join_cluster)
- 移除集群中的指定节点 (forget_cluster_node)
- 改变节点类型 (change_cluster_node_type)
- 重命名节点的名称 (rename_cluster_node)
- 更新集群节点 ( update_cluster_nodes)
- 强制启动某个已失联的节点 (force_boot)
- 强制某个节点重置 (force_reset)
3.测试命令
1.查看集群状态
./rabbitmqctl cluster_status
2.移除指定节点(node1)(注意移除的节点必须是从节点)
./rabbitmqctl forget_cluster_node rabbit@node1
报错:说rabbit@node1节点在被移除之前必须要先使用stop_app操作
在node1中执行:./rabbitmqctl stop_app
ui界面
然后开始移除集群节点node1
./rabbitmqctl forget_cluster_node rabbit@node1
移除成功,查看ui界面
此时发现当前的node3节点中的集群显示为两个了,那个node1节点已近被移除了(说明必须让节点停止rabbit然后才能移除
)
3.将刚才已近移除的node1重新加入到集群中
./rabbitmqctl join_cluster rabbit@node3
./rabbitmqctl start_app
加入和启动成功,查看ui界面
4.修改node1节点的节点类型(从disk变成ram)
./rabbitmqctl change_cluster_node_type ram
结果报错
说这个命令应该在rabbit程序停止的时候执行,此时停止node1的节点,并执行改变当前节点类型
然后重新启动该节点:./rabbitmqctl start_app
,再次查看集群的类型
这说明:如果要修改一个集群节点的类型,必须先停止该节点的rabbit,然后在执行修改节点类型,最后启动即可完成
5.重命名节点名称node1为node1update
./rabbitmqctl rename_cluster_node 'rabbit@node1' 'rabbit@node1update'
报错
停止该节点:
./rabbitmqctl stop
重命名
./rabbitmqctl rename_cluster_node 'rabbit@node1' 'rabbit@node1update'
但是失败了。。。(解决后写在这里)
6.更新集群节点 ( update_cluster_nodes)
./rabbitmqctl update_cluster_nodes rabbit@node1
这里也需要停止要更新的节点,并且要指定与哪个节点同步数据
7.强制启动某个节点 (force_boot)
将当前的node1节点使用:./rabbitmqctl stop_app
,进行停止,然后再让node1强制启动
./rabbitmqctl force_boot
发现没有任何作用
9.重置node1
./rabbitmqctl force_reset
发现使用了force_reset后该节点再次启动(使用stop也是一样)的时候不会加入集群中了!
使用重新加入:./rabbitmqctl join_cluster rabbit@node3
,结果
Node rabbit@node3 thinks it\'s clustered with node rabbit@node1, but rabbit@node1 disagrees
这里产生了,node3想让这个node1加入集群中,但是node1没有同意!
尝试更新状态(在node1中执行)
./rabbitmqctl update_cluster_nodes rabbit@node3
发现成功
这说明了:如果让一个节点执行force_reset,那么再次启动的时候。是不能加入到集群中的,必须执行更新同步状态才能再次加入集群!
4.总结
1.集群中的操作中,使用forget_cluster_node将一个节点移除集群,使用join_cluster方式将已近移除的节点加入集群
2.使用force_reset将节点数据重置后,那么该节点启动后不能加入集群,需要同步数据才行
3.可以通过修改节点的类型方式改变集群类型,可以是disc和ram(使用ram的时候更加占用内存)
4.注意操作集群的时候很多时候都需要stop或者stop_app
以上纯属个人见解,如有问题请联本人!