RabbitMQ-集群搭建、负载均衡

本文介绍了RabbitMQ集群的搭建、集群原理及单机多实例方式,重点讲解了如何通过HAProxy实现负载均衡。集群能提高RabbitMQ的可靠性和吞吐量,而HAProxy则提供对外的统一访问入口,确保即使部分节点故障,系统仍能正常运行。
摘要由CSDN通过智能技术生成

为何要搭建RabbitMQ集群?

如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。

集群方案原理

RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA方案和保存集群的元数据。集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加消息吞吐量能力的目的。

在这里插入图片描述
设置多个RabbitMQ的节点,节点之间使用镜像队列来同步数据,并对外使用HAProxy反向代理,那么HAProxy就作为 对外访问的公共方式,不论是生产者还是消费者都访问HAProxy,再通过HAProxy访问RabbitMQ的节点,若其中的某些节点挂了也没关系,只要有一个存活就好,挂掉的节点修复好后数据又会被同步好。

单机多实例方式搭建集群

在一台虚拟机上启动2个RabbitMQ的节点,多节点之间用端口区分(实际搭建集群式用ip区分)。用云服务器的,记得去开启对应端口。

参考官方文档:https://www.rabbitmq.com/clustering.html
步骤:

1.先确保RabbitMQ运行没有问题
命令:rabbitmqctl status
在这里插入图片描述

2.停止rabbitmq服务
命令:service rabbitmq-server stop
在这里插入图片描述
3.启动第一个节点:
命令:
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit1 rabbitmq-server start
在这里插入图片描述
4.启动完第一个节点后,克隆会话用于启动第二条节点
web管理插件端口占用,所以还要指定其web插件占用的端口号。

命令: RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server start
在这里插入图片描述
再复制一个会话进行节点重置
5.rabbit1操作作为主节点:
依次执行以下命令:
rabbitmqctl -n rabbit1 stop_app
rabbitmqctl -n rabbit1 reset
rabbitmqctl -n rabbit1 start_app
在这里插入图片描述
6.rabbit2操作为从节点:
依次执行以下命令:
rabbitmqctl -n rabbit2 stop_app
rabbitmqctl -n rabbit2 reset
rabbitmqctl -n rabbit2 join_cluster rabbit1@‘super’ ###’'内是主机名换成自己的
rabbitmqctl -n rabbit2 start_app
在这里插入图片描述
7.查看集群状态
rabbitmqctl cluster_status -n rabbit1

至此,rabbit1和rabbit2组成了一个集群,但是还不完整,有许多问题(如数据不同步)

主节点:
可以看创建了的两个队列
在这里插入图片描述

从节点:
可以看创建了的两个队列
在这里插入图片描述

给从节点上的rabbit2队列发一条消息
在这里插入图片描述
在这里插入图片描述

再看主节点:
也可以看到rabbit2队列有一条消息
在这里插入图片描述
在正常运行的时候好像莫得什么问题,这时手动让rabbit2从节点挂掉

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值