在Docker中搭建rabbit MQ集群 (Mac + OrbStack)
我以为用docker搭建一个rabbitMq集群会非常简单,但是结果却出乎意料,我花了差不多两个半天才搞定。这还是依赖了AI的协助,否则难度不敢想象。
我的环境是Mac上的OrbStack。用了Kimi + 文心一言 + ChatGPT + Claude,还是Kimi价值最大。
back and forth 的过程就不讲了,这里直接说一下正确步骤。
创建docker-compose文件
既然是集群,肯定要用到docker-compose了。
建一个文件夹,比如叫rabbit3.
在里面创建docker-compose.yml:
version: '3'
services:
rabbitmq1:
image: rabbitmq:3.6-management
hostname: rabbitmq1
environment:
- RABBITMQ_ERLANG_COOKIE='secretcookie'
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
- AUTOCLUSTER_TYPE=docker
- AUTOCLUSTER_DISCOVERY_NODE=rabbitmq1
ports:
- "5672:5672"
- "15672:15672"
volumes:
- ./data/rabbitmq1:/var/lib/rabbitmq
networks:
- rabbitmq-cluster
rabbitmq2:
image: rabbitmq:3.6-management
hostname: rabbitmq2
environment:
- RABBITMQ_ERLANG_COOKIE='secretcookie'
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
# - RABBITMQ_CLUSTER_FORMATION_PEER_DISCOVERY=docker
- AUTOCLUSTER_TYPE=docker
- AUTOCLUSTER_DISCOVERY_NODE=rabbitmq1
volumes:
- ./data/rabbitmq2:/var/lib/rabbitmq
networks:
- rabbitmq-cluster
ports:
- "15673:15672"
- "5673:5672"
depends_on:
- rabbitmq1
links:
- rabbitmq1
rabbitmq3:
image: rabbitmq:3.6-management
hostname: rabbitmq3
environment:
- RABBITMQ_ERLANG_COOKIE='secretcookie'
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
# - RABBITMQ_CLUSTER_FORMATION_PEER_DISCOVERY=docker
- AUTOCLUSTER_TYPE=docker
- AUTOCLUSTER_DISCOVERY_NODE=rabbitmq1
volumes:
- ./data/rabbitmq3:/var/lib/rabbitmq
networks:
- rabbitmq-cluster
ports:
- "15674:15672"
- "5674:5672"
depends_on:
- rabbitmq1
links:
- rabbitmq1
networks:
rabbitmq-cluster:
external: true
最后那里是external: true是因为我自己把网络提前创建好了。如果没有的话就把最后一行删掉就行。
单独创建网络的命令是 docker network create rabbitmq-cluster。
创建集群

先执行docker-compose up -d启动容器。启动以后访问本地的15672端口,用guest账户登陆。正常应该能看到一个节点在运行。

然后进入第一个节点的控制台,分别执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
进入第二个和第三个节点的控制台,执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
完了以后控制台自动刷新应该能看到三个节点了

