首页/ 学科题库/ rabbitmq/ 集群与高可用专题
rabbitmq 专题精讲

集群与高可用专题

1 篇文章 20 道配套习题

集群与高可用专题

专题说明

本专题系统讲解 RabbitMQ 集群的架构原理与高可用方案,包括集群搭建、镜像队列、仲裁队列(Quorum Queues)、负载均衡策略及故障恢复机制,是构建企业级消息队列系统的必备知识。

学习目标

  1. 理解 RabbitMQ 集群的组成与通信机制
  2. 掌握集群的搭建与节点管理方法
  3. 掌握镜像队列和仲裁队列的配置与区别
  4. 能够设计高可用的消息队列集群方案

学习建议

建议结合官方文档和实际集群部署经验理解各组件的协作关系。

配套习题(20 题)

参考答案在文末
判断题
1
判断题

当 RabbitMQ 集群中的一个节点意外宕机时,集群会自动将该节点从集群成员列表中移除,无需人工干预。

A

对

B

错

2
判断题

镜像队列的消息确认(ack)操作只需要在 master 节点上执行,slave 节点会自动同步确认状态,因此确认操作不会产生额外的网络开销。

A

对

B

错

3
判断题

RabbitMQ 集群中所有节点之间通过 Erlang 分布式的 cookie 进行通信认证,因此集群节点必须配置相同的 Erlang cookie。

A

对

B

错

4
判断题

RabbitMQ 集群中的节点类型(磁盘节点/内存节点)可以在节点加入集群后通过命令进行转换。

A

对

B

错

5
判断题

当负载均衡器后方的某个 RabbitMQ 节点宕机时,已建立的消费者连接会自动切换到其他健康节点继续消费。

A

对

B

错

单选题
6
单选题

RabbitMQ 镜像队列的 ha-mode 策略设置为 exactly 时,ha-params 的值表示:

A

镜像队列在所有节点上都创建副本

B

镜像队列在指定数量的节点上创建副本,不包括 master

C

镜像队列在指定数量的节点上创建副本,包括 master

D

镜像队列在指定名称的节点列表上创建副本

7
单选题

关于 RabbitMQ 集群中的磁盘节点(disc node)和内存节点(ram node),以下说法正确的是:

A

内存节点的所有集群元数据(队列定义、交换机、用户权限等)仅存储在内存中,节点重启后丢失

B

内存节点不存储任何消息数据,所有消息都由磁盘节点保存

C

集群中至少需要两个磁盘节点才能保证元数据安全

D

内存节点的队列消息永远不会写入磁盘

8
单选题

关于 RabbitMQ 的两种集群架构模式,以下说法正确的是:

A

普通集群模式下,队列内容和消息数据在所有节点间完整同步

B

镜像集群模式下,队列内容和消息数据在所有镜像节点间完整复制

C

普通集群模式下,消费者连接到任意节点都可以消费任意队列的消息,因为消息数据在该节点本地

D

镜像集群的性能高于普通集群,因为数据复制带来了更好的读写速度

9
单选题

将一个新节点加入已有 RabbitMQ 集群时,以下操作顺序正确的是:

A

直接启动新节点的 RabbitMQ 服务,自动加入集群

B

rabbitmqctl stop_app → rabbitmqctl reset → rabbitmqctl join_cluster rabbit@node1 → rabbitmqctl start_app

C

rabbitmqctl join_cluster rabbit@node1 → rabbitmqctl start_app

D

修改配置文件 cluster_nodes 后重启服务

10
单选题

在 RabbitMQ 集群前端配置负载均衡器时,以下哪种方案最适合 TCP 协议层的负载均衡?

A

使用 Nginx 的 HTTP 反向代理模式

B

使用 HAProxy 的 TCP 模式,配置健康检查检测 5672 端口

C

使用 DNS 轮询,客户端随机连接

D

在客户端代码中硬编码所有节点地址并轮询连接

多选题
11
多选题

在规划 RabbitMQ 集群节点类型时,以下方案合理的有哪些?

