专栏首页生活不止眼前的代码RabbitMQ笔记(三)-基于Docker安装RabbitMQ集群

RabbitMQ笔记(三)-基于Docker安装RabbitMQ集群

RabbitMQ的镜像选择是rabbitmq:3.6.15-management

step1. 依次启动三个RabbitMQ的容器

RABBITMQ_ERLANG_COOKIE是配置erlang.cookie的值

.erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400。

具体的文件路径在 /var/lib/rabbitmq/.erlang.cookie

docker run -d --hostname rabbit1 --name myrabbit1 -p 8101:15672 -p 8201:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run -d --hostname rabbit2 --name myrabbit2 -p 8102:15672 -p 8202:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run -d --hostname rabbit3 --name myrabbit3 -p 8103:15672 -p 8203:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management

step2. 加入RabbitMQ节点到集群

设置节点1:

docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

设置节点2,加入到集群:

docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

参数“--ram”表示设置为内存节点,忽略次参数默认为磁盘节点。

设置节点3,加入到集群:

docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

安装完成,使用docker ps查看

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                                                                       NAMES
6e40e86437fa        rabbitmq:3.6.15-management   "docker-entrypoint..."   7 days ago          Up 5 days           4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:8203->5672/tcp, 0.0.0.0:8103->15672/tcp   myrabbit3
3def6fca813d        rabbitmq:3.6.15-management   "docker-entrypoint..."   7 days ago          Up 5 days           4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:8202->5672/tcp, 0.0.0.0:8102->15672/tcp   myrabbit2
28b198211066        rabbitmq:3.6.15-management   "docker-entrypoint..."   7 days ago          Up 5 days           4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:8201->5672/tcp, 0.0.0.0:8101->15672/tcp   myrabbit1

或者访问任意一个管理页面

step3. 配置集群同步信息

直接在管理页面配置

点击Admin -> Virtual Hosts

添加一个虚拟主机cluster2

再点击虚拟主机配置用户

点击Policies,配置高可用策略

ha-mode : all-所有节点互为镜像,exactly-指定镜像节点的数量,nodes-指定具体需要镜像的节点

ha-params:ha-mode=all,缺省,不需要填

​ ha-mode=exactly,指定几个节点为一组镜像节点

​ ha-mode=nodes,指定具体的节点,string类型

ha-sync-mode: 镜像队列中消息的同步方式,有效值为automatic,manually

这里指定了2个节点为镜像节点

回到Exchanges页面看到新增了默认的exchange

在Queues页面添加一个queue 查看该queue

可以看到在rabbit3有一份镜像

回到服务器停止rabbit1再次查看队列test

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RabbitMQ笔记(二)-在centos7上安装RabbitMQ

    yum install -y gcc glibc-devel make ncurses-devel openssl-devel xmlto

    yingzi_code
  • SpringCloudGateway笔记(6)-请求体不全

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    yingzi_code
  • Spring-LogBack笔记(2) - 配置文件

    默认配置是resource目录下的logback.xml也可以通过logging.file指定配置文件

    yingzi_code
  • python学习之selenium的xpath轴的用法,附案例

    在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。

    吾爱乐享
  • redis数据分布

    我们知道redis官方说他是可以支持10万/每秒的并发量,但是如果我们的业务场景需要100万/每秒呢?

    小土豆Yuki
  • 路径查找器AI

    问题源于我想建立一个游戏AI,它要能够定义一条从起点到终点的路径,同时避开路上的墙壁障碍物。为此,我写了一个C#库(path.dll),它允许定义一个二维空间(...

    东心木水
  • Rafy 领域实体框架 - 树型实体功能(自关联表)

    在 Rafy 领域实体框架中,对自关联的实体结构做了特殊的处理,下面对这一功能进行讲解。 场景 在开发数据库应用程序时,往往会遇到自关联表的场景。例如,分类信息...

    用户1172223
  • 重温数据结构:理解 B 树、B+ 树特点及使用场景

    B 树就是常说的“B 减树(B- 树)”,又名平衡多路(即不止两个子树)查找树,它和平衡二叉树的不同有这么几点:

    张拭心 shixinzhang
  • 从概念到实践,我们该如何构建自动微分库

    选自Medium 作者:Maciej Kula 机器之心编译 参与:程耀彤、蒋思源 像 PyTorch 或 TensorFlow 这样通用的自动微分框架是非常有...

    企鹅号小编
  • Neo4j-1.Neo4j基础

    悠扬前奏

扫码关注云+社区

领取腾讯云代金券