RabbitMQ教程 | 该不会还有人不会使用HAProxy搭建RabbitMQ高可用集群吧,袁庭新安排上
小伙伴们,袁老师又来啦,今天我要给大家分享的内容是如何搭建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集群环境下高可用性和负载均衡的性能。
今天的内容就到这里吧,现在你学会了吗?关注「袁庭新」,干货天天都不断!
