轻松实现 RabbitMQ 集群搭建

198 阅读3分钟

本文是基于linux系统实现rabbitmq集群搭建。默认已经安装完成,如果未安装,可以到RabbitMQ简单安装查看如何安装。
下文为单机模式集群搭建

检查是否处于运行状态

确保rabbitmq是正常运行的。

 ps aux|grep rabbitmq

或者

systemctl status rabbitmq-server^

在这里插入图片描述

关闭服务

systemctl stop rabbitmq-server

单机多实例搭建

场景:假设有两个节点,分别为rabbit-1和rabbit-2。rabbit-1作为主节点,rabbit-2为从节点。
启动命令:

 sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &

结束命令

rabbitmqctl -n rabbit-1 stop

启动第一个节点rabbit-1

 sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &

在这里插入图片描述

启动第二个节点rabbit-2

需要注意的是,由于web端也有一个端口号,所以我们需要给web端重新指定端口号。

sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}] -rabbitmq_stomp tcp_listeners [61614] -rabbitmq_mqtt  tcp_listeners [1884]" RABBITMQ_NODENAME=rabbit-2 rabbitmq-server start &

验证

 ps aux|grep rabbitmq

在这里插入图片描述

rabbit-1作为主节点

# 停止应用
sudo rabbitmqctl -n rabbit-1  stop_app
# 目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)
sudo rabbitmqctl -n rabbit-1 reset 
# 启动应用
sudo rabbitmqctl -n rabbit-1 start_app

rabbit-2作为从节点

# 停止应用
sudo rabbitmqctl -n rabbit-2  stop_app
# 目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)
sudo rabbitmqctl -n rabbit-2 reset 
# 将rabbit2节点加入到rabbit1集群中(server-node 服务器的主机名)
sudo rabbitmqctl -n rabbit-2 join_cluster rabbit-1@'server-node'
# 启动应用
sudo rabbitmqctl -n rabbit-2 start_app

选中的就是你服务器的主机名,自行修改。
root@后面的。
在这里插入图片描述

验证集群

sudo rabbitmqctl cluster_status -n rabbit-1

在这里插入图片描述
如果需要第三个几点,只需要重复rabbit-2节点的步骤即可。

web 监控

首先需要给两个节点添加用户及赋权。

rabbitmqctl -n rabbit-1 add_user admin admin
#操作权限
rabbitmqctl -n rabbit-1 set_user_tags admin administrator
#资源权限
rabbitmqctl -n rabbit-1 set_permissions -p / admin ".*" ".*" ".*"

rabbitmqctl -n rabbit-2 add_user admin admin
#操作权限
rabbitmqctl -n rabbit-2 set_user_tags admin administrator
#资源权限
rabbitmqctl -n rabbit-2 set_permissions -p / admin ".*" ".*" ".*"

创建用户之后我们便可以登录web端,如果是云服务器注意在安全组放行端口号。出现集群信息即代表成功,这种集群模式属于元数据共享模式,所以当我们在其中一个节点创建队列时,另一个节点也会自动创建队列。
在这里插入图片描述
如果其中一个节点宕机之后会发生什么呢?
我们可以手动关闭从节点,然后我们可以发现主节点中会显示从节点停止,但是交换机和队列还存在。
在这里插入图片描述
但是这种模式的话,如果我们手动关闭主节点,会发现从节点中的队列都停止了,所以这种集群模式我们在工作中不太常用。
在这里插入图片描述
在这里插入图片描述

多机部署集群

如果使用多个服务器进行集群的搭建,我们需要读取其中一个节点的cookie,并复制到其他节点(节点之间通过cookie确定是否可以通信)
cookie存放在/var/lib/rabbitmq/.erlang.cookie。
例如:主机名分别为rabbit-1、rabbit-2

  • 逐个启动各节点
  • 配置各节点的hots文件(vim /etc/hosts)
    ip1:rabbit-1
    ip2:rabbit-2
    其他步骤参考单机模式。