集群架构虚拟机规划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
文章插图
镜像模式
- 镜像模式: 集群模式非常经典的就是Mirror镜像模式, 保证100%数据不丢失, 在实际工作中也是用的最多的, 并且实现集群非常的简单, 一般互联网大厂都会构建这种镜像集群模式
- Mirror镜像队列, 目的是为了保证RabbitMQ数据的高可用性解决方案, 主要就是实现数据的同步, 一般来讲是2-3个节点实现数据同步[一般都是3节点+(奇数个节点)](对于100%数据可靠性解决方案一般都是3节点)集群架构如下
文章插图
服务器规划
- 架构: RabbitMQ Cluster + Queue HA + Haproxy + Keepalived
- 解释: 3台rabbitMQ服务器构建broker集群 , 允许任意2台服务器故障而服务不受影响 , 在此基础上,通过Queue HA (queue mirror)实现队列的高可用,在本例中镜像到所有服务器节点(即1个master,2个slave);为保证客户端访问入口地址的唯一性,通过haproxy做4层代理来提供MQ服务,并通过简单的轮询方式来进行负载均衡,设置健康检查来屏蔽故障节点对客户端的影响;使用2台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重启所有的RabbitMQ[三台]# 停止rabbitmqctl stop# 检测端口lsof -i:5672lsof -i:15672# 启动rabbitmq-server -detached文件同步步骤[150->151,152]因为我是最新版本安装的所以.erlang.cookie并没有在var/lib/rabbitmq下面, 而是在root下
scp /root/.erlang.cookie 192.168.247.151:/root/scp /root/.erlang.cookie 192.168.247.152:/root/选择150,151,152任意一个节点为Master, 我选择150, 也就是说需要把150的cookie文件同步到151,152节点上, 进入/root目录, ll -a才可以看到隐藏文件, 使用上面的命令发送就可以
注意: 需要在三台服务器RabbitMQ都启动的情况下, 去同步
节点加入集群[151,152]150直接启动即可
# 启动rabbitmq-server -detached151,152, 将自身加入集群
# 停止apprabbitmqctl stop_app# 将节点加入集群 --ram是采用内存的方式 151,采用内存, 152不加, 默认使用磁盘rabbitmqctl join_cluster --ram rabbit@rabbitmqmaster# 启动apprabbitmqctl start_app
推荐阅读
- centos7中配置java + mysql +jdk+使用jar部署项目
- 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上
- opencvcv.line
- 基于 Apache Hudi 极致查询优化的探索实践
- 14 基于SqlSugar的开发框架循序渐进介绍-- 基于Vue3+TypeScript的全局对象的注入和使用
- 【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问
- 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子
- 最高温度25度穿什么衣服合适 18-25度穿什么衣服合适
- pr基于当前字幕新建字幕怎么用 PR如何新建视频字幕
- 图片如何水印化 图片如何使用水印