RabbitMQ3.8.11集群搭建(docker-co

RabbitMQ 3.8.11 集群搭建 虚拟机方式,很繁琐。
可以将其进行docker化。

1. 创建docker-compose.yml 文件

version: '3'
services:
  rabbitmq1:
    image: rabbitmq:3.8.11-management
    container_name: rabbitmq1
    restart: always
    hostname: rabbitmq1
    ports:
      - 15683:15672
      - 5683:5672
    volumes:
      - ./data1:/var/lib/rabbitmq
      - ./rabbitmq.sh:/home/rabbitmq.sh
      - ./etc/hosts:/etc/hosts
      - ./etc/rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins
    environment:
      - RABBITMQ_DEFAULT_USER=root
      - RABBITMQ_DEFAULT_PASS=root
      - STOMP_DEFAULT_USER=root
      - STOMP_DEFAULT_PASS=root
      - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
    networks:
      rabbit:
        ipv4_address: 192.168.1.127

  rabbitmq2:
    image: rabbitmq:3.8.11-management
    container_name: rabbitmq2
    restart: always
    hostname: rabbitmq2
    ports:
      - 15684:15672
      - 5684:5672
    volumes:
      - ./data2:/var/lib/rabbitmq
      - ./rabbitmq.sh:/home/rabbitmq.sh
      - ./etc/hosts:/etc/hosts
      - ./etc/rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins
    environment:
      - RABBITMQ_DEFAULT_USER=root
      - RABBITMQ_DEFAULT_PASS=root
      - STOMP_DEFAULT_USER=root
      - STOMP_DEFAULT_PASS=root
      - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
    networks:
      rabbit:
        ipv4_address: 192.168.1.128

  rabbitmq3:
    image: rabbitmq:3.8.11-management
    container_name: rabbitmq3
    restart: always
    hostname: rabbitmq3
    ports:
      - 15692:15672
      - 5692:5672
    volumes:
      - ./data3:/var/lib/rabbitmq
      - ./rabbitmq.sh:/home/rabbitmq.sh
      - ./etc/hosts:/etc/hosts
      - ./etc/rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins
    environment:
      - RABBITMQ_DEFAULT_USER=root
      - RABBITMQ_DEFAULT_PASS=root
      - STOMP_DEFAULT_USER=root
      - STOMP_DEFAULT_PASS=root
      - RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
    networks:
      rabbit:
        ipv4_address: 192.168.1.129

networks:
  rabbit:
    external:
      name: rabbitmqnet

复制代码

2. 启动使用插件(rabbitmq_stomp)

./etc/rabbitmq/enabled_plugins

[rabbitmq_management,rabbitmq_prometheus,rabbitmq_stomp].
复制代码

3. 创建rabbitmq.sh

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbitmq@rabbitmq1
rabbitmqctl start_app
复制代码

4. 创建主机列表

./etc/hosts

192.168.1.127 rabbitmq1
192.168.1.128 rabbitmq2
192.168.1.129 rabbitmq3
复制代码

5. 创建依赖网络

# docker network create --subnet 192.168.1.1/24 rabbitmqnet
复制代码

6. 开启rabbitMQ集群

# docker-compose up -d
复制代码

7. 打开监控平台

image.png

QA 问题总结

Q1. 解决 RabbitMQ 集群 Channel shutdown: connection error 错误(HAProxy 负载均衡)

A1. HAProxy 配置的timeout client超时时间,OS的tcp_keepalive_time(系统tcp_keepalive_time发送TCP keepalive数据包间隔时间是 2 个小时)