普通集群:

创建过程

我们先在之前启动的mq容器中获取一个cookie值,作为集群的cookie。执行下面的命令:

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

可以看到cookie值如下:

EFLYOBKNYFETSAXOUEYI

接下来,停止并删除当前的mq容器,我们重新搭建集群。

docker rm -f mq

清理数据卷

docker volume prune

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

cd /tmp
# 创建文件
touch 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

创建 cookie文件

cd /tmp
# 创建cookie文件
touch .erlang.cookie
# 写入cookie
echo "EFLYOBKNYFETSAXOUEYI" > .erlang.cookie
# 修改cookie文件的权限
chmod 600 .erlang.cookie

创建集群目录

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

启动集群的准备

创建网络:

docker network create mq-net

分别创建mq的容器并执行

#创建mq1
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=root \
-e RABBITMQ_DEFAULT_PASS=root \
--name mq1 \
--hostname mq1 \
-p 8071:5672 \
-p 8081:15672 \
rabbitmq:3.8-management
#创建mq2
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=root \
-e RABBITMQ_DEFAULT_PASS=root \
--name mq2 \
--hostname mq2 \
-p 8072:5672 \
-p 8082:15672 \
rabbitmq:3.8-management
#创建mq3
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=root \
-e RABBITMQ_DEFAULT_PASS=root \
--name mq3 \
--hostname mq3 \
-p 8073:5672 \
-p 8083:15672 \
rabbitmq:3.8-management

镜像集群(在普通集群的基础上进行配置):

三种模式

exactly模式

rabbitmqctl set_policy ha-two "^two\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
  • rabbitmqctl set_policy:固定写法

  • ha-two:策略名称,自定义

  • "^two\.":匹配队列的正则表达式,符合命名规则的队列才生效,这里是任何以two.开头的队列名称

  • '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}': 策略内容

    • "ha-mode":"exactly":策略模式,此处是exactly模式,指定副本数量

    • "ha-params":2:策略参数,这里是2,就是副本数量为2,1主1镜像

    • "ha-sync-mode":"automatic":同步策略,默认是manual,即新加入的镜像节点不会同步旧的消息。如果设置为automatic,则新加入的镜像节点会把主节点中所有消息都同步,会带来额外的网络开销

all模式

rabbitmqctl set_policy ha-all "^all\." '{"ha-mode":"all"}'
  • ha-all:策略名称,自定义

  • "^all\.":匹配所有以all.开头的队列名

  • '{"ha-mode":"all"}':策略内容

    • "ha-mode":"all":策略模式,此处是all模式,即所有节点都会称为镜像节点

nodes模式

rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["rabbit@nodeA", "rabbit@nodeB"]}'
  • rabbitmqctl set_policy:固定写法

  • ha-nodes:策略名称,自定义

  • "^nodes\.":匹配队列的正则表达式,符合命名规则的队列才生效,这里是任何以nodes.开头的队列名称

  • '{"ha-mode":"nodes","ha-params":["rabbit@nodeA", "rabbit@nodeB"]}': 策略内容

    • "ha-mode":"nodes":策略模式,此处是nodes模式

    • "ha-params":["rabbit@mq1", "rabbit@mq2"]:策略参数,这里指定副本所在节点名称

仲裁队列

可视化界面创建

java代码创建

MQ集群(rabbitMQ)相关推荐

  1. RabbitMQ --- 惰性队列、MQ集群

    一.惰性队列 1.1.消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限.之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题. ...

  2. MQ高级(四)MQ集群

    一.集群分类 RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式. RabbitMQ的集群有两种模式: (1)普通集群:是一种分布式集群,将队列分散到 ...

  3. 搭建集群 RabbitMQ SHELL脚本实战_03

    接上一篇: (企业级) 搭建集群RabbitMQ 快速下载.安装.配置.部署_02 文章目录 一.shell脚本说明 1. 选择脚本的原因 2. 脚本总览 二.脚本实战 2.1. 工具依赖包 2.2. ...

  4. mq集群要建传输队列吗_面试官:消息队列这些我必问!

    作者:mousycoder segmentfault.com/a/1190000021054802 消息队列连环炮 项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? k ...

  5. mq集群要建传输队列吗_MQ集群配置详细说明

    1.创建队列管理器MQESB(1414)\QMESB1(1416)\QMESB2(1416)\QMGW(1410)\QMCLIENT(1420)\ 2.启动队列管理器 RUNMQSC QMESB(QM ...

  6. Java如何配置ibmmq集群_如何在IBM MQ集群中动态创建订阅?

    当我使用此代码作为订阅者时: class Product(model.Models): def saveProduct(self, product): if self.validateProduct( ...

  7. RabbitMQ高级指南:从配置、使用到高可用集群搭建

    本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...

  8. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  9. RabbitMQ 普通集群配置_04

    接上一篇:(企业级) 搭建集群 RabbitMQ SHELL脚本实战_03 文章目录 RabbiMQ简介 RabbiMQ模式 RabbiMQ特点 环境部署总览 一.基础配置及RabbitMQ 安装 1 ...

最新文章

  1. GraLSP | 考虑局部结构模式的GNN
  2. 第二百一十一天 how can i 坚持
  3. sklearn自学指南(part54)--高斯过程的核函数
  4. 小程序 --- 点击放大功能、获取位置信息、文字样式省略、页面跳转(navigateTo)
  5. 通过取父级for循环的i来理解闭包,iife,匿名函数
  6. mysql如何防止sql注入
  7. 【社招Java】腾讯、阿里,疯狂java讲义第五版pdf百度云
  8. 汇编语言之DOSBox
  9. 作业四:结对编程项目--四则运算
  10. 《论文阅读》LO-Net: Deep Real-time Lidar Odometry
  11. 将 EBS R12.1.1 升级到 R12.1.3
  12. 虚幻C++入门个人笔记(2)——标记宏、结构体枚举、资源加载、代理
  13. MacBook 版 IDEA- 2022.2 新版本UI插件
  14. steam游戏开发_如何从Steam Cloud下载保存的游戏
  15. 各国家 MCC 和 MNC 列表3
  16. 个人博客一文多发教程- OpenWriter管理工具基础使用方法
  17. 通俗易懂的安装MySQL步骤
  18. PCA参数,属性,接口列表
  19. Jmeter压力测试中的相关参数(QPS、TPS)
  20. 深度讲解Linux内存管理和Linux进程调度-打通任督二脉

热门文章

  1. Vue li始终前面有黑点
  2. [MRCTF2020]keyboard
  3. cocos2d-x 图片纹理优化 资源加载方案
  4. Linux设备模型(3)_Uevent
  5. 微信小程序 基础语法
  6. 神都夜行录怎么在电脑上玩 神都夜行录安卓模拟器教程
  7. Halcon例程分析8:投影变换矫正倾斜图像
  8. 图像矫正:桶形畸变矫正的原理及python简易实现与加速
  9. API网易考拉,根据ID取商品详情
  10. QT中关闭应用程序和窗口的函数(quit(),exit()以及close()的区别)