Published on

docker-compose安装rabbitmq集群实战版

Authors

docker-compose安装rabbitmq集群实战版

创建docker-compose.yml 文件

version: '3.8'
services:
  rabbitmq1:
    image: rabbitmq:management
    container_name: rabbitmq1
    restart: always
    hostname: rabbitmq1
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - /opt/docker_volume/rabbitmq/rabbitmq1/data:/var/lib/rabbitmq
      - /opt/docker_compose_yml/rabbitmq/rabbitmq-ram.sh:/opt/rabbitmq/rabbitmq-ram.sh
      - /opt/docker_compose_yml/rabbitmq/rabbitmq-disk.sh:/opt/rabbitmq/rabbitmq-disk.sh
      - /opt/docker_compose_yml/rabbitmq/hosts:/etc/hosts
    environment:
      - RABBITMQ_DEFAULT_USER=root
      - RABBITMQ_DEFAULT_PASS=root
      - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
    networks:
      rabbitmq:
        ipv4_address: 172.25.0.2

  rabbitmq2:
    image: rabbitmq:management
    container_name: rabbitmq2
    restart: always
    hostname: rabbitmq2
    ports:
      - "5673:5672"
    volumes:
      - /opt/docker_volume/rabbitmq/rabbitmq2/data:/var/lib/rabbitmq
      - /opt/docker_compose_yml/rabbitmq/rabbitmq-ram.sh:/opt/rabbitmq/rabbitmq-ram.sh
      - /opt/docker_compose_yml/rabbitmq/rabbitmq-disk.sh:/opt/rabbitmq/rabbitmq-disk.sh
      - /opt/docker_compose_yml/rabbitmq/hosts:/etc/hosts
    environment:
      - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
    networks:
      rabbitmq:
        ipv4_address: 172.25.0.3

  rabbitmq3:
    image: rabbitmq:management
    container_name: rabbitmq3
    restart: always
    hostname: rabbitmq3
    ports:
      - "5674:5672"
    volumes:
      - /opt/docker_volume/rabbitmq/rabbitmq3/data:/var/lib/rabbitmq
      - /opt/docker_compose_yml/rabbitmq/rabbitmq-ram.sh:/opt/rabbitmq/rabbitmq-ram.sh
      - /opt/docker_compose_yml/rabbitmq/rabbitmq-disk.sh:/opt/rabbitmq/rabbitmq-disk.sh
      - /opt/docker_compose_yml/rabbitmq/hosts:/etc/hosts
    environment:
      - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
    networks:
      rabbitmq:
        ipv4_address: 172.25.0.4

networks:
  rabbitmq:
    driver: bridge
    ipam:
      config:
        - subnet: "172.25.0.1/24"
创建/opt/docker_compose_yml/rabbitmq/rabbitmq-ram.sh脚本
disk存储

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
创建/opt/docker_compose_yml/rabbitmq/rabbitmq-disk.sh脚本
ram存储

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq1
rabbitmqctl start_app
创建/opt/docker_compose_yml/rabbitmq/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.25.0.2      rabbitmq1
172.25.0.3      rabbitmq2
172.25.0.4      rabbitmq3

运行容器

docker-compose up -d 分别进入从节点容器(本文中从节点是 rabbitmq1, rabbitmq3,rabbitmq2),启动脚本

docker exec -it rabbitmq1 bash
bash /opt/rabbitmq/rabbitmq-ram.sh  #ram储存
#或者
bash /opt/rabbitmq/rabbitmq-disk.sh  #硬盘储存

以下提供直接简单的方式:直接设置环境启动集群


version: '3.8'
services:
  rabbitmq1:
    image: rabbitmq:management
    container_name: rabbitmq1
    restart: always
    hostname: rabbitmq1
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - /opt/docker_volume/rabbitmq/rabbitmq1/data:/var/lib/rabbitmq
    environment:
      - RABBITMQ_DEFAULT_USER=root
      - RABBITMQ_DEFAULT_PASS=root
      - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
      - RABBITMQ_NODENAME:rabbitmq1
    networks:
      - rabbitmq
  rabbitmq2:
    image: rabbitmq:management
    container_name: rabbitmq2
    restart: always
    hostname: rabbitmq2
    ports:
      - "5673:5672"
    volumes:
      - /opt/docker_volume/rabbitmq/rabbitmq2/data:/var/lib/rabbitmq
    environment:
      - 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
    restart: always
    hostname: rabbitmq3
    ports:
      - "5674:5672"
    volumes:
      - /opt/docker_volume/rabbitmq/rabbitmq3/data:/var/lib/rabbitmq
    environment:
      - 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


  Name                 Command               State                                                        Ports                                                      
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rabbitmq1   docker-entrypoint.sh rabbi ...   Up      15671/tcp, 0.0.0.0:15672->15672/tcp, 15691/tcp, 15692/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp
rabbitmq2   docker-entrypoint.sh rabbi ...   Up      15671/tcp, 0.0.0.0:15673->15672/tcp, 15691/tcp, 15692/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 0.0.0.0:5673->5672/tcp
rabbitmq3   docker-entrypoint.sh rabbi ...   Up      15671/tcp, 15672/tcp, 15691/tcp, 15692/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 0.0.0.0:5674->5672/tcp