NOTE

3.3 RabbitMQ集群模式

1. 集群模式 1.1. 普通集群模式 master节点存放元数据和队列数据,其他节点只存放元数据。 消费者可以向任意一个节点发出请求,如果是slave会将请求转发给master进行处理后返回给客户端 - 优点 - 提高消费者的吞吐量 - 缺点 - 可能会在集群内部产生大量的数据传输 - maste

Message Queue更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 集群模式

1.1. 普通集群模式

master节点存放元数据和队列数据,其他节点只存放元数据。 消费者可以向任意一个节点发出请求,如果是slave会将请求转发给master进行处理后返回给客户端

  • 优点
    • 提高消费者的吞吐量
  • 缺点
    • 可能会在集群内部产生大量的数据传输
    • master挂了那么数据全丢了

1.2. 镜像集群模式

2026 注:镜像经典队列是旧版 RabbitMQ 的高可用方案;现代 RabbitMQ 更推荐 quorum queues,具体以当前版本文档为准。 集群中每个节点都有一份完整的队列数据,某个节点挂了也不影响其他节点

  • 优点
    • 真正的高可用
  • 缺点
    • 不是分布式的,数据可能大到无法在一台机器上存储

2. 集群搭建

rabbitmq的集群模式是每个节点都有队列元数据,但是只有一个节点有队列的数据。 如果要把队列数据复制到所有节点,那么必须开启镜像队列模式

2.1. 普通集群

2.1.1. rabbitmq5673.sh

#!/bin/bash
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}] -rabbitmq_stomp tcp_listeners [61613] -rabbitmq_mqtt tcp_listeners [1883]" RABBITMQ_NODENAME=rabbit5673 ./rabbitmq-server

2.1.2. rabbitmq5674.sh

#!/bin/bash
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}] -rabbitmq_stomp tcp_listeners [61614] -rabbitmq_mqtt tcp_listeners [1884]" RABBITMQ_NODENAME=rabbit5674 ./rabbitmq-server

2.1.3. join_cluster.sh

#!/bin/bash
sudo rabbitmqctl -n rabbit5674@zsk-arch stop_app
sudo rabbitmqctl -n rabbit5674@zsk-arch reset
sudo rabbitmqctl -n rabbit5674@zsk-arch join_cluster rabbit5673@zsk-arch
sudo rabbitmqctl -n rabbit5674@zsk-arch start_app

2.2. 镜像复制

正在加载有帮助数量