rabbitmq集群搭建

本文介绍了RabbitMQ集群的优点,如提高服务可用性和性能。在集群中,节点间数据不共享,节点宕机会导致该节点队列消息丢失,但交换机信息会备份在所有节点。搭建集群需准备三个节点,同步erlang.cookie,并配置集群。通过集群状态检查确保正确设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rabbitmq集群

集群优点:

  1. 避免单节点故障, 提高服务可用性
  2. 提高服务性能,单机吞吐量有限,集群可以扩展节点,将流量分摊到集群中各个节点,提升rabbitmq吞吐量

rabbitmq集群,在失去一个节点时, 客户端能够重新连接到集群中的其他节点并继续生产或者消费, 提高可用性, 但是集群也不能保证消息不被丢失。

有一点需要注意的是,rabbitmq集群中的节点间的数据其实是不共享的, 因此当rabbitmq集群中的一个节点宕机时候, 该节点上的所有队列中的消息都会丢失,除非该节点做持久化,但是在该节点宕机期间,该节点的消息也不会在其他节点处理并被消费者消费

因为集群在创建队列时,只会在单个节点而不是所有节点创建对垒进程并包含队列的信息,因此只有在队列所属的节点上知道队列的所有信息,其他节点只知道对垒的元数据和指向该队列存在的那个节点的指针

但是对于交换机, 交换机创建时 rabbitmq会将绑定的列表添加到集群中的所有节点上, 这样每个节点的每个信道都可以访问到新的交换机

rabbitmq集群中所有节点都会备份所有元数据信息1. 队列 2. 交换机 3. 绑定关系元数据 4. vhost元数据

集群搭建准备:

  1. 节点准备

rabbitmq集群至少是需要三个节点, 因此可以参考单节点搭建方法先准备三个节点

并启动服务:

systemctl start rabbitmq-server

  1. 添加hosts
192.168.137.23   node3
192.168.137.22   node2
192.168.137.21   node1
  1. 同步erlang.cookie

    读取其中一个节点的cookie, 并复制到其他节点

    (cookie相当于秘钥令牌, 集群中的rabbitmq节点之间通过cookie确定相互是否可通信, 即是互信关系)

    cookie存放在/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie中

[root@node3 ~]# ll /var/lib/rabbitmq/.erlang.cookie
-r-------- 1 rabbitmq rabbitmq 20 Jun 24 00:00 /var/lib/rabbitmq/.erlang.cookie
[root@node3 ~]# cat /var/lib/rabbitmq/.erlang.cookie
OKQPUWCBJPVLCMCKOJZZ

  1. 查看各节点的状态: rabbitmqctl status, rabbitmqctl cluster_status
  2. 重启服务
systemctl status rabbitmq-server
  1. 配置集群

选择一个节点作为主节点进行执行,例如这里选择node3

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
[root@node3 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node3 ...
[root@node3 ~]# rabbitmqctl reset
Resetting node rabbit@node3 ...
[root@node3 ~]# rabbitmqctl start_app
Starting node rabbit@node3 ...
 completed with 0 plugins.

在第二个节点和第三个节点依次执行:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node3 
rabbitmqctl start_app
  1. 集群查看
[root@node3 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node3 ...
[{nodes,[{disc,[rabbit@node1,rabbit@node2,rabbit@node3]}]},
 {running_nodes,[rabbit@node1,rabbit@node2,rabbit@node3]},
 {cluster_name,<<"rabbit@node1">>},
 {partitions,[]},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值