欢迎光临散文网 会员登陆 & 注册

RabbitMQ教程 | 该不会还有人不会使用HAProxy搭建RabbitMQ高可用集群吧,袁庭新安排上

2023-10-13 12:28 作者:袁庭新  | 我要投稿

小伙伴们,袁老师又来啦,今天我要给大家分享的内容是如何搭建RabbitMQ高可用集群。我们都知道RabbitMQ是采用Erlang语言开的,而Erlang语言天生具备分布式的特点,所以RabbitMQ天然支持集群,不需要通过引入ZooKeeper就能实现数据同步。

今天袁老师会手把手地教大家来搭建高可用的RabbitMQ集群环境,我们这就开始吧。

01 RabbitMQ集群环境搭建

首先,我们需要准备一台IP地址为192.168.230.131的CentOS 7.X的虚拟机,然后在该台主机上克隆出两台新的虚拟机,分别将IP设置为192.168.230.132和192.168.230.133,这样我们就准备好了三台Linux服务器。

在192.168.230.131服务器上,修改/etc/hosts映射文件。

在192.168.230.132服务器上,修改/etc/hosts映射文件。

两台Linux主机修改完host文件后,需重启Linux服务器。

在RabbitMQ集群环境下,节点间相互通信时,cookie必须保持一致。首先查看.erlang.cookie文件的位置。

同步RabbitMQ的cookie文件到每台服务器,可以使用跨服务器拷贝.erlang.cookie到每台节点。

两台服务器同步完cookie文件后,需重启Linux服务器。

reboot

在两台服务器上分别停止防火墙,并启动RabbitMQ服务。

加入集群节点(组成集群)。

集群配置好后,可以在RabbitMQ任意节点上执行下面的命令来查看是否集群配置成功。

在搭建RabbitMQ集群之前,所创建的交换机、队列、用户都属于单一结构,将在新的RabbitMQ集群环境中是不能用的。所以在新的集群中重新手动添加用户即可(任意节点添加,所有节点共享)。

注意:当节点脱离RabbitMQ集群还原成单一结构后,交换机、队列和用户等数据都会重新回来。

创建虚拟机。选择【Admin】-【Virtual Hosts】-【Add virtual host】选项,添加一个虚拟机。

控制台查看是否集群成功。

此时,集群搭建完毕,但是默认采用的模式普通模式,可靠性不高。因此,需将RabbitMQ改为镜像模式。

02 镜像模式

1.镜像模式介绍

将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态一致。语法结构见下:

参数含义解析:

  • name:表示策略名,名称自定义。

  • pattern:队列的匹配模式,使用正则表达式进行匹配。"^"表示匹配所有的队列。

  • definition:镜像定义,包括三个部分ha-mode、ha-params和ha-sync-mode。

  • ha-mode:High Available高可用,简称HA。指明镜像队列的模式,有效值为all/exactly/nodes。

  • ha-params:表示ha-mode模式需要用到的参数。

  • ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual。

2.镜像模式实现

通过命令的方式设置镜像模式策略,在任意一个节点上执行下面的命令。

镜像配置参考:http://www.rabbitmq.com/ha.html#replication-factor。

也可以通过RabbitMQ可视化管理页面设置镜像模式策略。

运行测试类中的delayMessage()测试方法,然后启动项目主类,测试在RabbitMQ集群环境下死信队列中的消息是否可被正常消费。

03 HAProxy实现镜像队列的负载均衡

虽然我们在RabbitMQ集群中,访问node1服务器可以实现消息的同步,将消息同步到node2服务器上;但在目前的集群架构中,node1服务器始终处于接收消息的角色,这样会导致node1服务器过于繁忙,因此需要对RabbitMQ集群进行负载均衡配置,让node1和node2服务器轮流接收消息,然后再做消息镜像同步。

1.HAProxy简介

HAProxy(High Available - 高可用,Proxy - 代理),HAProxy是一款提供高可用性、负载均衡,并且基于TCP和HTTP应用的代理软件。HAProxy完全免费。HAProxy可以支持数以万计的并发连接。HAProxy可以简单又安全的整合进架构中,同时还保护Web服务器不被暴露到网络上。

2.HAProxy与Nginx对比

Open System Interconnection,开放式系统互联,简称OSI。将计算机网络通信的工作划分为七层,分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

2.1 Nginx的优点

  • Nginx工作在OSI第七层,可以针对HTTP应用做一些分流的策略;

  • Nginx对网络的依赖非常小,理论上能ping通就能进行负载均衡功能,屹立至今的绝对优势;

  • Nginx安装和配置比较简单,测试起来比较方便;

  • Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。

2.2 HAProxy的优点

  • HAProxy工作在网络四层和七层,支持TCP与HTTP协议;

  • 支持8种负载均衡策略 ,支持心跳检测;

  • HAProxy仅仅只是一款负载均衡软件;单纯从效率上来讲HAProxy比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。

对于HTTP协议,HAProxy处理效率比Nginx高。所以,没有特殊要求的时候或者一般场景,建议使用HAProxy来做HTTP协议请求。如果是在Web应用中,那么建议使用Nginx。总之,大家可以结合各自使用场景的特点来进行合理地选择。

3.HAProxy安装和配置

使用浏览器访问以下地址下载HAProxy安装包。

再准备一台CentOS服务器,将IP地址设置为192.168.230.133,将作为HAProxy服务器。

将下载好的HAProxy安装包传输到这台CentOS系统中。

解压HAProxy安装包。

make时需要使用TARGET指定内核及版本。

根据内核版本选择编译参数。

4.编译安装HAProxy

1.进入haproxy-1.8.12目录后,进行编译和安装。

2.编译HAProxy参数说明:

3.安装成功后,查看HAProxy版本。

4.配置启动文件,复制haproxy文件到/usr/sbin目录下 ,复制haproxy.init脚本到/etc/init.d下。

5.创建系统账号。

6.haproxy.cfg配置文件需要自行创建。

7.添加配置信息到haproxy.cfg文件。

8.关闭防火墙。

5.启动HAProxy

1.HAProxy服务操作相关命令介绍。

2.启动HAProxy。

3.查看HAProxy进程。

4.使用浏览器访问monitor监控中心,它的地址是http://192.168.230.133:8100/monitor,查看HAProxy控制台对node1和node2的监控情况。

04 总结回顾

今天袁老师主要是带各位小伙伴完成了RabbitMQ集群环境的搭建,以及为提升集群的高可用搭建了HAProxy代理。最后,我们又测试了RabbitMQ集群环境下高可用性和负载均衡的性能。

今天的内容就到这里吧,现在你学会了吗?关注「袁庭新」,干货天天都不断!


RabbitMQ教程 | 该不会还有人不会使用HAProxy搭建RabbitMQ高可用集群吧,袁庭新安排上的评论 (共 条)

分享到微博请遵守国家法律