当前位置: 首页 > news >正文

RabbitMq(集群搭建)

一、集群分类

  • 普通集群

是一种分布式集群,将队列分散到各个节点上,提高整个集群的并发能力。

  • 镜像集群

是一种主从集群,在普通集群的基础上,添加了主从备份,提高了数据可用性。(镜像集群虽然支持主从,但不是强一致,有可能产生丢失数据的风险。3.8后采用仲裁队列来代替镜像集群,使用Raft协议来保持数据一致性)

1.1 普通集群

集群里面单个节点只有交换机和自己里面声明的队列以及其他节点的队列的元信息,当一个消费者访问当前节点,这个节点不存在该队列,这个节点将会通过队列的元信息找到这个队列所在节点,并返回数据。

在这里插入图片描述
1.1.2 从之前启动的mq获取一个公共的cookie

不同的mq节点是通过Erlang cookie进行通信的

docker exec -it mq cat /var/lib/rabbitmq/.erlang.cookie

VZIWBRQFZDOKLTNKVQDE

1.1.2 在/tmp目录新建一个配置文件 rabbitmq.conf

内容如下

loopback_users.guest = false
listeners.tcp.default = 5672
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@mq1
cluster_formation.classic_config.nodes.2 = rabbit@mq2
cluster_formation.classic_config.nodes.3 = rabbit@mq3

1.1.3 在/tmp下创建一个文件.erlang.cookie记录cookie,写入cookie

touch .erlang.cookie
echo "VZIWBRQFZDOKLTNKVQDE" > .erlang.cookie
chmod 600 .erlang.cookie #修改文件权限

1.1.4 创建mq三个目录并拷贝

mkdir mq1 mq2 mq3

cp rabbitmq.conf mq1
cp rabbitmq.conf mq2
cp rabbitmq.conf mq3
cp .erlang.cookie mq1
cp .erlang.cookie mq2
cp .erlang.cookie mq3

1.1.4 启动集群
分别是8871、8872、8873。控制台端口分别是8081、8082、8083

 #创建网络
docker network create mq-net 
#启动docker
#第一台
docker run -d --net mq-net \
-v ${PWD}/mq1/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123456 \
--name mq1 \
--hostname mq1 \
-p 8071:5672 \
-p 8081:15672 \
rabbitmq:3.8-management

#第二台
docker run -d --net mq-net \
-v ${PWD}/mq2/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123456 \
--name mq2 \
--hostname mq2 \
-p 8072:5672 \
-p 8082:15672 \
rabbitmq:3.8-management

#第三台
docker run -d --net mq-net \
-v ${PWD}/mq3/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123456 \
--name mq3 \
--hostname mq3 \
-p 8073:5672 \
-p 8083:15672 \
rabbitmq:3.8-management

访问8083
在这里插入图片描述
添加队列发现三个节点都有该队列,如果声明队列的节点挂了,队列就不存在了。

1.2 镜像集群

  • 本质上是主从模式。交换机、队列以及队列里面的消息会在mq的各个镜像节点中进行同步备份。
  • 创建队列的节点为该队列的主节点,备份到的其他节点为该队列的镜像节点。
  • 所有操作由主节点完成,然后同步给镜像节点。

1.3 仲裁队列

  • 仲裁队列:仲裁队列是3.8版本以后才有的新功能,用来替代镜像队列,具备下列特征:·
  • 与镜像队列一样,都是主从模式,支持主从数据同步
    给.
  • 使用非常简单,没有复杂的配置
  • 主从同步基于Raft协议,强一致

1.3.1 添加仲裁队列
Type选中Quorum,Node为主节点,其他为镜像节点
在这里插入图片描述

1.3.2 代码声明仲裁队列

在这里插入图片描述

连接集群
在这里插入图片描述

相关文章:

  • python requests.post请求404问题
  • Vue中如何使用Eachers
  • jvm VisualVM工具的使用:使用jvisualvm监控远程tomcat jvm进程
  • git commit后,如何撤销commit
  • SS-Model【3】:DeepLabv2
  • 基于springboot高校社团管理系统
  • 在线教育项目【老师服务】
  • 堆的应用:堆排序及TopK问题
  • 【Android development】系列_01创建安卓应用程序
  • Keras CIFAR-10图像分类 GoogleNet 篇
  • 详解react生命周期和在父子组件中的执行顺序
  • 2022年山东省安全员C证复训题库模拟考试平台操作
  • 《算法导论》第11章-散列表 11.1-直接寻址表 11.2 散列表
  • 归并排序算法
  • DNSPod十问百果园焦岳:为什么开水果店是一门高科技生意?
  • 分享的文章《人生如棋》
  • co模块的前端实现
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Java Agent 学习笔记
  • Node项目之评分系统(二)- 数据库设计
  • oschina
  • PHP CLI应用的调试原理
  • Python进阶细节
  • TypeScript实现数据结构(一)栈,队列,链表
  • Webpack 4 学习01(基础配置)
  • Yii源码解读-服务定位器(Service Locator)
  • 爱情 北京女病人
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于 Babel 的 npm 包最小化设置
  • 如何利用MongoDB打造TOP榜小程序
  • 为什么要用IPython/Jupyter?
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # Maven错误Error executing Maven
  • #pragma data_seg 共享数据区(转)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (27)4.8 习题课
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (分布式缓存)Redis持久化
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (学习日记)2024.01.09
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET CLR Hosting 简介
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET轻量级ORM组件Dapper葵花宝典
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [BJDCTF2020]The mystery of ip
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算