没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
全文可编辑 word 文档 页眉与背景水印可删除
1
运用.net core 中实例讲解 RabbitMQ 高可用
集群构建
目录
一、集群架构简介二、普通集群搭建 2.1 各个节点分别
安装 RabbitMQ2.2 把节点加入集群 2.3 代码演示普通集群的
问题三、镜像集群四、HAProxy 环境搭建。五、KeepAlived
环境搭建
一、集群架构简介
二、普通集群搭建
2.1 各个节点分别安装 RabbitMQ2.2 把节点加入集群
2.3 代码演示普通集群的问题
2.1 各个节点分别安装 RabbitMQ
2.2 把节点加入集群
2.3 代码演示普通集群的问题
三、镜像集群
四、HAProxy 环境搭建。
五、KeepAlived 环境搭建
一、集群架构简介
当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,
此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞
全文可编辑 word 文档 页眉与背景水印可删除
2
吐量的目的。RabbitMQ 集群是一个或多个节点的逻辑分组,
集群中的每个节点都是对等的,每个节点共享所有的用户,
虚拟主机,队列,交换器,绑定关系,运行时参数和其他分
布式状态等信息。一个高可用,负载均衡的 RabbitMQ 集群
架构应类似下图:
解析说明:
最下面层是 RabbitMQ 的集群,没有 ha 镜像时是普通集
群,普通集群的缺点是挂了一个机器,以这个机器为根的队
列就无法使用了(一个队列的数据只会存在一个节点),无
法实现高可用。
所以把队列变成镜像队列,这样每个节点都会有一份完
整的数据,有节点挂了也不影响使用,实现了高可用,但
RabbitMQ 集群本身没有实现负载均衡,也就是说对于一个三
全文可编辑 word 文档 页眉与背景水印可删除
3
节点的集群,
每个节点的负载可能都是不相同的。
HAProxy 层的作用就是为了实现 RabbitMQ 集群的负载均
衡,但一个节点的话显然也不能高可用,所以需要两个
HAProxy 实现 HaProxy 的高可用,但没法实现自动的故障转
移,就是 HAProxy1 挂了,
需要手动把 ip 地址改成 HAProxy2 的。
所以需要用到 KeepAlived,它通常由一主一备两个节点
组成,同一时间内只有主节点会提供对外服务,并同时提供
一个虚拟的 IP 地址 (Virtual Internet Protocol Address ,
简称 VIP),可以避免暴露真实 ip 。 如果主节点故障,那么
备份节点会自动接管 VIP 并成为新的主节点 ,直到原有的
主节点恢复。
生产环境架构应该为:
机器 1:RabbitMQ1,机器 2:RabbitMQ2,机器 3:
RabbitMQ3 , 机 器 4 : HAProxy+keeplived( 主 ) , 机 器
5(HAProxy+keeplived(备)。
这里资源原因只有 3 台机器,所以搭建架构为:
172.16.2.84(rabbit1)
RabbitMQ1,HAProxy+keeplived(主)
全文可编辑 word 文档 页眉与背景水印可删除
4
172.16.2.85(rabbit2)
RabbitMQ2,HAProxy+keeplived(备)
172.16.2.86(rabbit3)
RabbitMQ3
二、普通集群搭建
这里前面的章节功能使用是用的 docker 安装,这里集
群不用 docker,因为 docker 安装会有很多的映射,很容易
扰乱,装有 docker 的 rabbitmq 的,需要先把 docker 停掉。
这 里 准 备 了 3 台 机 器 , 172.16.2.84 ( rabbit1 ),
172.16.2.85(rabbit2),172.16.2.86(rabbit3),为了避免
混淆,下面都会用 rabbit1,rabbit2,rabbit3 称呼。
rabbit1,rabbit2,rabbit3 都执行一遍下面的安装。
1)安装前,先修改 hostname,因为 rabbitmq 集群通讯
需要用 hostname
rabbit1 机器执行
hostnamectl set-hostname rabbit1 --static
rabbit2 机器执行
hostnamectl set-hostname rabbit2 --static
rabbit3 机器执行
hostnamectl set-hostname rabbit3 --static
rabbit1,rabbit2,rabbit3 执行同样操作
#修改 hosts,因为 rabbitmq 通讯要通过 hostname
全文可编辑 word 文档 页眉与背景水印可删除
5
vi /etc/hosts
2)把 ip 对应 hostname 添加到后面
172.16.2.84 rabbit1
172.16.2.85 rabbit2
172.16.2.86 rabbit3
# 重启网络
systemctl restart network
# 重启机器
init 6
3)安装 Erlang
#第一步 运行 package cloud 提供的 erlang 安装脚本
curl -s
https://packagecloud.io/install/repositories/rabbit
mq/erlang/script.rpm.sh | sudo bash
#第二步 安装 erlang
剩余38页未读,继续阅读
资源评论
mmoo_python
- 粉丝: 3932
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一个简单的库存管理系统,使用PHP、JavaScript、Bootstrap和CSS开发
- Python(Tkinter+matplotlib)实现光斑处理系统源代码
- HC32F4A0-v2.2.0-LittleVgl-8.3-1111.zip, 基于HC32F4A0的LVGL8.3工程
- 220913201郭博宇数据结构3.docx
- 小米R3G路由器breed专属
- MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测(含完整的程序和代码详解)
- AN-HC32F4A0系列的外部存储器控制器EXMC -Rev1.1
- MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测(含完整的程序和代码详解)
- Firefox.apk
- 使用 PyTorch 实现 AlexNet 进行 MNIST 图像分类
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功