RabbitMQ(八) - RabbitMQ集群

在RabbitMQ 使用过程中难免会出现各式各样的异常情况,有客户端的,也有服务端的客户端的异常一般是由于应用代码的缺陷造成的,这个从RabbitMQ本身的角度无法掌控。对于服务端的异常来说,虽然不能完全杜绝,但是可以采取一些有效的手段去监测、管控,当某些指标超过闽值时能够迅速采取一些措施去修正,以防止发生不必要的故障(比如单点故障、集群故障等),而当真正发生故障时也要能够迅速修复。

集群搭建

RabbitMQ 集群允许消费者和生产者在 RabbitMQ 单个节点崩惯的情况下继续运行,它可以通过添加更多的节点来线性地扩展消息通信的吞吐量。当失去一个 RabbitMQ 节点时,客户端能够重新连接到集群中的任何其他节点并继续生产或者消费。
不过 RabbitMQ 集群不能保证消息的万无一失,即将消息、队列、交换器等都设置为可持久化,生产端和消费端都正确地使用了确认方式。当集群中一个 RabbitMQ 节点崩溃时,该节
点上的所有队列中的消息也会丢失。 RabbitMQ 集群中的所有节点都会备份所有的元数据信息,包括以下内容:
队列元数据:队列的名称及属性;
交换器:交换器的名称及属性:
绑定关系元数据:交换器与队列或者交换器与交换器之间的绑定关系;
vhost 元数据:为 vhost 内的队列、交换器和绑定提供命名空间及安全属性。
但是不会备份消息(当然通过特殊的配置比如镜像队列可以解决这个问题)。基于存储空间和性能的考虑,在 RabbitMQ 集群中创建队列,集群只会在单个节点而不是在所有节点上创建队列的进程,并在队列进程中包含完整的队列信息(元数据、状态、内容)。这样只有队列的宿主节点,即所有者节点知道队列的所有信息,所有其他非所有者节点只知道队列的元数据和指向该队列存在的那个节点的指针。因此当集群节点崩溃时,该节点的队列进程和关联的绑定都会消失。附加在那些队列上的消费者也会丢失其所订阅的信息,井且任何匹配该队列绑定信息的新消息也都会消失。
不同于队列那样拥有自己的进程,交换器其实只是一个名称和绑定列表。当消息发布到交换器时,实际上是由所连接的信道将消息上的路由键同交换器的绑定列表进行比较,然后再路由消息。当创建一个新的交换器时, RabbitMQ 所要做的就是将绑定列表添加到集群中的所有节点上。这样,每个节点上的每条信道都可以访问到新的交换器了。

1.多机多节点

多机多节点是针对单机多节点而言的,主要是指在每台机器中部署一个RabbitMQ服务节点,进而由多台机器组成一个 RabbitMQ 集群。

第一步,配置各个节点的 hosts 文件,让各个节点都能互相识别对方的存在。

比如在 Linux 系统中可以编辑hosts 文件,在其上添加地址与节点名称的映射信息:
192.168.0.2 node1
192.168.0.3 node2

第二步,编辑 RabbitMQ 的cookie 文件,以确保各个节点的 cookie 文件使用的是同一个值,可以读取 node1节点的 cookie 值,然后将其复制到 node2 节点中。

在windows版本的RabbitMQ, .erlang.cookie 文件在这两个目录下的都要修改:C:\Windows\System32\config\systemprofile;C:\Users\用户名;

如果集群中各节点的cookie不一致,执行rabbitmqctl join_cluster rabbit@node2,是会报错的。
计算机名的相关node

第三步,配置集群。

配置集群有三种方式 :
①通过 rabbitmqctl 工具配置;
②通过rabbitmq config 配置文件配置;
③通过 rabbitmq autocluster插件配置。

2.单机多节点

多机多节点简化版,@后的hostname是同一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Funnee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值