RabbitMQ集群搭建

上篇文章:

RabbitMQ应用问题https://blog.csdn.net/sniper_fandc/article/details/149312372?fromshare=blogdetail&sharetype=blogdetail&sharerId=149312372&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link

当RabbitMQ只部署到一个节点上,如果节点宕机就会导致整个系统不可用,集群方案就是解决这一类问题的方案(MySQL、Redis等集群思想也都差不多)。

由于真正的集群搭建成本较高,因此采用伪集群搭建

1 安装RabbitMQ

这一步不再演示。

2 启动多个节点

在使用命令service rabbitmq-server start启动了一个节点后(主节点),使用rabbitmqctl status来查看当前节点的具体状态和信息(重点查看节点名称和端口号):

现在另启动两个节点,节点1是rabbitmq1(开放端口5673服务端口,15673管理端口),节点2是rabbitmq2(开放端口5674服务端口,15674管理端口),命令如下:

bash 复制代码
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbitmq1 rabbitmq-server -detached

RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbitmq2 rabbitmq-server -detached

去浏览器测试这两个节点的管理界面是否可以打开(ip:管理端口),如果可以就说明启动成功。

接下来重置两个节点,首先要停止节点才能重置,命令如下:

bash 复制代码
rabbitmqctl -n rabbitmq1 stop_app

rabbitmqctl -n rabbitmq1 reset

rabbitmqctl -n rabbitmq2 stop_app

rabbitmqctl -n rabbitmq2 reset

把两个节点添加到主节点的集群中,命令如下:

bash 复制代码
rabbitmqctl -n rabbitmq1 join_cluster rabbit@master

rabbitmqctl -n rabbitmq2 join_cluster rabbit@master

重启这两个节点:

查看集群状态:

bash 复制代码
rabbitmqctl cluster_status -n rabbit

在管理界面也可以查看集群信息,登录主节点后(此时主节点的账号和主节点的队列、交换机等信息已经同步):

注意:集群中的队列、交换机等信息是共享的,即在任意一个节点都可以查询到。但是消息不是共享的,消息在哪个队列所属的节点,该节点关闭后,消息也会消失。

下篇文章:

RabbitMQ---仲裁队列https://blog.csdn.net/sniper_fandc/article/details/149312579?fromshare=blogdetail&sharetype=blogdetail&sharerId=149312579&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link