欢迎访问宙启技术站
智能推送

docker下搭建RabbitMQ集群的步骤

发布时间:2023-05-14 10:14:39

RabbitMQ是一款高可用、可扩展和开源的消息队列服务,它支持多种消息协议和传输规范,可用于构建分布式应用程序。在生产环境中,为了提高可用性和稳定性,需要使用RabbitMQ集群。下面是Docker下搭建RabbitMQ集群的简要步骤:

1. 安装Docker和Docker Compose:

在安装RabbitMQ之前,需要先安装Docker和Docker Compose,可以在官方网站下载并安装。

2. 创建Docker Compose文件:

在集群中至少需要三个RabbitMQ节点,因此需要在Docker Compose文件中定义三个服务。示例Docker Compose文件:

version: '3'
services:
  rabbitmq-master:
    image: rabbitmq:3.7-management-alpine
    restart: always
    hostname: rabbitmq-master
    expose:
      - "5672"
      - "15672"
    ports:
      - "4369:4369"
      - "5672:5672"
      - "15672:15672"
      - "25672:25672"
    environment:
      RABBITMQ_ERLANG_COOKIE: "rabbitmq-cluster-cookie"
      RABBITMQ_DEFAULT_USER: "admin"
      RABBITMQ_DEFAULT_PASS: "admin"
      RABBITMQ_NODENAME: "rabbitmq-master"
    volumes:
      - ./data:/var/lib/rabbitmq
  rabbitmq-slave1:
    image: rabbitmq:3.7-management-alpine
    restart: always
    hostname: rabbitmq-slave1
    expose:
      - "5672"
      - "15672"
    ports:
      - "4369:4369"
      - "5673:5672"
      - "15673:15672"
      - "25673:25672"
    environment:
      RABBITMQ_ERLANG_COOKIE: "rabbitmq-cluster-cookie"
      RABBITMQ_DEFAULT_USER: "admin"
      RABBITMQ_DEFAULT_PASS: "admin"
      RABBITMQ_NODENAME: "rabbitmq-slave1"
      RABBITMQ_CONFIG_FILE: /etc/rabbitmq/rabbitmq.conf
    volumes:
      - ./data:/var/lib/rabbitmq
      - ./rabbitmq-slave1.conf:/etc/rabbitmq/rabbitmq.conf
  rabbitmq-slave2:
    image: rabbitmq:3.7-management-alpine
    restart: always
    hostname: rabbitmq-slave2
    expose:
      - "5672"
      - "15672"
    ports:
      - "4369:4369"
      - "5674:5672"
      - "15674:15672"
      - "25674:25672"
    environment:
      RABBITMQ_ERLANG_COOKIE: "rabbitmq-cluster-cookie"
      RABBITMQ_DEFAULT_USER: "admin"
      RABBITMQ_DEFAULT_PASS: "admin"
      RABBITMQ_NODENAME: "rabbitmq-slave2"
      RABBITMQ_CONFIG_FILE: /etc/rabbitmq/rabbitmq.conf
    volumes:
      - ./data:/var/lib/rabbitmq
      - ./rabbitmq-slave2.conf:/etc/rabbitmq/rabbitmq.conf

在上述Docker Compose文件中,定义了三个RabbitMQ节点服务,其中rabbitmq-master为主节点,rabbitmq-slave1rabbitmq-slave2为从节点。每个服务都使用了RabbitMQ的官方镜像,并且指定了节点的名称、暴露的端口、环境变量和数据存储目录。

3. 配置RabbitMQ节点:

在上面的Docker Compose文件中,每个节点的环境变量都指定了相同的Erlang Cookie,这是用于节点之间的安全通信的密钥。同时需要在从节点的配置文件中定义主节点的地址和端口,如下所示:

cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@rabbitmq-master

4. 启动RabbitMQ集群:

在Docker Compose文件所在的目录下,使用以下命令启动RabbitMQ集群:

docker-compose up -d

该命令将会启动三个RabbitMQ节点容器,并将它们连接为一个集群。使用docker-compose ps命令可以查看RabbitMQ节点的状态。

5. 验证RabbitMQ集群:

使用RabbitMQ的Web管理界面验证集群是否正常运行。在浏览器中输入http://localhost:15672/,输入用户名和密码(在Docker Compose文件中定义的默认值是admin/admin),然后可以查看集群的状态和节点信息。

至此,RabbitMQ集群已经成功搭建完成,可以使用它来构建分布式应用程序了。需要注意的是,在实际生产环境中,为了提高可用性和稳定性,还需要进行一些额外的配置和优化,例如设置镜像队列、使用固定IP、使用SSL/TLS等等。