首页天道酬勤rabbitmq镜像集群,java实现消息队列

rabbitmq镜像集群,java实现消息队列

admin 05-12 07:51 227次浏览

目录rabbitmq的集群体系结构模式主准备模式Warren远程模式Shovel多活动模式Federation镜像模式Mirror镜像模式引入集群构建HAProx实现rabbitmq集群的负载平衡kkqr

rabbitmq的集群体系结构模式主准备模式Warren

也称为warren模式,简单易用,常用于并发数、数据量不高的情况,多用于中小企业。

HaProxy相当于TCP级别的代理,自动监视rabbitmq集群的状态,如果主节点发生故障,则自动切换到从节点。

listen指定要监听的rabbitmq群集的名称。 bind指定在rabbitmq群集节点之间进行通信的端口。 默认的5672服务器后跟主机名称,backup表示它是备份节点。 每5000ms HaProxy检查一次该节点的状态,如果rise 2正常两次,则认为该节点正常,如果fall 3失败三次,则认为该节点故障。

远程模式Shovel

部分rabbitmq集群负载较大时,可以将部分消息复制到远程空闲的rabbitmq集群并代为处理。

如果exchange发现正常队列负载过大,它会自动将部分数据路由到备份队列,并通过shovel插件将备份队列中的消息复制到远程rabbitmq进行处理。

这是rabbitmq早期的集群架构模型,现在很少使用。 如果使用异地rabbitmq集群来分担压力,则可以使用更好的多模式。

多模式融合

整体为多模式,每个中心的rabbitmq群集可以使用其他群集模式

多模式可以将消息提取到多个rabbitmq集群中,并且多个rabbitmq集群消耗不同的行为

镜像模式Mirror

当一个rabbitmq节点接收到消息时,本地存储会自动将该消息同步到另一个节点。 通常,rabbitmq至少有三个节点,两个用作备用节点更可靠。

通过负载平衡服务器,APP应用程序访问rabbitmq群集的某个节点,以确保负载平衡服务器的高可用性。

典型的rabbitmq高可用性体系结构是镜像队列ha proxy保持不变

镜像模式的集群构建

1、设置vim /etc/hostname每台机器的主机名

2、在三台机器上分别安装rabbitmq,安装后停止rabbitmq服务器

3、同步cookie文件

选择任何rabbitmq节点作为主节点,并将该节点的cookie文件复制到另一个rabbitmq节点

#此文件的默认权限为400,它将chmod 777、scp复制到另一个节点,然后复制400 scp/var/lib/rabbit MQ/. Erlang.cookie 192.168.1.1

4、集群方式启动各自的rabbitmq节点

rabbitmq-server -detached

5、各从属节点停止后加入集群

rabbitmqctl stop_app#@后面接master的hostnamerabbitmqctljoin _ cluster rabbit @ xxrabbitmqctlstart _ app群集启动后,群集之一

#@之后要删除的节点的hostnamerabbitmqctlforget _ cluster _ node rabbit @ xxxx

6、更改集群名称

在任一节点上运行

rabbitmqctl set_cluster_name新群集名称

7、观察集群状态

在任一节点上运行

rabbitmqctl cluster_status

8、构成镜像队列

在任一节点上运行

rabbitmqctlset _ policy ha-all ' ^ ' { ' ha-mode ' : ' all ' } '一个节点收到消息时,将自动与另一个节点同步。 镜像模式没有严格的主从区分,任何节点都可以接受和处理消息。

HAProxy是一款高性能、免费、可靠的反向代理软件,可部署HAProx以实现rabbitmq群集负载平衡,并支持数万个并发连接。 特别适用于代理负载较大且需要保持会话状态的服务器。

通常使用两个或多个haproxy节点,keepalive确保haproxy的高可用性。

1、在两个节点上分别安装haproxy

2,

创建haproxy的配置文件



绑定本机的5672端口,外部访问rabbitmq集群时要通过 haproxy的ip:5672去访问。


 

