在Docker中搭建rabbit MQ集群 (Mac + OrbStack)

docker,rabbit,mq,mac,orbstack · 浏览次数 : 49

小编点评

搭建RabbitMQ集群的过程可能会遇到一些困难,但按照正确的步骤操作,你应该能够成功搭建。以下是在Mac上使用Kimi、文心一言、ChatGPT和Claude辅助搭建RabbitMQ集群的步骤: 1. 创建一个文件夹,如`rabbit3`,然后在其中创建`docker-compose.yml`文件。 2. 在`docker-compose.yml`文件中,定义三个RabbitMQ节点,分别为`rabbitmq1`、`rabbitmq2`和`rabbitmq3`。 3. 为每个节点指定图像、主机名、环境变量、端口、卷和网络。 4. 使用`external: true`参数让Docker Compose自动创建网络。 5. 启动容器时,使用`docker-compose up -d`命令。 6. 访问`http://localhost:15672`,使用`guest`账户登录。 7. 进入第一个节点的控制台,执行`rabbitmqctl stop_apprabbitmqctl reset`和`rabbitmqctl start_app`命令,以启动第二个和第三个节点。 8. 如果遇到问题,可以尝试使用其他工具,如`everestoss/rabbitmq-cluster-discovery`,但需要注意镜像的可用性。 在搭建过程中,你可能需要查看Docker Compose的文档和相关教程,以获取更多关于配置和启动容器的信息。此外,确保你的网络设置正确,以便容器之间可以互相通信。如果在搭建过程中遇到问题,可以尝试搜索相关的技术论坛或社区,或者寻求专业人士的帮助。

正文

我以为用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

创建集群

image

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

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

进入第二个和第三个节点的控制台,执行

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app

完了以后控制台自动刷新应该能看到三个节点了
image

敢惹我?后悔也晚了

集群助手

很多资料说可以用其他途径实现,我尝试了一些,大部分没尝试。
比如文心一言说可以使用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中搭建rabbit MQ集群 (Mac + OrbStack)

我以为用docker搭建一个rabbitMq集群会非常简单,但是结果却出乎意料,我花了差不多两个半天才搞定。这还是依赖了AI的协助,否则难度不敢想象。 我的环境是Mac上的OrbStack。用了Kimi + 文心一言 + ChatGPT + Claude,还是Kimi价值最大。 back and f

debian11 使用podman搭建 nacos-server

前言 基于debian11 + podman 搭建 nacos-server 用于简单测试。 nacos-server基于java,如果直接运行还要准备java环境,在docker/podman 镜像中发现了打包好的nacos-server镜像,集成了java和nacos-server。 正文 1.

手把手教你搭建Docker私有仓库Harbor

1、什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部署在本地云环境中,用于组织内部

harbor镜像仓搭建相关问题

1 环境 自己生成了SSL证书 证书目录与 harbor.cfg 文件中定义的路径需要一致 使用的是offline 包安装 执行 install.sh 脚本后,通过浏览器远程访问成功, 但是在别的机器上执行docker的登录指令报错: docker login 192.168.126.100 2 异

connect() failed (113: No route to host) while connecting to upstream

转载请注明出处: 用docker 搭建的服务,今天重启了一个容器之后,请求这个服务的接口都变成了 502, 但通过docker 查看日志,发现没有异常,端口也都是正常,在nginx的日志中看到了这段错误信息 在nginx 的日志中看到:connect() failed (113: No route

opengrok源代码在线阅读平台搭建及字体修改

服务搭建 我所编写的docker-compose.yml如下,成功运行后将源码目录移动至 /data/opengrok/src ,重启容器使得opengrok快速更新索引 services: opengrok: container_name: opengrok # 1.6版本在使用中还算稳定 ima

[转帖]Flannel 环境搭建与分析

https://switch-router.gitee.io/blog/flanenl/ 介绍 Flannel是CoreOS团队针对Kubernates设计的跨主机容器网络解决方案, 它可以使集群中不同节点上运行的docker容器都具有全集群唯一的虚拟IP地址。 举个例子,在一个由3台主机节点组成系

[转帖]Flannel 环境搭建与分析

https://switch-router.gitee.io/blog/flanenl/ 介绍 Flannel是CoreOS团队针对Kubernates设计的跨主机容器网络解决方案, 它可以使集群中不同节点上运行的docker容器都具有全集群唯一的虚拟IP地址。 举个例子,在一个由3台主机节点组成系

docker 搭建私有仓库并发布私有镜像

本文为博主原创,转载请注明出处: 1.自建私有docker仓库 自建一个Docker仓库,可以使用Docker官方提供的开源项目Docker Registry。以下是一些基本步骤: 安装Docker Registry: 在服务器上安装Docker引擎。 使用以下命令拉取Docker Registry

构建高可用性的 SQL Server:Docker 容器下的主从同步实现

摘要:本文将介绍如何在 Docker 环境下搭建 MS SQL Server 的主从同步,帮助读者了解主从同步的原理和实现方式,进而提高数据的可靠性和稳定性。 一、前言 在当今信息化的时代,数据的安全性和稳定性显得尤为重要。数据库是许多企业和组织存储和管理数据的核心,因此如何保证数据库的高可用性和数