1、集群搭建

转载:https://blog.51cto.com/11134648/2155934

2、集群类型

集群分为普通模式和镜像模式

rabbitmq 进容器 查看队列_重置

rabbitmq 进容器 查看队列_元数据_02

元数据包含一下内容:

队列元数据:队列名称及属性。

交换器:交换器名称及属性。

绑定关系元数据:交换器与队列或者交换器与交换器。

vhost元数据:为vhost内的队列、交换器和绑定提供命名空间及安全属性之间的绑定关系。

rabbitmq 进容器 查看队列_元数据_03

 

rabbitmq 进容器 查看队列_rabbitmq 进容器 查看队列_04

rabbitmq 进容器 查看队列_元数据_05

 

rabbitmq 进容器 查看队列_rabbitmq 进容器 查看队列_06

 

rabbitmq 进容器 查看队列_rabbitmq 进容器 查看队列_07

 

rabbitmq 进容器 查看队列_元数据_08

 

rabbitmq 进容器 查看队列_数据库_09

 

rabbitmq 进容器 查看队列_重置_10

3、常用命令

#查看节点状态
rabbitmqctl status

#停止运行rabbitmq的erlang虚拟机和rabbitmq服务应用
#如果指定了pid_file,还需要等待指定进程的结束。pid_file是通过调用
#rabbitmq-server命令启动rabbitmq服务时创建的,默认情况下存放于
#Mnesia目录中。若使用rabbitmq-sever-detach这个带有-detach后缀
#的命令来启动rabbitmq服务则不会生成pid-file文件。
rabbitmqctl stop [pid_file]

#停止rabbitmq服务应用,但是erlang虚拟机还处于运行状态。此命令
#的执行优先于其它管理操作(这些管理操作需要先停止rabbitmq应用),
#比如rabbitmqctl reset
rabbitmqctl stop_app

#将rabbitmq节点还原到最初状态。
#包括从原来所在集群中删除此节点,从管理数据库中删除所有的配置数
#据,如已经配置的用户,vhost等,以及删除所有的持久化消息。
#执行rabbitmq reset命令前必须停止rabbitmq应用(比如先执行rabbitmqctl stop_app)
rabbitmqctl reset

#强制将rabbitmq节点重置还原到最初状态。此命令不论当前管理数据库
#的状态和集群配置是什么,都会无条件地重置节点,只能在数据库或集群
#配置已经损坏的情况下使用
rabbitmqctl force_reset

#将节点加入到指定集群中。在这个命令执行签需要停止rabbitmq应用并重#置节点
rabbitmqctl [-n nodename] join_cluster {cluster_node}[--ram]
-n nodename:指定需要操作的目标节点,例如:rabbit@node1
cluster_node:需要加入的集群节点名称,格式同上
--ram:集群节点类型,有两种:ram|disc,默认disc
(ram:内存节点,所有的元数据都存储在内存中;disc:磁盘节点,所有的元数据都存储在磁盘中)

#查看集群状态
rabbitmqctl cluster_status

#修改集群节点类型,使用此命令前要停止rabbitmq应用
rabbitmqctl change_cluster_node_type {disc|ram} node_name

#将节点重集群中删除,允许离线执行
rabbitmqctl forget_cluster_node [--offiine]

#在集群中的节点应用启动前咨询clusternode节点的最新信息,并更新
#相应的集群信息。这个和join_cluster不同,他不加入集群
rabbitmqctl update_cluster_nodes {clusternode}


#确保节点可以启动,即使他不是最后一个关闭的节点
rabbitmqctl force_boot
(集群中的节点相继宕机,如果要恢复之前的集群,则需要按照节点宕机的先后顺序,从后向前启动节点,因为最后宕机的节点数据最完善)


#设置集群名称。集群名称在客户端连接的时候回通报给客户端。
#集群名称默认是集群中第一个节点的名称
rabbitmqctl set_cluster_name {name}