Docker 之 部署RabbitMQ集群并实现Haproxy代理(二)

前言

本小节学习一下使用Docker-compose部署Rabbitmq集群。

  • 目录参考

    [root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]# pwd
    /workspace/rabbitmq
    [root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]# tree
    .
    ├── config
    │   └── docker-compose.yml
    ├── data
    ├── haproxy-etc
    │   └── haproxy.cfg
    ├── rabbitmq1
    ├── rabbitmq2
    └── rabbitmq3
    
    6 directories, 2 files
    [root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]# 
    
  • 创建RabbitMQ集群共享网络

    docker network create rabbitmqnet
    
  • docker-compose.yml

    version: '3.7'
    services:
      rabbitmq1:
        image: rabbitmq:3.8-rc-management
        container_name: rabbitmq1
        restart: always
        ports:
            - 5672:5672
            - 15672:15672
        volumes:
          - /workspace/rabbitmq/data/rabbitmq1:/var/lib/rabbitmq:z
        environment:
            RABBITMQ_DEFAULT_USER: 'Dustyone'
            RABBITMQ_DEFAULT_PASS: 'bai5331359'
            RABBITMQ_NODENAME: 'rabbitmq1'
            RABBITMQ_ERLANG_COOKIE: 'Dustyone-Murex-cluster-cookie'
        hostname: rabbitmq1
        
      rabbitmq2:
        image: rabbitmq:3.8-rc-management
        container_name: rabbitmq2
        restart: always
        ports:
          - 5673:5672
          - 15673:15672
        volumes:
          - /workspace/rabbitmq/data/rabbitmq2:/var/lib/rabbitmq:z
        environment:
            RABBITMQ_DEFAULT_USER: 'Dustyone'
            RABBITMQ_DEFAULT_PASS: 'bai5331359'
            RABBITMQ_NODENAME: 'rabbitmq2'
            RABBITMQ_ERLANG_COOKIE: 'Dustyone-Murex-cluster-cookie'
        hostname: rabbitmq2
        links:
        - rabbitmq1
              
      rabbitmq3:
        image: rabbitmq:3.8-rc-management
        container_name: rabbitmq3
        restart: always
        ports:
            - 5674:5672
            - 15674:15672
        volumes:
            - /workspace/rabbitmq/data/rabbitmq3:/var/lib/rabbitmq:z
          
        environment:
            RABBITMQ_DEFAULT_USER: 'Dustyone'
            RABBITMQ_DEFAULT_PASS: 'bai5331359'
            RABBITMQ_NODENAME: 'rabbitmq3'
            RABBITMQ_ERLANG_COOKIE: 'Dustyone-Murex-cluster-cookie' 
        hostname: rabbitmq3
        links:
        - rabbitmq1
        - rabbitmq2
              
      rabbitmq-haproxy:
        image: haproxy
        container_name: rabbitmq-haproxy
        restart: always
        ports:
          - 8002:8002
          - 5677:5677
          - 8001:8001
        volumes:
          - /workspace/rabbitmq/haproxy-etc:/usr/local/etc/haproxy:ro
        links:
        - rabbitmq1
        - rabbitmq2
        - rabbitmq3
        
    networks:
       default:
        external:
          name: rabbitmqnet
    
  • 执行docker-compose.yml

    docker-compose up -d
    
    [root@iZ2ze8sm5upgi8z1dcazqeZ config]# docker ps -a
    CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                                                                                        NAMES
    cec0d4ee030d        haproxy                           "/docker-entrypoint.…"   14 seconds ago      Up 12 seconds       0.0.0.0:5677->5677/tcp, 0.0.0.0:8001-8002->8001-8002/tcp                                     rabbitmq-haproxy
    0d2d75c99c6a        rabbitmq:3.8-rc-management        "docker-entrypoint.s…"   14 seconds ago      Up 13 seconds       4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5674->5672/tcp, 0.0.0.0:15674->15672/tcp   rabbitmq3
    4e89fa1f2eba        rabbitmq:3.8-rc-management        "docker-entrypoint.s…"   15 seconds ago      Up 14 seconds       4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5673->5672/tcp, 0.0.0.0:15673->15672/tcp   rabbitmq2
    af6dfb7ca16c        rabbitmq:3.8-rc-management        "docker-entrypoint.s…"   15 seconds ago      Up 15 seconds       4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp   rabbitmq1
    
  • 将rabbitmq2和rabbitmq3两个节点加入rabbitmq1节点以形成集群。

    ### Disk Node
    docker exec rabbitmq2 bash -c \
    "rabbitmqctl stop_app && \
    rabbitmqctl reset && \
    rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && \
    rabbitmqctl start_app"
    
    ### Ram Node
    # docker exec rabbitmq3 bash -c \
    "rabbitmqctl stop_app && \
    rabbitmqctl reset && \
    rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1 && \
    rabbitmqctl start_app"
    
    [root@iZ2ze8sm5upgi8z1dcazqeZ config]# docker exec rabbitmq2 bash -c \
    > "rabbitmqctl stop_app && \
    > rabbitmqctl reset && \
    > rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && \
    > rabbitmqctl start_app"
    Stopping rabbit application on node rabbitmq2@rabbitmq2 ...
    Resetting node rabbitmq2@rabbitmq2 ...
    Clustering node rabbitmq2@rabbitmq2 with rabbitmq1@rabbitmq1
    Starting node rabbitmq2@rabbitmq2 ...
     completed with 3 plugins.
    [root@iZ2ze8sm5upgi8z1dcazqeZ config]# docker exec rabbitmq3 bash -c \
    > "rabbitmqctl stop_app && \
    > rabbitmqctl reset && \
    > rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1 && \
    > rabbitmqctl start_app"
    Stopping rabbit application on node rabbitmq3@rabbitmq3 ...
    Resetting node rabbitmq3@rabbitmq3 ...
    Clustering node rabbitmq3@rabbitmq3 with rabbitmq1@rabbitmq1
    Starting node rabbitmq3@rabbitmq3 ...
     completed with 3 plugins.
    [root@iZ2ze8sm5upgi8z1dcazqeZ config]# 
    
  • 访问http://你的公网IP:8002
    在这里插入图片描述如此便完成了使用docker-compose部署Rabbitmq集群

  • 启动停止Rabbitmq-Cluster建议使用如下Command

    docker-compose up -d
    
    docker-compose stop
    
  • 此类方法部署RabbitMQ集群有很多细节,便不一一说明了,挑几个重用的说一下

    • 所有的节点最好共享一个网络块
    • 执行docker-compose.yml之前要创建好所有的配置文件
  • 安全组规则

    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值