Docker RabbitMQ镜像集群部署

本文详细介绍了如何使用Docker Compose部署RabbitMQ集群,包括RabbitMQ的端口介绍、架构解析、通信过程以及集群搭建步骤。通过创建和配置docker-compose.yml文件,设置Nginx反向代理,实现镜像集群通信,并使用Portainer进行容器界面化管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker RabbitMQ镜像集群部署

image-20221118162413491

1.RabbitMQ的端口号是什么?

  • 4369:erlang发现口号;

  • 5672 :这是RabbitMQ的端口号,client端通信口号;

  • 15672 :RabbitMQWeb管理界面ui的端口号;

  • 25672 :server间内部通信口号;

2.RabbitMQ的架构是什么样的?

publisher发消息(生产者)——> 消息队列[exchange交换机——>Routes路由——>Queue队列] ——>consumer收消息(消费者)

  • Publisher: 生产者,发布消息到MQ中的。
  • Consumer:消费者,从MQ中接收消息的。
  • Exchange:交换机,建立生产者和队列之间联系。
  • Queue:队列,存储消息的。
  • Routes:路由,交换机以什么样的策略将消息发送给队列。

RabbitMQ完整的结构图:

  • Virutal Host 是一个虚拟主机(逻辑上的一个隔断);
  • 虚拟主机里面有交换机;还有队列;
  • 生产者发消息给消费者,中间要找一个桥梁就是rabbitMQ;
  • 生产者发消息给队列首先要建立Connetion对象链接;有了链接之后就可以构建一个通道(Channel)了;一个通道对应一个交换机;
  • 交换机发送给队列需要通过路由routes;routes(路由)它决定了消息到底发送给哪一个队列;
  • 消费者想从队列里面取数据首先也是要建立一个链接Connection对象;有了链接就可以开辟一个通道了;

在这里插入图片描述

RabbitMQ的通信过程:

  • 1、生产者建立与MQ的连接。
  • 2、建立与具体交换机的通道。
  • 3、交换机根据不同的路由规则,将消息发送给对应的队列。
  • 4、消费者根据通道消费对应队列中的数据,消费一个数据队列中就少一个数据,一个队列中数据只能被消费一次

注意:

  • 消费掉一个数据,队列中就少一个数据;
  • 我们不希望各个生产者之间互相影响;所以我们要把他们进行隔离;隔离的方式就是创建虚拟机;

docker-compose部署RabbitMQ镜像集群

1、docker-ce安装

[root@localhost ~]# vim /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=0

[root@SPHQOPENAPIMQ01 ~]# yum install docker-ce -y
1.2.3.4.5.6.7.8.

2、docker-compose安装

[root@localhost ~]# yum install -y python-pip
[root@localhost ~]# pip install -U docker-compose
[root@localhost ~]# docker-compose version
docker-compose version 1.21.0, build 5920eb0
docker-py version: 3.2.1
CPython version: 2.7.5
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
1.2.3.4.5.6.7.

3、下载rabbitmq镜像

[root@localhost ~]# docker pull rabbitmq:3.8-management

4、编写docker-compose.yml

[root@Test rcloud]# cd /mnt/
[root@Test mnt]# mkdir RabbitMQ-Cluster
[root@Test mnt]# cd RabbitMQ-Cluster/
[root@Test RabbitMQ-Cluster]# ls
[root@Test RabbitMQ-Cluster]# vim docker-compose.yml
version: '3'
services:
    RabbitMQ1:
        image: rabbitmq:3.8-management
        container_name: RabbitMQ1
        ports:
          - "15673:15672"
          - "5673:5672"
        hostname: RabbitMQ1
        environment:
          - RABBITMQ_ERLANG_COOKIE=rabbitcookie
        volumes:
          - ./RabbitMQ1:/var/lib/rabbitmq
          - /etc/localtime:/etc/localtime

    RabbitMQ2:
        image: rabbitmq:3.8-management
        container_name: RabbitMQ2
        ports:
          - "15674:15672"
          - "5674:5672"
        hostname: RabbitMQ2
        environment:
          - RABBITMQ_ERLANG_COOKIE=rabbitcookie
        volumes:
          - ./RabbitMQ2:/var/lib/rabbitmq
          - /etc/localtime:/etc/localtime

    RabbitMQ3:
        image: rabbitmq:3.8-management
        container_name: RabbitMQ3
        ports:
          - "15675:15672"
          - "5675:5672"
        hostname: RabbitMQ3
        environment:
          - RABBITMQ_ERLANG_COOKIE=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WinJayX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值