Rabbitmq主从集群和镜像集群搭建

本文详细介绍了如何在三台机器上搭建RabbitMQ主从集群,包括安装步骤、配置主机名和hosts文件、复制cookie、启动节点以及查看集群状态。接着,文章阐述了主从集群的不足,并演示了如何设置镜像策略以实现消息备份,确保高可用性。通过设置ha-policy,所有以hello开头的队列可以在所有节点上进行镜像,弥补了主从架构的缺陷。

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

主从架构集群搭建

一、安装rabbitmq

百度网盘
链接:https://pan.baidu.com/s/1CfjjCL–G4TX9zzs-hzxNg
提取码:sq5z

这里有三个安装包
1、mq是使用erlang语言开发的,所以首先安装erlang-22.0.7-1.el7.x86_64包

rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

2、安装socat-1.7.3.2-2.el7.x86_64

rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm

3、安装rabbitmq

rpm -ivh rabbitmq-server-3.7.18-1.el7.noarch.rpm

本篇文章讲解的是基于三台机器进行搭建的(选择一台进行连接复制

复制完之后修改三台机器的主机地址

vi /etc/sysconfig/network-scripts/ifcfg-eth1

上步骤每个人的主机地址文件可能不同,详情查看自己主机地址文件

ip addr

三台机器上都必须安装上rabbitmq,步骤同上

二、搭建主从架构集群

1、接下来分别进入三台机器中修改三台机器的主机名(文章以mq1、mq2、mq3为例)

vi /etc/hostname

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、配置每个主机的hosts文件

vi /etc/hosts

在文件后添加每台主机的地址及主机名,每台机器都需要如此
在这里插入图片描述
3、读取其中一个节点的cookie, 并复制到其他节点(节点之间通过cookie确定相互是否可通信)。
cookie存放在/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie中
保证每个节点的.erlang.cookie中的cookie必须一样

4、逐个启动节点 rabbitmq-server -detached
5、查看各节点的状态及集群的状态: rabbitmqctl status, rabbitmqctl cluster_status
6 建立集群
以mq1为主节点,在mq2上:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@hidden1
rabbitmqctl start_app
mq3上的操作与mq2的雷同。
最后通过rabbitmqctl cluster_status查看集群的状态信息
在这里插入图片描述
通过浏览器访问rabbitmq,查看集群的状态
在这里插入图片描述
如果页面起不来,运行命令rabbitmq-plugins enable rabbitmq_management即可,启动其页面管理插件

主从架构集群:
从节点可以和主节点的交换机、队列进行备份,但是不能对从节点中的消息进行备份,也就是说,一但主节点宕机,从节点中的消息也就没有了,不能够做到高可用的一种状态
接下来的镜像集群就很好的解决这一问题,也是大多是企业所采用的一种搭建方式

镜像集群必须在主从集群的搭建上继续配置

镜像集群搭建

1、策略说明

rabbimqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition>
-p Vhost:可选参数,针对指定vhost下的queue进行设置
Name: policy的名字
Pattern: 正则表达式,queue的匹配模式
Definition:镜像定义,包含三个部分ha-mode,ha-params,ha-sync-mode
ha-mode:指明镜像队列的模式,有效值为all/exactly/nodes
		all:表明在集群中所有的节点进行镜像
		exactly:表明在指定个数的节点上进行镜像,节点的个数由ha-params决定
		nodes:表明在指定的节点上进行镜像,节点名称通过ha-params决定
ha-params:ha-mode模式需要用到的参数
ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级

2、查看当前策略
rabbitmqctl list_policies
3、添加策略
rabbitmqctl set_policy ha-all ‘^hello’ ‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’
说明:策略"^"表示正则表达式匹配所有队列名称
"^hello"表示匹配所有的以hello开头的队列名称

4、删除策略
rabbitmqctl clear_policy ha-all

操作:
添加策略

rabbitmqctl set_policy ha-all '^hello' '{"ha-mode":"all","ha-sync-mode":"automatic"}'

所有以hello开头的队列都可以进行消息的备份,补足了主从集群架构的缺陷
在这里插入图片描述

Spring Boot 集成 RabbitMQ 主从模式是为了提高消息队列服务的可用性容错性。在主从配置下,通常有一个主节点负责接收生产者发送的消息,而从节点则用于备份,当主节点出现问题时,可以自动切换到从节点继续处理消息。 以下是基本步骤: 1. 添加依赖:在 Spring Boot 项目的 pom.xml 文件中添加 RabbitMQ 主从高可用相关的依赖,如 `spring-rabbit` `lettuce-amqp` 或 `hain-spring-amqp`. ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> ``` 2. 配置 RabbitMQ:在 `application.properties` 或 `application.yml` 中设置 RabbitMQ 的连接信息,包括地址、端口、虚拟主机等,并启用集群模式 (`clustered=true`)。 3. 创建配置类:创建一个配置类,比如 `RabbitConfig`,配置连接工厂声明式事务管理器。 ```java @Configuration public class RabbitConfig { @Value("${spring.rabbitmq.host}") private String host; // ... 其他配置,例如连接工厂事务管理器 } ``` 4. 主从配置:使用 RabbitMQ 提供的工具如 `ha-policy-manager` 来配置主从策略,或者通过 `management` 端点手动调整。通常需要在每个节点上配置不同的名称镜像策略。 5. 创建消费者生产者:消费者会自动从可用的节点获取消息,生产者则直接发送到集群。 6. 错误恢复:为了更好地处理主节点故障后的恢复,可以配置消费者订阅多个队列,当一个队列不可用时,它可以从其他可用队列接收消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值