集群与高可用专题测试
考察知识点
- 集群与高可用相关概念
- RabbitMQ 进阶实践
关于 RabbitMQ 的两种集群架构模式,以下说法正确的是:
A. 普通集群模式下,队列内容和消息数据在所有节点间完整同步 B. 镜像集群模式下,队列内容和消息数据在所有镜像节点间完整复制 C. 普通集群模式下,消费者连接到任意节点都可以消费任意队列的消息,因为消息数据在该节点本地 D. 镜像集群的性能高于普通集群,因为数据复制带来了更好的读写速度
以下哪些场景适合选择普通集群而非镜像集群?
A. 消息量大但对消息丢失不敏感的场景(如日志收集) B. 金融交易系统,要求消息绝对不能丢失 C. 希望获得最高吞吐量的消息处理场景 D. 需要自动故障转移的高可用场景
RabbitMQ 集群中所有节点之间通过 Erlang 分布式的 cookie 进行通信认证,因此集群节点必须配置相同的 Erlang cookie。
镜像集群中,主队列(master)与镜像队列(slave)之间的数据同步策略有两种:________ 和 ________________________ 。自动同步在 slave 加入时会先完整复制现有消息,可能导致 ________________ 。
关于 RabbitMQ 集群中的磁盘节点(disc node)和内存节点(ram node),以下说法正确的是:
A. 内存节点的所有集群元数据(队列定义、交换机、用户权限等)仅存储在内存中,节点重启后丢失 B. 内存节点不存储任何消息数据,所有消息都由磁盘节点保存 C. 集群中至少需要两个磁盘节点才能保证元数据安全 D. 内存节点的队列消息永远不会写入磁盘
在规划 RabbitMQ 集群节点类型时,以下方案合理的有哪些?
A. 3 节点集群全部使用磁盘节点,确保元数据在多个磁盘上持久化 B. 3 节点集群使用 1 个磁盘节点 + 2 个内存节点,平衡性能与数据安全 C. 3 节点集群全部使用内存节点,追求最大元数据操作速度 D. 大规模集群(10+ 节点)使用少量磁盘节点 + 大量内存节点,减少磁盘 IO 开销
RabbitMQ 集群中的节点类型(磁盘节点/内存节点)可以在节点加入集群后通过命令进行转换。
RabbitMQ 集群中,磁盘节点的元数据通过 Mnesia 数据库在所有 ________ 之间复制,而内存节点的元数据不写入磁盘,因此集群中必须至少保留 ____________ 作为元数据的持久化备份。
将一个新节点加入已有 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 后重启服务
从 RabbitMQ 集群中移除一个节点时,leave_cluster 和 forget_cluster_node 的区别有哪些?
A. leave_cluster 在目标节点上执行,节点主动退出集群
B. forget_cluster_node 在集群的其他节点上执行,从集群中强制移除目标节点
C. leave_cluster 会保留节点上的队列数据
D. forget_cluster_node 会强制从集群元数据中删除该节点,即使该节点已宕机
当 RabbitMQ 集群中的一个节点意外宕机时,集群会自动将该节点从集群成员列表中移除,无需人工干预。
优雅关闭集群节点的标准操作是先执行 rabbitmqctl ________ 停止 RabbitMQ 应用,然后执行 rabbitmqctl _____________ 主动离开集群,最后执行 rabbitmqctl ________ 关闭 Erlang VM。这样可以确保集群元数据正确更新。
在 RabbitMQ 集群前端配置负载均衡器时,以下哪种方案最适合 TCP 协议层的负载均衡?
A. 使用 Nginx 的 HTTP 反向代理模式 B. 使用 HAProxy 的 TCP 模式,配置健康检查检测 5672 端口 C. 使用 DNS 轮询,客户端随机连接 D. 在客户端代码中硬编码所有节点地址并轮询连接
关于 RabbitMQ 集群前的负载均衡配置,以下说法正确的有哪些?
A. 负载均衡器需要在 5672 端口(AMQP)和 15672 端口(Management)都做健康检查 B. 负载均衡器应配置为长连接亲和性(sticky session),避免同一 Connection 的请求被路由到不同节点 C. 对于消费者连接,负载均衡器可以随意将新连接分配到任意节点 D. 负载均衡层会导致消息被重复投递,因为它会对同一条消息做多路转发
当负载均衡器后方的某个 RabbitMQ 节点宕机时,已建立的消费者连接会自动切换到其他健康节点继续消费。
使用 HAProxy 为 RabbitMQ 集群配置 TCP 负载均衡时,balance 指令应设置为 _________ 模式以优先分配连接数最少的后端节点,option ______ 启用 TCP 日志,timeout client 和 timeout server 应设置较大的值(如 _______________ )以适配 AMQP 长连接特性。
RabbitMQ 镜像队列的 ha-mode 策略设置为 exactly 时,ha-params 的值表示:
A. 镜像队列在所有节点上都创建副本 B. 镜像队列在指定数量的节点上创建副本,不包括 master C. 镜像队列在指定数量的节点上创建副本,包括 master D. 镜像队列在指定名称的节点列表上创建副本
通过 policy 配置镜像队列策略时,以下说法正确的有哪些?
A. rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}' 会将名称以 ha. 开头的队列自动配置为全节点镜像
B. Policy 的 priority 值越大,优先级越高,当多个 policy 匹配同一队列时,priority 大的生效
C. Policy 只能由管理员用户在全局 vhost 上设置
D. 修改已存在的 policy 会影响所有已经匹配的队列
镜像队列中,所有的读写操作都由 ______ 节点处理。当该节点宕机时,集群会自动从镜像节点中选举一个 ________________________ 作为新的 master,以确保消息不丢失。
镜像队列的消息确认(ack)操作只需要在 master 节点上执行,slave 节点会自动同步确认状态,因此确认操作不会产生额外的网络开销。
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验