使用Docker-Compose安装RabbitMq的集群(包含单机和多机)两种形式搭建

第一种(单机部署RabbitMq的集群)

步骤1 先创建对应的挂载目录和shell脚本

mkdir -p /tmp/rabbitmq1/lib

mkdir -p /tmp/rabbitmq2/lib

mkdir -p /tmp/rabbitmq3/lib

mkdir -p /tmp/rabbitmq1/log

mkdir -p /tmp/rabbitmq2/log

mkdir -p /tmp/rabbitmq3/log

节点1(主节点脚本) vi /tmp/rabbitmq1/rabbitmq-ram.sh

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl start_app

节点2(节点脚本) vi /tmp/rabbitmq2/ rabbitmq-disk

rabbitmqctl stop_app

rabbitmqctl join_cluster --ram rabbit@rabbit_host1

rabbitmqctl start_app

节点3(节点脚本) vi /tmp/rabbitmq3/ rabbitmq-disk

rabbitmqctl stop_app

rabbitmqctl join_cluster --ram rabbit@rabbit_host1

rabbitmqctl start_app

步骤 2 创建docker-compose.yml文件并执行(docker-compose up -d

version: '3'

services:

  rabbitmq1:

    image: rabbitmq:management

    container_name: rabbitmq1

    hostname: rabbit_host1

    ports:

    - "5672:5672"

    - "15672:15672"

    volumes:

    - /tmp/rabbitmq1/lib:/var/lib/rabbitmq

    - /tmp/rabbitmq1/log:/var/log/rabbitmq

- /tmp/rabbitmq1/rabbitmq-ram.sh:/opt/rabbitmq/rabbitmq-ram.sh

restart: always

    environment:

    - RABBITMQ_DEFAULT_USER=admin

    - RABBITMQ_DEFAULT_PASS=1234

    - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION

    - RABBITMQ_NODENAME:rabbitmq1

    networks:

- rabbitmq

  rabbitmq2:

    image: rabbitmq:management

    container_name: rabbitmq2

    hostname: rabbit_host2

    ports:

    - "5673:5672"

- "15673:15672"

depends_on:

- "rabbitmq1"

    volumes:

    - /tmp/rabbitmq2/lib:/var/lib/rabbitmq

    - /tmp/rabbitmq2/log:/var/log/rabbitmq

- /tmp/rabbitmq2/rabbitmq-disk.sh:/opt/rabbitmq/rabbitmq-disk.sh

restart: always

environment:

- RABBITMQ_DEFAULT_USER=admin

- RABBITMQ_DEFAULT_PASS=1234

- RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION

- RABBITMQ_NODENAME:rabbitmq2

 - RABBITMQ_CLUSTERED=true

- RABBITMQ_CLUSTER_WITH=rabbit@rabbitmq1

 - RABBITMQ_RAM_NODE=true

 networks:

- rabbitmq

rabbitmq3:

image: rabbitmq:management

container_name: rabbitmq3

hostname: rabbit_host3

ports:

 - "5674:5672"

- "15674:15672"

depends_on:

- "rabbitmq1"

volumes:

- /tmp/rabbitmq3/lib:/var/lib/rabbitmq

- /tmp/rabbitmq3/log:/var/log/rabbitmq

- /tmp/rabbitmq3/rabbitmq-disk.sh:/opt/rabbitmq/rabbitmq-disk.sh

restart: always

environment:

- RABBITMQ_DEFAULT_USER=admin

- RABBITMQ_DEFAULT_PASS=1234

- RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION

- RABBITMQ_NODENAME:rabbitmq3

- RABBITMQ_CLUSTERED=true

- RABBITMQ_CLUSTER_WITH=rabbit@rabbitmq1

- RABBITMQ_RAM_NODE=true

networks:

- rabbitmq

networks:

  rabbitmq:

    driver: bridge

3 分别进入3个节点的容器中,并分别执行(shell脚本)

sh  /opt/rabbitmq/rabbitmq-ram.sh

sh  /opt/rabbitmq/ rabbitmq-disk.sh

sh  /opt/rabbitmq/ rabbitmq-disk.sh

#4 查看集群节点状态,配置启动了3个节点,1个磁盘节点和2个内存节点(随便在一个节点的容器中执行该命令)

rabbitmqctl cluster_status

#5 创建好集群好我们要给集群加一个虚拟机环境/dev 以免程序报错

6 我们不能直接关机,要输入docker-compose down把容器关了再关机否则容器造成集群失败

集群重启顺序

集群重启的顺序是固定的,并且是相反的

启动顺序:磁盘节点 => 内存节点

关闭顺序:内存节点 => 磁盘节点

最后关闭必须是磁盘节点,否则容易造成集群启动失败、数据丢失等异常情况

因为这里使用的是Docker-Compose所以我们让从节点都依赖于主节点,只有主节点启动后,从节点才会启动,关闭是自动先关闭的是从节点,注意我们一定不能直接关机,要输入docker-compose down把容器关了再关机否则容器造成集群失败

depends_on:

- "rabbitmq1"

集群失败后重建集群

如果要重建集群的话必须把rabbitmq lib目录中的/mnesi目录删除掉

第二种(多机部署RabbitMq的集群)

除了docker-compose.yml的内容与单机部署不同之外,其他步骤均相同

docker-compose.yml三个机器都要写

机器1 (启动集群时先启动该机器,关闭时先关闭它)192.168.66.188

services:

  rabbitmq1:

    image: rabbitmq:management

    container_name: rabbitmq1

    hostname: rabbit_host1

    ports:

    - "4369:4369"

    - "5671:5671"

    - "5672:5672"

    - "15671:15671"

    - "15672:15672"

    - "25672:25672"

    extra_hosts:

    - "rabbit_host1:192.168.66.188"

    - "rabbit_host2:192.168.66.47"

    - "rabbit_host3:192.168.66.189"

    volumes:

    - /tmp/rabbitmq/lib:/var/lib/rabbitmq

    - /tmp/rabbitmq/log:/var/log/rabbitmq

    - /tmp/rabbitmq/rabbitmq-ram.sh:/opt/rabbitmq/rabbitmq-ram.sh

    restart: always

    environment:

    - RABBITMQ_DEFAULT_USER=admin

    - RABBITMQ_DEFAULT_PASS=1234

    - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION

    - RABBITMQ_NODENAME:rabbitmq1

机器2 192.168.66.47

version: '3'

services:

  rabbitmq2:

    image: rabbitmq:management

    container_name: rabbitmq2

    hostname: rabbit_host2

    ports:

    - "4369:4369"

    - "5671:5671"

    - "5672:5672"

    - "15671:15671"

    - "15672:15672"

    - "25672:25672"

    extra_hosts:

    - "rabbit_host1:192.168.66.188"

    - "rabbit_host2:192.168.66.47"

    - "rabbit_host3:192.168.66.189"

    volumes:

    - /tmp/rabbitmq/lib:/var/lib/rabbitmq

    - /tmp/rabbitmq/log:/var/log/rabbitmq

    - /tmp/rabbitmq/rabbitmq-disk.sh:/opt/rabbitmq/rabbitmq-disk.sh

    restart: always

    environment:

    - RABBITMQ_DEFAULT_USER=admin

    - RABBITMQ_DEFAULT_PASS=1234

    - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION

- RABBITMQ_NODENAME:rabbitmq2

机器3  192.168.66.189

version: '3'

services:

  rabbitmq3:

    image: rabbitmq:management

    container_name: rabbitmq3

    hostname: rabbit_host3

    ports:

      - "4369:4369"

      - "5671:5671"

      - "5672:5672"

      - "15671:15671"

      - "15672:15672"

      - "25672:25672"

    extra_hosts:

      - "rabbit_host1:192.168.66.188"

      - "rabbit_host2:192.168.66.47"

      - "rabbit_host3:192.168.66.189"

    volumes:

    - /tmp/rabbitmq/lib:/var/lib/rabbitmq

    - /tmp/rabbitmq/log:/var/log/rabbitmq

    - /tmp/rabbitmq/rabbitmq-disk.sh:/opt/rabbitmq/rabbitmq-disk.sh

    restart: always

    environment:

    - RABBITMQ_DEFAULT_USER=admin

    - RABBITMQ_DEFAULT_PASS=1234

    - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION

    - RABBITMQ_NODENAME:rabbitmq3

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要安装Docker Compose的RabbitMQ,请按照以下步骤操作: 1. 首先,确保您已经安装DockerDocker Compose。如果没有,请先安装它们。 2. 创建一个名为docker-compose.yml的文件,并将以下内容复制到文件中: ``` version: '3' services: rabbitmq: image: rabbitmq:3-management ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: password ``` 3. 在终端中,导航到包含docker-compose.yml文件的目录,并运行以下命令: ``` docker-compose up -d ``` 这将启动RabbitMQ容器,并将其绑定到5672和15672端口。 4. 现在,您可以通过浏览器访问RabbitMQ管理界面,该界面位于http://localhost:15672。使用用户名“admin”和密码“password”登录。 5. 您现在已经成功安装Docker Compose的RabbitMQ。 ### 回答2: Docker-compose 是一个用于管理多个容器的工具。而 RabbitMQ 则是一个开源消息代理系统,可以用于提供消息传递、任务分发等功能,它的特点是高效稳定,常用于分布式系统中的消息传递。 下面是安装 RabbitMQ 的步骤: 1.安装 Dockerdocker-compose。 首先需要确保已经安装Dockerdocker-compose 工具,如果没有安装,则需要先安装它们。 2.编写 docker-compose.yml 文件。 在安装 RabbitMQ 之前,需要编写一个 docker-compose.yml 文件,用于定义容器的配置信息。下面是一个示例文件: ```yaml version: '3' services: rabbitmq: image: rabbitmq:3-management-alpine ports: - "5672:5672" - "15672:15672" hostname: rabbitmq environment: RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: admin ``` 以上代码定义了一个名为 rabbitmq 的服务,使用的是 rabbitmq:3-management-alpine 镜像,这个镜像包含RabbitMQ 以及其管理页面。 通过 ports 字段将容器内的 5672 和 15672 端口映射到主机的这两个端口上,好让外部应用程序可以连接和访问 RabbitMQ 的管理页面。 然后通过 environment 字段,指定了 RabbitMQ 的默认用户名和密码,方便管理和访问。 3.启动 RabbitMQ 容器。 编写好 docker-compose.yml 文件之后,可以通过以下命令启动 RabbitMQ 容器: ```bash docker-compose up -d ``` 上述命令中,-d 表示在后台运行容器,如果不加该选项,则容器会在控制台中运行。 4.验证 RabbitMQ 安装是否成功。 启动 RabbitMQ 容器之后,可以使用以下命令查看容器是否正在运行: ```bash docker-compose ps ``` 输出如下信息表明容器正在运行: ```text Name Command State Ports ----------------------------------------------------------------------------------------------------- rabbitmq docker-entrypoint.sh rabbi ... Up 0.0.0.0:15672->15672/tcp, 0.0.0.0:5672->5672/tcp ``` 然后在浏览器中访问 localhost:(主机端口号) 来访问 RabbitMQ 管理页面。 到此,RabbitMQ 安装已经完成,可以开始使用它的消息传递功能了。 ### 回答3: Docker-composeDocker的一个组件,可以通过Compose文件中定义的多个服务来运行容器,并实现容器间的通信。RabbitMQ是一种可靠的、高效的消息队列系统,可以在分布式系统中作为异步通信的重要组件。本文将介绍如何使用docker-compose安装RabbitMQ。 首先,需要安装dockerdocker-compose安装方法可以参考官网教程。 接下来,在本地项目目录中创建docker-compose.yml文件,文件中定义了一个RabbitMQ服务,如下所示: version: '3' services: rabbitmq: image: rabbitmq:3-management ports: - "5672:5672" - "15672:15672" environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_DEFAULT_PASS=pass 在此docker-compose.yml文件中,定义了一个名为rabbitmq的服务,使用rabbitmq:3-management镜像,并在宿主机上暴露了5672和15672端口。5672端口是RabbitMQ的AMQP协议端口,用于生产和消费消息,而15672端口是RabbitMQ的管理控制台端口,用于管理RabbitMQ服务器。 关于启动和停止RabbitMQ服务的命令分别为: docker-compose up -d docker-compose down 其中,-d参数表示后台运行,即不会阻塞控制台,您可以在启动RabbitMQ服务后使用docker-compose ps命令来查看服务运行状态。在启动服务后,可以使用默认的用户名和密码(admin/pass)来登录管理控制台。也可以使用docker-compose logs命令来查看服务日志。 到此,我们就成功安装RabbitMQ服务,从而可以在分布式系统中使用它来进行异步通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值