使用Docker和DockerCompose搭建RabbitMQ

本文详细介绍了如何使用Docker Compose搭建RabbitMQ消息队列集群,包括安装Docker Compose、配置docker-compose.yml文件、启动MQ集群及实现队列镜像等步骤,确保高可用性。

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

安装docker-compose

  1. 下载
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
  1. 授权
chmod +x /usr/local/bin/docker-compose
  1. 软链
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  1. 查看安装是否成功
docker-compose -v

docker-compose.yml官方示例

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

version 指定了当前的的docker-compose 的版本,一般都是3.x了
services 直译过来就是服务,也就是下面可以都多个docker服
服务下面是多个docker容器,比如 web,这个是tags,这个容器启动后会被打上web标签
build 构建指令,可以执行dockerFile的路径,这个例子里面 . 就是当前目录
不用Dockerfile的话可以指定image
ports 下面可以指定多个端口映射,左边为宿主机端口,右边为容器端口
volumes 可以挂载容器的目录

开始搭建

编写docker-compose.yml

version: "3.1"
services:
  rabbit01: #节点1主节点 
    image: rabbitmq:management
    ports:  #端口映射
      - "5672:5672"
      - "15672:15672"
    hostname: rabbit01  #这个要记住,后面加入集群的时候会用到
    volumes:
      - /data/rabbitmq-compose/rabbitmq/log:/var/log/rabbitmq   #挂载日志目录
    environment:    #设置环境变量(配置文件参数),虚拟主机,用户名,密码
      - RABBITMQ_DEFAULT_VHOST=jenkin
      - RABBITMQ_DEFAULT_USER=jenkin
      - RABBITMQ_DEFAULT_PASS=123456
  rabbit02:
    image: rabbitmq:management
    ports:
      - "5673:5672"
      - "15673:15672"
    hostname: "rabbit02"
    links:   #关联主节点的hostname,方便容器内互相访问
      - rabbit01
    volumes:
      - /data/rabbitmq-compose/rabbitmq2/log:/var/log/rabbitmq
    environment:
      RABBITMQ_DEFAULT_VHOST: "jenkin"
      RABBITMQ_DEFAULT_USER: "jenkin"
      RABBITMQ_DEFAULT_PASS: "123456"

启动MQ

docker-compose  up -d

集群搭建

rabbitmq集群的搭建还需要保证机器之间的ERlang.cookie一样
可用通过docker logs xxxxxxx 找到对应的目录,我这边的目录就是var/lib/rabbitmq
在这里插入图片描述
退出容器,先把cookie文件复制出来,然后复制到另一台容器

docker exec -it 7207cf457eef /bin/bash
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbit01
rabbitmqctl start_app

这样集群就好了,不过还需要做队列的镜像才能实现高可用

队列镜像

在任意一台机器上执行以下命令
rabbitmqctl set_policy -p jenkin ha-all “^” "{‘ha-mode’:‘all’}

由于同步了多台机器之间的数据,所以吞吐量也会随之下降

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值