3、启动haproxy

-f指定配置文件位置

 

4、访问haproxy查看rabbitmq集群状态

ip、port是任意一个haproxy节点的

 

引入KeepAlived保证HAProxy的高可用



反向代理只有一个节点时,容易出现单点故障,所以反向代理一般要多个节点集群。

反向代理是对外暴露的入口,访问地址固定,需使用keepalived保证高可用,节点故障时自动切换,保持访问地址不变。


 

1、安装keepalived

一般keepalived与haproxy节点对应,在每个haproxy节点上安装keepalived


ln是生成软连接,之前存在的可能是以前生成的,链接地址可能不对,要 rm -f 删除后重新生成。

 

2、修改keepalived的配置文件(新建?)

选择其中一个keepalived节点作为主节点,主keepalived节点配置:

sh脚本要自己写,确认haproxy节点是否正常。每隔指定时间自动执行1次那个脚本
 


密码一致才会加入到keepalived集群中

 

从keepalived节点配置:



优先级要设置得比主节点低。


主从节点的虚拟ip配置要一致。此处写错了,虚拟ip应该是11.70

 

3、编写执行脚本
分别再2个keepalived节点上操作

作用:检测haproxy集群状态,如果主haproxy节点挂掉了,自动切换为备份的haproxy

 

4、启动keepalived

用start启动,ps -ef查看keepalived是否已启动

 

5、可在keepalived节点上用 ip a 查看所有的ip地址,a即all,除了机器的实际ip,还有虚拟ip。

停掉主haproxy服务,虚拟ip会自动切换到从haproxy节点上。在从haproxy节点上ip a查看。

因为haproxy、keepalived都在相同机器上,虚拟ip即是haproxy的ip,haproxy集群(全部haproxy节点)共用这个虚拟ip。外部通过 虚拟ip:5672 访问rabbitmq集群。

 

rabbitmq集群配置文件

如果采用tar.xz源码方式编译安装,可以:



 

关键参数如下:

低水位线的设置要与集群模式对应,使用内存模式时配置内存低水位线,使用磁盘模式时配置磁盘低水位线

 

rabbitmq(镜像模式)集群的故障转移、恢复

rabbitmq集群节点宕机故障的解决

比如正常停机。

所有场景的前提:B是master

 


 


 


注意:是 --offline 2横

 


无法恢复

 

rabbitmq延迟插件的使用

比如:

订单签收后,如果一段时间内没有评价,默认好评淘宝订单签收后,如果一段时间内没有点击收货,自动收货,淘宝将钱打给卖家

 

1、下载插件

选择任意一个地址下载即可
 

2、将插件放到rabbitmq的plugin目录下

rabbitmq-plugins list #查看所有插件rabbitmq-plugins enable rabbitmq_delayed_message_exchange #启用指定插件

第二步在rabbitmq集群的各个节点上都要做。无需重启节点。
 

3、使用

在管控台创建exchange时type选择x-delayed-message,初次使用时如果没有type刷新一下页面;在其它参数中设置 x-delayed-type=topic,此处指定的是交换机类型,根据需要指定,不一定要用topic。创建一个queue,绑定到exchange上。发送消息时,在headers中用x-delay指定延迟时间,单位ms。

如果是镜像集群,会自动同步exchange、queue的改动到其它节点,镜像备份会用不同颜色显示。

(如果修改的是从节点,会自动同步到master?还是只能修改master,然后同步到从节点?)

mybatis通过if语句实现增删改查操作怎么将Java对象转换为JSON2.X升级3.X配置帮助 堡垒机 UAuditHostUCloud优刻得与奇安信集团携手战略合作音视频开发难吗(音视频开发怎么学)PHP在前端和后端中的作用是什么C#获取USB事件API实例分析Data Lakehouse数据湖到底是什么呢?
rabbitmq消费者集群,activemq高可用集群 rabbitmq集群架构,rabbitmq集群搭建
相关内容