敢惹我?后悔也晚了
集群助手
很多资料说可以用其他途径实现,我尝试了一些,大部分没尝试。
比如文心一言说可以使用docker 镜像everestoss/rabbitmq-cluster-discovery来自动搭建集群。但是我怎么也搜不到这个镜像。
docker mirror
本来我配置了阿里的mirror,但是怎么拉也拉不下新镜像。知乎了半天找到一个https://registry.dockermirror.com,配到orbStack上替换了阿里的,速度很快。但是几个小时后也不能用了。什么情况?
控制台没法登陆
可能由于我之前测试了太多其他版本的rabbitMq,集群启动后 http://localhost:15672/ 竟然打不开。准确说是打开了啥也看不到,F12也看不到报错。最后还是靠GPT3.5说清空浏览器缓存可以了。
其他版本
我之前是下载了3.12的镜像的,但是rabbitmqctl用不了。后来试了3.13也是一样的问题。3.7和3.8的镜像创建了容器连启动都启动不了,说数据库schema不对。最后还是用了3.6。
卷数据不能留
每次创建容器之前,上一次的卷一定要删掉。我是映射到文件夹里的data目录的,开始没删发现会影响新容器。所以上面说的3.8和3.9的schema不对有可能就是这个原因。
在Docker中搭建rabbit MQ集群 (Mac + OrbStack)的更多相关文章
- docker 中搭建 mysql pxc 集群
一.docker中创建pxc 容器 1.拉取PXC 镜像 pull docker pull percona/percona-xtradb-cluster:5.7.21 2.更改镜像名称为pxc t ...
- 使用Docker Swarm搭建分布式爬虫集群
https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653195618&idx=2&sn=b7e992da6bd1b2 ...
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- rancher1.X+docker+k8s搭建容器管理集群
一, 环境准备 服务器 Linux k8s-m -.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Li ...
- Docker中搭建zookeeper集群
1.获取官方镜像 从dockerhub获取官方的zookeeper镜像: docker pull zookeeper 2.了解镜像内容 拉取完镜像后,通过 docker inspect zookeep ...
- 从零开始学习docker之在docker中搭建redis(集群)
docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...
- 使用docker搭建hadoop分布式集群
使用docker搭建部署hadoop分布式集群 在网上找了非常长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,仅仅能自己写一个了. 一:环境准备: 1:首先要有一个Cento ...
- docker搭建redis主从集群和sentinel哨兵集群,springboot客户端连接
花了两天搭建redis主从集群和sentinel哨兵集群,讲一下springboot客户端连接测试情况 redis主从集群 从网上查看说是有两种方式:一种是指定配置文件,一种是不指定配置文件 引用地址 ...
- ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建
ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...
- Docker 搭建 Redis Cluster 集群环境
使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...
随机推荐
- 解决浏览器打不开github网站常用方法
switchHost使用指南 https://blog.csdn.net/weixin_45022563/article/details/123922815 下载软件: https://github. ...
- lodash中的深拷贝方法cloneDeep()
- C++ 类的继承(Inheritance)
一.继承(Inheritance) C++有一个很好的性质称为inheritance(继承),就是声明一个class(derived class),把另一个或多个class(base class)的所 ...
- 网络数据流分析工具TcpEngine V1.0.0教程-1
概述 目前主流的网络数据分析工具主要有两类,一类是http协议分析工具,如fiddler,这类工具擅长对字符串类型协议分析:另一类是原始网络数据包的监听分析,如Wireshark,这类工具擅长分析网络 ...
- Gitee千Star优质项目解析: ng-form-element低开引擎解析
好家伙, 在写项目的时候,我发现自己的平台的组件写的实在是太难看了,于是想去gitee上偷点东西,于是我们本期的受害者出现了 gitee项目地址 https://gitee.com/jjxliu306 ...
- 环境声音分类的深度 CNN 模型
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI 声音事件的分类精度与特征提取有很强的关系.本文将深度特征用于环境声音分类(ESC)问题.深层特征是通过使 ...
- pyinstaller 打包无窗口python http.server无法启动
最近在写一个简单的文件服务器用来访问静态文件,遇到在pyinstaller无窗口模式下无法启动的问题,记录一下解决方案. 原因:http.server需要将记录输出到窗口,而pyinstaller打包 ...
- shell脚本的调试
参数: -n :读一遍脚本中的命令但不执行,用于检查脚本中的语法错误 -v :一边执行脚本,一边将执行过的脚本命令打印到标准错误输出 -x :提供跟踪执行信息,将执行的每一条命令和结果依次打印出来 使 ...
- iOS面试题详解-开篇
一.前言 转眼之前,已经毕业5年,从事iOS开发5年.5年的时间说长不长,却把我从刚毕业的毛头小伙子变成了现在的"中年大叔",不仅仅是外表还有心态. 一方面不愿意接收自己形体的改变 ...
- vuex做购物车功能
先创建一个cart组件 <template> <div> <ListItem></ListItem> </div> </templat ...