乐趣区

关于rabbitmq:用-dockercompose-搭建一个-rabbitmq-集群

当您应用 Docker Compose 时,能够应用 RabbitMQ 的官网 Docker 镜像来构建 RabbitMQ 集群。上面是一个简略的 docker-compose.yml 文件示例,用于启动一个由 3 个 RabbitMQ 节点组成的集群:

version: '3'

services:
  rabbitmq-node1:
    image: rabbitmq:3.9.5-management-alpine
    environment:
      - RABBITMQ_ERLANG_COOKIE=cookie
      - RABBITMQ_NODENAME=rabbit@rabbitmq-node1
      - RABBITMQ_USE_LONGNAME=true
    ports:
      - 5672:5672
      - 15672:15672
    volumes:
      - rabbitmq-node1-data:/var/lib/rabbitmq
    networks:
      rabbitmq-network:
        aliases:
          - rabbitmq-node1

  rabbitmq-node2:
    image: rabbitmq:3.9.5-management-alpine
    environment:
      - RABBITMQ_ERLANG_COOKIE=cookie
      - RABBITMQ_NODENAME=rabbit@rabbitmq-node2
      - RABBITMQ_USE_LONGNAME=true
      - RABBITMQ_CLUSTER_NODE_TYPE=disc
      - RABBITMQ_CLUSTER_DISC_RAM_NODE_NAME=rabbit@rabbitmq-node1
    volumes:
      - rabbitmq-node2-data:/var/lib/rabbitmq
    networks:
      rabbitmq-network:
        aliases:
          - rabbitmq-node2

  rabbitmq-node3:
    image: rabbitmq:3.9.5-management-alpine
    environment:
      - RABBITMQ_ERLANG_COOKIE=cookie
      - RABBITMQ_NODENAME=rabbit@rabbitmq-node3
      - RABBITMQ_USE_LONGNAME=true
      - RABBITMQ_CLUSTER_NODE_TYPE=disc
      - RABBITMQ_CLUSTER_DISC_RAM_NODE_NAME=rabbit@rabbitmq-node1
    volumes:
      - rabbitmq-node3-data:/var/lib/rabbitmq
    networks:
      rabbitmq-network:
        aliases:
          - rabbitmq-node3

volumes:
  rabbitmq-node1-data:
  rabbitmq-node2-data:
  rabbitmq-node3-data:

networks:
  rabbitmq-network:

在这个示例中,咱们定义了三个 RabbitMQ 节点:rabbitmq-node1,rabbitmq-node2 和 rabbitmq-node3,它们都运行 RabbitMQ 官网 Docker 镜像(带有 RabbitMQ 治理插件)。咱们应用了 Docker Compose 的 networks 配置项,将所有节点连贯到同一个网络中,并指定了每个节点的别名。咱们还应用了 volumes 配置项,为每个节点挂载了一个数据卷,用于长久化 RabbitMQ 数据。

在 rabbitmq-node2 和 rabbitmq-node3 节点的 environment 局部中,咱们应用了 RabbitMQ 的集群配置选项,以将节点退出到 RabbitMQ 集群中。RABBITMQ_CLUSTER_NODE_TYPE=disc示意这是一个磁盘节点(即数据会被长久化到磁盘),RABBITMQ_CLUSTER_DISC_RAM_NODE_NAME=rabbit@rabbitmq-node1示意这个节点是 rabbitmq-node1 节点的磁盘节点。这样就能够将所有节点连贯到同一个 RabbitMQ 集群中。

最初,咱们应用了 ports 配置项,使得咱们能够在本地拜访 RabbitMQ 治理界面和 AMQP 协定端口。在这个示例中,咱们将 RabbitMQ 的 AMQP 端口映射到主机的 5672 端口,将 RabbitMQ 治理界面的端口映射到主机的 15672 端口。

启动 RabbitMQ 集群,只须要在 docker-compose.yml 文件所在的目录中执行以下命令:

docker-compose up -d

这会启动一个由 3 个 RabbitMQ 节点组成的集群。您能够应用 docker-compose ps 命令查看集群的状态:

docker-compose ps

输入应该相似于:

     Name                    Command              State               Ports             
----------------------------------------------------------------------------------------
rabbitmq-node1   docker-entrypoint.sh rabbi ...   Up      0.0.0.0:15672->15672/tcp,      
                                                          0.0.0.0:5672->5672/tcp         
rabbitmq-node2   docker-entrypoint.sh rabbi ...   Up      15672/tcp, 5672/tcp             
rabbitmq-node3   docker-entrypoint.sh rabbi ...   Up      15672/tcp, 5672/tcp             

当初,您能够通过 http://localhost:15672 拜访 RabbitMQ 治理界面,在“Nodes”选项卡中查看所有节点是否胜利连贯到集群中。您还能够应用任何 AMQP 客户端库连贯到 RabbitMQ 集群,应用 amqp://localhost:5672 作为连贯字符串。

留神:RabbitMQ 集群的配置非常灵活,您能够依据本人的需要进行调整。如果您想理解更多对于 RabbitMQ 集群的信息,请参阅 RabbitMQ 官网文档。

如果您须要增加或删除节点,只需批改 docker-compose.yml 文件中的 scale 属性即可。例如,如果您想增加一个新的节点,只需执行以下命令:

docker-compose up -d --scale rabbitmq-node=4

这将在集群中增加一个新的节点。同样地,如果您想删除一个节点,只需将 scale 属性设置为更小的值即可。

最初,当您想进行 RabbitMQ 集群时,只需执行以下命令:

docker-compose down

这将进行并删除 RabbitMQ 容器和网络。

心愿这个示例能够帮忙您搭建一个 RabbitMQ 集群。如果您遇到了任何问题,能够查看官网文档或在社区论坛中寻求帮忙。

退出移动版