mkdir -p /data/rabbitmq-cluster && cd /data/rabbitmq-cluster
cat << 'EOF' > rabbitmq.conf
# 启用经典对等发现机制
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
# 声明集群中的节点列表(格式:rabbit@服务名)
cluster_formation.classic_config.nodes.1 = rabbit@rabbit1
cluster_formation.classic_config.nodes.2 = rabbit@rabbit2
cluster_formation.classic_config.nodes.3 = rabbit@rabbit3
EOF


vim docker-compose.yml

version: '3.8'

services:
  rabbit1:
    image: rabbitmq:3.12-management
    container_name: rabbit1
    hostname: rabbit1
    restart: always
    environment:
      - RABBITMQ_ERLANG_COOKIE=MyClusterSecretCookie123
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=admin123
    ports:
      - "5672:5672"     # 主节点 AMQP 端口
      - "15672:15672"   # 主节点 Web 管理端口
    volumes:
      - ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
      - ./data/rabbit1:/var/lib/rabbitmq

  rabbit2:
    image: rabbitmq:3.12-management
    container_name: rabbit2
    hostname: rabbit2
    restart: always
    depends_on:
      - rabbit1
    environment:
      - RABBITMQ_ERLANG_COOKIE=MyClusterSecretCookie123
    ports:
      - "5673:5672"     # 节点2 AMQP 端口
      - "15673:15672"   # 节点2 Web 管理端口
    volumes:
      - ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
      - ./data/rabbit2:/var/lib/rabbitmq

  rabbit3:
    image: rabbitmq:3.12-management
    container_name: rabbit3
    hostname: rabbit3
    restart: always
    depends_on:
      - rabbit1
    environment:
      - RABBITMQ_ERLANG_COOKIE=MyClusterSecretCookie123
    ports:
      - "5674:5672"     # 节点3 AMQP 端口
      - "15674:15672"   # 节点3 Web 管理端口
    volumes:
      - ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
      - ./data/rabbit3:/var/lib/rabbitmq

docker exec -it rabbit1 rabbitmqctl cluster_status

iptables -F && sysctl -w net.ipv4.ip_forward=1 && systemctl restart docker
cd /data/rabbitmq-cluster && docker compose up -d

镜像同步

docker exec -it rabbit1 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to queues
docker exec -it rabbit1 rabbitmqctl list_queues name policy pid slave_pids

更多推荐