18-基于CentOS7搭建RabbitMQ3.10.7集群镜像队列+HaProxy+Keepalived高可用架构

集群架构虚拟机规划IP
hostname
节点说明
端口
控制台地址
192.168.247.150
rabbitmq.master
rabbitmq master
5672
http://192.168.247.150:15672
192.168.247.151
rabbitmq.s.o
rabbitmq slave
5672
http://192.168.247.151:15672
192.168.247.152
rabbitmq.s.t
rabbitmq slave
5672
http://192.168.247.152:15672
192.168.247.153
haproxy.k.m
haproxy+keepalived
8100
http://192.168.247.153:8100/rabbitmq-stats
192.168.247.154
haproxy.k.s
haproxy+keepalived
8100
http://192.168.247.154:8100/rabbitmq-stats

18-基于CentOS7搭建RabbitMQ3.10.7集群镜像队列+HaProxy+Keepalived高可用架构

文章插图
镜像模式
  • 镜像模式: 集群模式非常经典的就是Mirror镜像模式, 保证100%数据不丢失, 在实际工作中也是用的最多的, 并且实现集群非常的简单, 一般互联网大厂都会构建这种镜像集群模式
  • Mirror镜像队列, 目的是为了保证RabbitMQ数据的高可用性解决方案, 主要就是实现数据的同步, 一般来讲是2-3个节点实现数据同步[一般都是3节点+(奇数个节点)](对于100%数据可靠性解决方案一般都是3节点)集群架构如下

18-基于CentOS7搭建RabbitMQ3.10.7集群镜像队列+HaProxy+Keepalived高可用架构

文章插图
服务器规划
  • 架构: RabbitMQ Cluster + Queue HA + Haproxy + Keepalived
  • 解释: 3台rabbitMQ服务器构建broker集群 , 允许任意2台服务器故障而服务不受影响 , 在此基础上 , 通过Queue HA (queue mirror)实现队列的高可用 , 在本例中镜像到所有服务器节点(即1个master , 2个slave);为保证客户端访问入口地址的唯一性 , 通过haproxy做4层代理来提供MQ服务 , 并通过简单的轮询方式来进行负载均衡 , 设置健康检查来屏蔽故障节点对客户端的影响;使用2台haproxy并且通过keepalived实现客户端访问入口的高可用机制 。
服务架构设计
18-基于CentOS7搭建RabbitMQ3.10.7集群镜像队列+HaProxy+Keepalived高可用架构

文章插图
参考资料官方文档手册:
集群配置文档:Clustering Guide — RabbitMQ
镜像队列文档:Classic Queue Mirroring — RabbitMQ
集群操作文档:http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
中文版AMQP用户手册:
Spring AMQP文档:http://www.blogjava.net/qbna350816/category/55056.html?Show=All
事务文档:http://www.blogjava.net/qbna350816/archive/2016/08/13/431567.html
集群架构搭建配置HOST[5台]5台服务器配置Host, 参考虚拟机规划
vi /etc/hostname150改为rabbitmqmaster151改为rabbitmqso152改为rabbitmqst153改为haproxykm154改为haproxyksvi /etc/hosts192.168.247.150 rabbitmqmaster192.168.247.151 rabbitmqso192.168.247.152 rabbitmqst192.168.247.153 haproxykm192.168.247.154 haproxyks都修改完成后重启: 一定要重启, 我在这里就碰到了个大坑, 应为没有重启, 所以导致hostname没有生效 添加集群节点一致报错,我丢 重启后关闭防火墙
安装依赖环境[5台]yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz安装RabbitMQ[三台]150,151,152
# 我用的直接就是3.10.7版本, 我没有找到老版本的, 而且现在应该也都是新版本的了1: 安装参考安装与启动, 建议三台同时进行2: 关闭5台电脑的防火墙官方的部署文档, 应为是英文的, 看起来优点蒙圈, 哎, 探索新版本总是困难的, 但是也总要有人前行
访问控制台[三台]在虚拟机规划中有控制台地址
不知道为什么, 150,151,可以访问, 152又提示不是私密连接, 我就又创建了一个账户就可以了
150 toor 123456151 toor 123456152 toor 123456

经验总结扩展阅读