章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • linux

  • windows

  • 中间件

    • nginx

    • kafka

    • rabbitmq

      • Docker快速构建RabbitMQ集群
      • centos7.9部署keepalived
      • 应用性能监控-skywalking
    • 网络

    • 安全

    • 存储

    • 防火墙

    • 数据库

    • 系统

    • docker

    • other

    • 监控

    • 运维
    • 中间件
    • rabbitmq
    章工运维
    2024-04-16
    目录

    Docker快速构建RabbitMQ集群

    # 一、准备工作

    # 1、拉取rabbitmq镜像
    docker pull rabbitmq:3.9-management-alpine
    docker tag docker.io/rabbitmq:3.9-management-alpine rabbitmq3.9
    docker rmi docker.io/rabbitmq:3.9-management-alpine
    
    1
    2
    3
    # 2、安装docker-compose
    # 升级 pip
    pip3 install --upgrade pip
    # 指定 docker-compose 版本安装
    pip install docker-compose==1.22
    # 验证是否安装成功
    docker-compose -v
    
    1
    2
    3
    4
    5
    6
    # 3、创建相关目录
    # 创建存放rabbirmq 编排文件的目录
    mkdir -p /data/docker-compose/rabbitmq
    
    # 创建存放rabbitmq 同步文件的目录
    mkdir -p /data/docker-data/rabbitmq
    
    1
    2
    3
    4
    5
    # 3、集群规划
    容器名 IP 映射端口 MQ名称
    rabbitmq_1 170.200.8.101 5671:5672,15671:15672 mq1
    rabbitmq_2 170.200.8.102 5672:5672,15672:15672 mq2
    rabbitmq_3 170.200.8.103 5673:5672,15673:15672 mq3

    宿主机IP:192.168.78.200

    # 二、构建RabbitMQ集群

    # 1、编写dcoker-compose.yml
    cd /data/docker-compose/rabbitmq/
    vi docker-compose.yml
    
    version: "3.6"
    services:
      rabbitmq_server_1:
        image: rabbitmq3.9
        ports:
          - "5671:5672"
          - "15671:15672"
        volumes:
          - /data/docker-data/rabbitmq/1:/var/lib/rabbitmq
          - /data/docker-data/rabbitmq/hosts:/etc/hosts
          - /data/docker-data/rabbitmq/hostname:/etc/hostname
          - /data/docker-data/rabbitmq/mq_join_cluster.sh:/home/mq_join_cluster.sh
        environment:
          - RABBITMQ_DEFAULT_USER=root
          - RABBITMQ_DEFAULT_PASS=123456
        networks:
           rabbitmq:
             ipv4_address: 170.200.8.101
        hostname: mq1
        container_name: rabbitmq_1
    
      rabbitmq_server_2:
        image: rabbitmq3.9
        ports:
          - "5672:5672"
          - "15672:15672"
        volumes:
          - /data/docker-data/rabbitmq/2:/var/lib/rabbitmq
          - /data/docker-data/rabbitmq/hosts:/etc/hosts
          - /data/docker-data/rabbitmq/hostname:/etc/hostname
          - /data/docker-data/rabbitmq/mq_join_cluster.sh:/home/mq_join_cluster.sh
        environment:
          - RABBITMQ_DEFAULT_USER=root
          - RABBITMQ_DEFAULT_PASS=123456
        networks:
          rabbitmq:
            ipv4_address: 170.200.8.102
        hostname: mq2
        container_name: rabbitmq_2
    
      rabbitmq_server_3:
        image: rabbitmq3.9
        ports:
          - "5673:5672"
          - "15673:15672"
        volumes:
          - /data/docker-data/rabbitmq/3:/var/lib/rabbitmq
          - /data/docker-data/rabbitmq/hosts:/etc/hosts
          - /data/docker-data/rabbitmq/hostname:/etc/hostname
          - /data/docker-data/rabbitmq/mq_join_cluster.sh:/home/mq_join_cluster.sh
        environment:
          - RABBITMQ_DEFAULT_USER=root
          - RABBITMQ_DEFAULT_PASS=123456
        networks:
          rabbitmq:
            ipv4_address: 170.200.8.103
        hostname: mq3
        container_name: rabbitmq_3
    
    networks:
      rabbitmq:
        driver: bridge
        ipam:
          config:
            - subnet: "170.200.8.0/24"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    # 2、编写同步给三个容器的hosts文件
    cd /data/docker-data/rabbitmq
    vi hosts
    
    170.200.8.101   mq1
    170.200.8.102   mq2
    170.200.8.103   mq3
    
    1
    2
    3
    4
    5
    6
    # 3、编写同步给三个容器的hostname文件
    cd /data/docker-data/rabbitmq
    vi hostname 
    
    mq1
    mq2
    mq3
    
    1
    2
    3
    4
    5
    6
    # 4、编写mq2和mq3加入mq1集群的sh脚本
    cd /data/docker-data/rabbitmq
    vi mq_join_cluster.sh
    
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster rabbit@mq1
    rabbitmqctl start_app
    
    1
    2
    3
    4
    5
    6
    7
    # 5、开始构建rabbitmq集群服务
    cd /data/docker-compose/rabbitmq/
    docker-compose up -d
    
    1
    2
    # 6、使三个rabbitmq的/var/lib/rabbitmq/.erlang.cookie 内容相同
    docker cp rabbitmq_1:/var/lib/rabbitmq/.erlang.cookie .erlang.cookie
    docker cp .erlang.cookie rabbitmq_2:/var/lib/rabbitmq/.erlang.cookie
    docker cp .erlang.cookie rabbitmq_3:/var/lib/rabbitmq/.erlang.cookie
    
    1
    2
    3
    # 7、重新启动rabbitmq 这组服务

    rabbitmq的.erlang.cookie如果发生变化,都应该重启那个rabbitmq

    docker-compose restart
    
    1
    # 8、执行下面命令,将rabbitmq_2和rabbitmq_3加入集群
    docker exec -it rabbitmq_2 bash
    chmod 777 /home/mq_join_cluster.sh
    sh /home/mq_join_cluster.sh
    exit
    
    1
    2
    3
    4
    docker exec -it rabbitmq_3 bash
    chmod 777 /home/mq_join_cluster.sh
    sh /home/mq_join_cluster.sh
    exit
    
    1
    2
    3
    4
    # 9、查看集群是否搭建成功

    RabbitMQ Management (opens new window)

    9aa2396ac6832e99.png

    可以看到,集群已经正在运行了。

    集群中有三个节点,分别是mq1、mq2、mq3。


    原文链接 (opens new window)

    微信 支付宝
    上次更新: 2024/04/16, 17:30:00

    ← kafka工作原理 centos7.9部署keepalived→

    最近更新
    01
    shell脚本模块集合
    05-13
    02
    生活小技巧(认知版)
    04-29
    03
    生活小技巧(防骗版)
    04-29
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式