A

3 节点集群全部使用磁盘节点,确保元数据在多个磁盘上持久化

B

3 节点集群使用 1 个磁盘节点 + 2 个内存节点,平衡性能与数据安全

C

3 节点集群全部使用内存节点,追求最大元数据操作速度

D

大规模集群(10+ 节点)使用少量磁盘节点 + 大量内存节点,减少磁盘 IO 开销

12
多选题

从 RabbitMQ 集群中移除一个节点时,leave_cluster 和 forget_cluster_node 的区别有哪些?

A

leave_cluster 在目标节点上执行,节点主动退出集群

B

forget_cluster_node 在集群的其他节点上执行,从集群中强制移除目标节点

C

leave_cluster 会保留节点上的队列数据

D

forget_cluster_node 会强制从集群元数据中删除该节点,即使该节点已宕机

13
多选题

关于 RabbitMQ 集群前的负载均衡配置,以下说法正确的有哪些?

A

负载均衡器需要在 5672 端口(AMQP)和 15672 端口(Management)都做健康检查

B

负载均衡器应配置为长连接亲和性(sticky session),避免同一 Connection 的请求被路由到不同节点

C

对于消费者连接,负载均衡器可以随意将新连接分配到任意节点

D

负载均衡层会导致消息被重复投递,因为它会对同一条消息做多路转发

14
多选题

通过 policy 配置镜像队列策略时,以下说法正确的有哪些?

A

rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}' 会将名称以 ha. 开头的队列自动配置为全节点镜像

B

Policy 的 priority 值越大,优先级越高,当多个 policy 匹配同一队列时,priority 大的生效

C

Policy 只能由管理员用户在全局 vhost 上设置

D

修改已存在的 policy 会影响所有已经匹配的队列

15
多选题

以下哪些场景适合选择普通集群而非镜像集群?

A

消息量大但对消息丢失不敏感的场景(如日志收集)

B

金融交易系统,要求消息绝对不能丢失

C

希望获得最高吞吐量的消息处理场景

D

需要自动故障转移的高可用场景

填空题
16
填空题

优雅关闭集群节点的标准操作是先执行 rabbitmqctl 停止 RabbitMQ 应用,然后执行 rabbitmqctl 主动离开集群,最后执行 rabbitmqctl 关闭 Erlang VM。这样可以确保集群元数据正确更新。

17
填空题

RabbitMQ 集群中,磁盘节点的元数据通过 Mnesia 数据库在所有 之间复制,而内存节点的元数据不写入磁盘,因此集群中必须至少保留 作为元数据的持久化备份。

18
填空题

使用 HAProxy 为 RabbitMQ 集群配置 TCP 负载均衡时,balance 指令应设置为 模式以优先分配连接数最少的后端节点,option 启用 TCP 日志,timeout client 和 timeout server 应设置较大的值(如 )以适配 AMQP 长连接特性。

19
填空题

镜像集群中,主队列(master)与镜像队列(slave)之间的数据同步策略有两种: 和 。自动同步在 slave 加入时会先完整复制现有消息,可能导致 。

20
填空题

镜像队列中,所有的读写操作都由 节点处理。当该节点宕机时,集群会自动从镜像节点中选举一个 作为新的 master,以确保消息不丢失。

参考答案
1.错误 2.错误 3.正确 4.正确 5.错误 6.B 7.A 8.B 9.B 10.B 11.A;B;D 12.A;B;D 13.A;B;C 14.A;B;D 15.A;C 16.stop_app;leave_cluster;shutdown 17.磁盘节点;一个磁盘节点 18.leastconn;tcplog;1小时/3600000ms 19.自动同步;手动同步(lazy synchronisation);大量 IO/性能下降 20.master;最旧的消息副本所在节点/最早的 slave
想在手机上刷这套专题的真题?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别二维码,即可解锁本专题全部配套练习与错题本。
了解产品 App
← 上一个专题 连接管理与 Channel 专题 下一个专题 → 高可用与容灾专题