RabbitMQ 集群搭建


 

rabbitmq的集群架构模式

主备模式Warren

也称为warren模式,简单好用,常用于并发数、数据量不高的情况,在中小公司用得多。

在这里插入图片描述
HaProxy相当于TCP级别的代理,自动监控rabbitmq集群的状态,主节点故障时自动切换到从节点。

在这里插入图片描述

  • listen 指定要监听的rabbitmq集群的名称
  • bind 指定rabbitmq集群节点之间通信的端口,默认5672
  • server后面是hostname,backup表示是备份节点。每5000ms HaProxy检查一次该节点的状态,rise 2 表示2次正常就认为该节点正常,fall 3表示3次失败就认为该节点故障。

 

远程模式Shovel

在这里插入图片描述
在这里插入图片描述
有些rabbitmq集群负载很大时,可以把部分消息复制到远程空闲的rabbitmq集群代为处理。

在这里插入图片描述
exchange感知到正常队列负载过大时,自动将部分数据路由到backup备份队列,通过shovel插件将backup队列中消息复制到远程rabbitmq上处理。

这种是rabbitmq早期的集群架构模式,现在基本不用了,如果要使用异地的rabbitmq集群分担压力,可以使用更好的多活模式。

 

多活模式Federation

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
整体是多活模式,每个中心的rabbitmq集群可以使用其它集群模式
在这里插入图片描述
在这里插入图片描述
多活模式可以把消息拉取到多个rabbitmq集群中,在多个rabbitmq集群中进行不同行为的消费

 

镜像模式Mirror

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
某个rabbitmq节点接收到消息后,本机存储后自动同步此消息到其它节点,一般rabbitmq至少3个节点,2个做备用,可靠性更高。

应用通过负载均衡服务器访问rabbitmq集群的某个节点,用KeepAlived保证负载均衡服务器的高可用。

常见的rabbitmq高可用架构是:镜像队列+Haproxy+KeepAlived

 

镜像模式集群搭建

在这里插入图片描述
1、vim /etc/hostname 设置好各个机器的主机名

2、在3台机器上分别安装rabbitmq,安装好后都先停掉rabbitmq server
 

3、同步cookie文件

选择任意一个rabbitmq节点作为master,复制该节点的的cookie文件到其它rabbitmq节点上

#该文件默认权限为400,先chmod 777,再scp复制到其它节点上,复制后改回400
scp /var/lib/rabbitmq/.erlang.cookie 192.168.1.7:/var/lib/rabbitmq/

也可以用winscp之类的软件直接传
 

4、集群方式分别启动各个rabbitmq节点
rabbitmq-server -detached
 

5、各个slave节点都先停掉、再加入集群

rabbitmqctl stop_app

#@后面试master的hostname
rabbitmqctl join_cluster rabbit@xxx

rabbitmqctl start_app

集群启动以后,如果要移除集群中的某个节点,在任意一个节点上执行以下命令即可

#@后面是要移除的节点的hostname
rabbitmqctl forget_cluster_node rabbit@xxxx

 

6、修改集群名称
在任意一个节点上执行

rabbitmqctl set_cluster_name 新的集群名称

 

7、查看集群状态
在任意一个节点上执行

rabbitmqctl cluster_status

 

8、配置镜像队列
在任意一个节点上执行

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

某个节点接收到消息,会自动同步到其它节点。镜像模式并没有严格的主从节点之分,任何节点都可以接受、处理消息。

 

引入HAProx实现rabbitmq集群的负载均衡

HAProxy是一个高性能、免费可靠的反向代理软件,提供负载均衡功能,支持数以万计的并发连接,特别适合代理负载大、又需要保持会话状态的服务器。

一般要使用2个及以上的haproxy节点,再用keepalive保证haproxy的高可用。
 

1、分别在2个节点上安装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,然后同步到从节点?)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值