MQ集群(rabbitMQ)
普通集群:
创建过程
我们先在之前启动的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)相关推荐
- RabbitMQ --- 惰性队列、MQ集群
一.惰性队列 1.1.消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限.之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题. ...
- MQ高级(四)MQ集群
一.集群分类 RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式. RabbitMQ的集群有两种模式: (1)普通集群:是一种分布式集群,将队列分散到 ...
- 搭建集群 RabbitMQ SHELL脚本实战_03
接上一篇: (企业级) 搭建集群RabbitMQ 快速下载.安装.配置.部署_02 文章目录 一.shell脚本说明 1. 选择脚本的原因 2. 脚本总览 二.脚本实战 2.1. 工具依赖包 2.2. ...
- mq集群要建传输队列吗_面试官:消息队列这些我必问!
作者:mousycoder segmentfault.com/a/1190000021054802 消息队列连环炮 项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? k ...
- mq集群要建传输队列吗_MQ集群配置详细说明
1.创建队列管理器MQESB(1414)\QMESB1(1416)\QMESB2(1416)\QMGW(1410)\QMCLIENT(1420)\ 2.启动队列管理器 RUNMQSC QMESB(QM ...
- Java如何配置ibmmq集群_如何在IBM MQ集群中动态创建订阅?
当我使用此代码作为订阅者时: class Product(model.Models): def saveProduct(self, product): if self.validateProduct( ...
- RabbitMQ高级指南:从配置、使用到高可用集群搭建
本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...
- RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02
服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...
- RabbitMQ 普通集群配置_04
接上一篇:(企业级) 搭建集群 RabbitMQ SHELL脚本实战_03 文章目录 RabbiMQ简介 RabbiMQ模式 RabbiMQ特点 环境部署总览 一.基础配置及RabbitMQ 安装 1 ...
最新文章
- GraLSP | 考虑局部结构模式的GNN
- 第二百一十一天 how can i 坚持
- sklearn自学指南(part54)--高斯过程的核函数
- 小程序 --- 点击放大功能、获取位置信息、文字样式省略、页面跳转(navigateTo)
- 通过取父级for循环的i来理解闭包,iife,匿名函数
- mysql如何防止sql注入
- 【社招Java】腾讯、阿里,疯狂java讲义第五版pdf百度云
- 汇编语言之DOSBox
- 作业四:结对编程项目--四则运算
- 《论文阅读》LO-Net: Deep Real-time Lidar Odometry
- 将 EBS R12.1.1 升级到 R12.1.3
- 虚幻C++入门个人笔记(2)——标记宏、结构体枚举、资源加载、代理
- MacBook 版 IDEA- 2022.2 新版本UI插件
- steam游戏开发_如何从Steam Cloud下载保存的游戏
- 各国家 MCC 和 MNC 列表3
- 个人博客一文多发教程- OpenWriter管理工具基础使用方法
- 通俗易懂的安装MySQL步骤
- PCA参数,属性,接口列表
- Jmeter压力测试中的相关参数(QPS、TPS)
- 深度讲解Linux内存管理和Linux进程调度-打通任督二脉