Rabbitmq系列之镜像模式部署

相关概念

  RabbitMQ集群里有内存节点磁盘节点

  • 内存节点(ram),就是将元数据(metadata)都放在内存里,
  • 磁盘节点(disc),数据放在磁盘上,如果RabbitMQ是单节点运行,默认就是磁盘节点。

  在RabbitMQ集群里,至少有一个磁盘节点,它用来持久保存元数据。新的节点加入集群后,会从磁盘节点上拷贝数据。但是,集群里也不必要每个节点都是磁盘节点,这主要是性能问题。例如,压力大的RPC服务,每秒都要创建和销毁数百个队列,如果集群里都是磁盘节点,意味着队列定义在每个节点上,都要写入磁盘才算成功,这样就会非常慢。

什么是镜像集群?

  普通集群默认情况下,RabbitMQ集群中队列的内容存在于单个节点(声明该队列的节点)上,集群中的队列仅仅是结构相同,而镜像集群不仅结构相同,数据也可以同步。
  每个镜像队列由一个主服务器和一个或多个镜像组成。对队列的所有操作首先应用于队列的主节点,然后传播到镜像的其他节点;已在主服务器上确认的消息,镜像都会丢弃。因此,队列镜像可提高可用性,但不会在节点之间分配负载。

如何实现镜像集群?

  有4种方式实现,这里使用第一种。
在这里插入图片描述
  在任意一个cluster中的节点下执行下面格式的语句进行构建镜像集群。

rabbitmqctl set_policy ha-nodes “^nodes.” ‘{“ha-mode”:“nodes”,“ha-params”:[“rabbit@nodeA”, “rabbit@nodeB”],“ha-sync-mode”:“automatic”}’

ha-nodes:策略名称;
^nodes\.:匹配符,匹配名字前缀是“nodes.”的queues and exchanges;
ha-mode:为匹配类型,分为3种模式,all-所有(所有的queue,不需要需配置ha-params参数);exactly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器);nodes-指定(需配置ha-params参数,是node名字的集合,例如 “ha-params”:[“rabbit@nodeA”, “rabbit@nodeB”]})。
ha-sync-mode:分为两种模式,manual/automatic;手动模式(manual默认模式:表示新的队列镜像将不会接收已有消息,只会接收新消息;自动(automatic):加入新镜像后,队列将自动同步。需要注意的是,队列同步是一项阻塞操作。

如何判断镜像集群?

  通过管理UI的队列界面上可以看到策略名称和旁边的其他副本(镜像)数。

[root@node1 ~]# rabbitmqctl set_policy ha-two “^” \ ‘{“ha-mode”:“nodes”,“ha-params”:[“rabbit@node2”],“ha-sync-mode”:“automatic”}’

在这里插入图片描述在这里插入图片描述
执行下面这句之后

[root@node1 ~]# rabbitmqctl set_policy ha-two “^” \ ‘{“ha-mode”:“nodes”,“ha-params”:[“rabbit@node1”,“rabbit@node2”],“ha-sync-mode”:“automatic”}’

在这里插入图片描述

感谢

RabbitMQ in Action 内存节点与磁盘节点
Classic Mirrored Queues

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值