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

MSMQ消息队列》》Rabbit MQ》》集群

普通集群

相互通信,cookie必须保持一致,
将一台主机上的 .erlang.cookie 文件拷贝到其他两台主机上。该 cookie 文件相当于密钥令牌,集群中的 RabbitMQ 节点需要通过交换密钥令牌以获得相互认证,
因此处于同一集群的所有节点需要具有相同的密钥令牌,否则在搭建过程中会出现 Authentication Fail 错误。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

## RABIITMQ_NODENAME  命名规范具体规则如下:第一种:配置的名字里面加了@,那么 @后面必须要跟你的**主机名**--hostname),否则启动会报错。这种情况启动后的节点名称就和你配置文件里面的名称一致第二种:配置的名字里面没有@,那么启动后的的节点名称,mq会自动加上@+主机名,节点名称就是--配置名称+@+主机名

在这里插入图片描述
在这里插入图片描述

# 通常需要把三个rabbitmq,部署到不同的主机上。我这边部署到同一台计算机了 相互通信,cookie 名称必须保持一致,
# 创建共享网络
# 也可以设置 账号和密码-e RABBITMQ_DEFAULT_USER=admin      设置默认用户名。-e RABBITMQ_DEFAULT_PASS=admin      设置默认密码。
#   如果要设置 数据持久化 
# 要在宿主机创建文件夹 
>mkdir -p  /home/middleware/rabbitmq/data
>mkdir -p  /home/middleware/rabbitmq/logs-v  宿主路径:rabbitmq的容器数据路径 -v /home/middleware/rabbitmq/data:/var/lib/rabbitmq \  # 挂载数据目录-v /home/middleware/rabbitmq/logs:/var/log/rabbitmq \  # 挂载日志目录docker network create rabbitnet
docker run -itd --rm --name rabbitmq_1 --network rabbitnet   --hostname Node1  -e RABIITMQ_NODENAME=rabbit  -e RABBITMQ_ERLANG_COOKIE='rabbitmq-cookie' -p 5571:5672 -p 15571:15672 rabbitmq:4-management
docker run -itd --rm --name rabbitmq_2 --network rabbitnet   --hostname Node2  -e RABIITMQ_NODENAME=rabbit  -e RABBITMQ_ERLANG_COOKIE='rabbitmq-cookie' -p 5572:5672 -p 15572:15672 rabbitmq:4-management
docker run -itd --rm --name rabbitmq_3 --network rabbitnet   --hostname Node3  -e RABIITMQ_NODENAME=rabbit  -e RABBITMQ_ERLANG_COOKIE='rabbitmq-cookie' -p 5573:5672 -p 15573:15672 rabbitmq:4-management##  进去容器中 加入集群
docker exec -it 容器名称  /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@节点名称
rabbitmqctl start_app

在这里插入图片描述

》》查看三个容器的IP信息
docker inspect 容器ID|容器名称
docker inspect rabbitmq_2

在这里插入图片描述
》》》补偿一个知识 docker cp 可以实现 本地和容器之间 互传文件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过 docker compose 实现

要在宿主机创建文件夹

mkdir -p /home/middleware/rabbitmq/data
mkdir -p /home/middleware/rabbitmq/logs


services:rabbitmqA:container_name: rabbitmq-Container-Aimage: rabbitmq:4-managementhostname: Node1ports:- 5571:5672- 15571:15672volumes:     - /home/middleware/rabbitmq/data:/var/lib/rabbitmq   # 挂载数据目录- /home/middleware/rabbitmq/logs:/var/log/rabbitmq   # 挂载日志目录environment:- RABBITMQ_ERLANG_COOKIE=ZEN- RABBITMQ_NODENAME=rabbit@Node1- RABBITMQ_DEFAULT_VHOST=Zen_vhost- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=adminrabbitmqB:container_name: rabbitmq-Container-Bimage: rabbitmq:4-managementhostname: Node2ports:- 5572:5672- 15572:15672volumes:     - /home/middleware/rabbitmq/data:/var/lib/rabbitmq   # 挂载数据目录- /home/middleware/rabbitmq/logs:/var/log/rabbitmq   # 挂载日志目录environment:- RABBITMQ_ERLANG_COOKIE=ZEN- RABBITMQ_NODENAME=rabbit@Node2- RABBITMQ_DEFAULT_VHOST=Zen_vhost- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=adminrabbitmqC:container_name: rabbitmq-Container-Cimage: rabbitmq:4-managementhostname: Node3volumes:  - /home/middleware/rabbitmq/data:/var/lib/rabbitmq   # 挂载数据目录- /home/middleware/rabbitmq/logs:/var/log/rabbitmq  # 挂载日志目录ports:- 5573:5672- 15573:15672environment:- RABBITMQ_ERLANG_COOKIE=ZEN- RABBITMQ_NODENAME=rabbit@Node3- RABBITMQ_DEFAULT_VHOST=Zen_vhost- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=admin

在这里插入图片描述

在这里插入图片描述

##  进去容器中 加入集群
docker exec -it 容器名称  /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@节点名称
rabbitmqctl start_app

在这里插入图片描述

镜像队列集群 镜像集群模式(高可用性)

这种模式,才是所谓的 RabbitMQ 的高可用模式。跟普通集群模式不一样的是,在镜像集群模式下,你创建的 queue,无论元数据还是 queue 里的消息都会存在于多个实例上,就是说,每个 RabbitMQ 节点都有这个 queue 的一个完整镜像,包含 queue 的全部数据的意思。然后每次你写消息到 queue 的时候,都会自动把消息同步到多个实例的 queue 上。

在这里插入图片描述

在这里插入图片描述

rabbitmqctl set_policy -p Zen_vhost --priority 1 --apply-to all myPolicy “^zen.*” ‘{“ha-mode”:“all”}’

相关文章:

  • Linux进程调度的理解
  • chown修改不成功的解决方案
  • 苹果企业签名有什么限制
  • 9.安卓逆向2-frida hook技术-frida基本使用-frida-ps指令
  • deepseek辅助编写的支持gmp高精度运算duckdb客户端
  • 二重积分 面积微元 微小矩形 dxdy 微小扇形 r * drdθ
  • chili3d 笔记15 生成投影工程图
  • 【MySQL】第12节|MySQL 8.0 主从复制原理分析与实战(二)
  • 基于BERT和GPT2的实现来理解Transformer的结构和原理
  • UART通信HAL库API
  • Pydantic 是一个 Python 库,核心是做数据验证、设置管理和数据转换
  • 知行之桥如何将消息推送到钉钉群?
  • php中配置variables_order详解
  • 监控 Oracle Cloud 负载均衡器:使用 Applications Manager 释放最佳性能
  • 使用Nginx + Keepalived配置实现Web站点高可用方案
  • UE5 编辑器工具蓝图
  • Chroma 向量数据库使用示例
  • 可视化图解算法46:用两个栈实现队列
  • 6.4.2_3最短路径问题_Floyd算法
  • Open3D上可视化Nuscenes 数据集
  • 如何做网站引流/昆明装饰企业网络推广
  • 广州做网站/seo网站快排
  • 常州公诚建设项目管理有限公司官方网站/珠海网站seo
  • 实时定量引物设计网站怎么做/seo推广是什么意思呢
  • 网站基础功能/武汉大学人民医院精神科
  • 注册公司网站怎么收费/东莞关键词排名推广