0

0

rabbitmq 集群有什么用?

小老鼠

小老鼠

发布时间:2025-10-03 10:34:02

|

862人浏览过

|

来源于php中文网

原创

搭建rabbitmq集群需至少两台服务器,安装rabbitmq并配置相同erlang cookie,通过join_cluster命令将节点加入主节点,使用cluster_status验证状态,可选配置镜像队列或仲裁队列以提高可用性,推荐使用management ui、prometheus+grafana等工具监控队列长度、消息速率、连接数、节点状态等关键指标。

rabbitmq 集群有什么用?

rabbitmq 集群主要用于提高消息队列系统的可用性和吞吐量。通过将消息队列分布在多个节点上,集群可以容忍单个节点的故障,并提供更高的并发处理能力。

rabbitmq 集群的搭建与使用

如何搭建一个简单的 RabbitMQ 集群?

搭建 RabbitMQ 集群,最基本的方法是利用 RabbitMQ 自带的集群功能。你需要至少两台服务器,并且保证它们之间网络互通。

  1. 安装 RabbitMQ: 在每台服务器上安装 RabbitMQ 服务。你可以使用 apt-get (Debian/Ubuntu) 或 yum (CentOS/RHEL) 等包管理器,或者直接从 RabbitMQ 官网下载安装包。

    # Debian/Ubuntu
    sudo apt-get update
    sudo apt-get install rabbitmq-server
    
    # CentOS/RHEL
    sudo yum install rabbitmq-server
    systemctl enable rabbitmq-server
    systemctl start rabbitmq-server
  2. 配置 Erlang Cookie: RabbitMQ 集群依赖 Erlang 的分布式特性,所以所有节点必须使用相同的 Erlang Cookie。这个 Cookie 通常位于 /var/lib/rabbitmq/.erlang.cookie。将其中一个节点的 Cookie 复制到其他所有节点上。

    # 在节点 1 上
    sudo cat /var/lib/rabbitmq/.erlang.cookie
    
    # 将节点 1 的 Cookie 复制到节点 2 和节点 3 的 /var/lib/rabbitmq/.erlang.cookie 文件中
  3. 加入集群: 选择一个节点作为 "主节点",其他节点加入到这个主节点。首先,停止其他节点上的 RabbitMQ 服务。

    sudo rabbitmqctl stop_app

    然后,使用 rabbitmqctl join_cluster 命令将其他节点加入到主节点。

    # 在节点 2 上
    sudo rabbitmqctl join_cluster rabbit@node1  # node1 是主节点的 hostname
    
    # 在节点 3 上
    sudo rabbitmqctl join_cluster rabbit@node1

    最后,启动这些节点上的 RabbitMQ 服务。

    sudo rabbitmqctl start_app
  4. 验证集群状态: 在任意一个节点上,使用 rabbitmqctl cluster_status 命令查看集群状态。

    sudo rabbitmqctl cluster_status

    你应该能看到所有节点都显示在集群状态中。

  5. 配置镜像队列(可选): 为了提高可用性,可以配置镜像队列。镜像队列会将队列的消息复制到多个节点上。

    sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

    这个命令会将所有队列设置为镜像队列,消息会复制到所有节点。

集群模式有哪些?quorum queues 和 classic mirrored queues 有什么区别?

RabbitMQ 集群主要有两种模式:经典镜像队列(Classic Mirrored Queues)和仲裁队列(Quorum Queues)。

  • 经典镜像队列(Classic Mirrored Queues): 这是 RabbitMQ 早期版本提供的集群模式。在这种模式下,一个队列会被镜像到多个节点上,其中一个节点作为主节点,其他节点作为镜像节点。当主节点发生故障时,其中一个镜像节点会被提升为新的主节点。

    手机在线人工冲值
    手机在线人工冲值

    说明:我不知道这个系统还能用到什么地方!他的运作方式是这样的,客户在其他地方比如掏宝购买了 你得卡,然后在你的网站进行冲值,你得有人登陆并看着后台,如果有人冲值,就会刷出记录,手工冲值完毕后,你得点击 [冲值完毕],客户的页面 就会返回 冲值信息!安装:上传所有文件,倒入(sql.txt)mysql数据库,使用myphpadminphplib 777phplib/sys.php 777phplib

    下载
    • 优点: 实现简单,配置容易。
    • 缺点: 数据一致性问题。如果主节点在确认消息之前发生故障,消息可能会丢失或重复。切换主节点时可能导致短暂的服务中断。
  • 仲裁队列(Quorum Queues): 这是 RabbitMQ 3.8 引入的一种新的队列类型,旨在解决经典镜像队列的数据一致性问题。仲裁队列基于 Raft 一致性算法,确保所有节点上的消息顺序和内容一致。

    • 优点: 数据一致性高,即使在节点故障的情况下也能保证消息的可靠性。
    • 缺点: 性能略低于经典镜像队列。配置相对复杂。

区别总结:

特性 经典镜像队列 (Classic Mirrored Queues) 仲裁队列 (Quorum Queues)
数据一致性 较低 较高
一致性算法 Raft
性能 较高 略低
复杂性 较低 较高
适用场景 对数据一致性要求不高的场景 对数据一致性要求高的场景

选择哪种模式取决于你的应用场景。如果你的应用对数据一致性要求非常高,那么仲裁队列是更好的选择。如果你的应用对性能要求更高,并且可以容忍一定程度的数据不一致,那么经典镜像队列可能更适合你。

如何监控 RabbitMQ 集群的健康状态?

监控 RabbitMQ 集群的健康状态至关重要,可以帮助你及时发现并解决问题。

  1. RabbitMQ Management UI: RabbitMQ 自带一个 Web 管理界面,可以用来监控集群的各种指标,如队列长度、消息速率、连接数等。你可以在浏览器中访问 http://your_server_ip:15672 (默认端口是 15672) 来打开管理界面。

  2. RabbitMQ CLI 工具 使用 rabbitmqctl 命令可以获取集群的各种信息。例如,可以使用 rabbitmqctl cluster_status 命令查看集群状态,使用 rabbitmqctl list_queues 命令查看队列信息。

  3. Prometheus 和 Grafana: 可以使用 Prometheus 收集 RabbitMQ 的指标,然后使用 Grafana 可视化这些指标。你需要安装 RabbitMQ 的 Prometheus 插件,并配置 Prometheus 来抓取这些指标。

    • 安装 Prometheus 插件:

      sudo rabbitmq-plugins enable rabbitmq_prometheus
    • 配置 Prometheus:prometheus.yml 文件中添加 RabbitMQ 的配置。

      scrape_configs:
        - job_name: 'rabbitmq'
          static_configs:
            - targets: ['your_rabbitmq_server_ip:15692'] # 默认端口是 15692
    • 使用 Grafana 可视化: 在 Grafana 中导入 RabbitMQ 的 Dashboard,可以方便地查看各种指标。

  4. 使用第三方监控工具: 有很多第三方监控工具可以用来监控 RabbitMQ 集群,如 Datadog、New Relic 等。这些工具通常提供更丰富的功能和更强大的可视化能力。

需要监控的关键指标:

  • 队列长度: 队列长度过长可能表示消费者处理能力不足,需要增加消费者数量或者优化消费者代码。
  • 消息速率: 消息速率过高可能导致 RabbitMQ 性能下降,需要优化生产者代码或者增加 RabbitMQ 节点。
  • 连接数: 连接数过多可能导致 RabbitMQ 资源耗尽,需要检查连接是否被正确关闭。
  • 节点状态: 确保所有节点都处于健康状态,没有节点发生故障。
  • 磁盘空间: 磁盘空间不足可能导致 RabbitMQ 无法正常工作,需要及时清理磁盘空间。
  • 内存使用: 内存使用过高可能导致 RabbitMQ 性能下降,需要增加内存或者优化配置

通过监控这些关键指标,你可以及时发现并解决 RabbitMQ 集群的问题,确保消息队列系统的稳定运行。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
erlang语言是什么
erlang语言是什么

erlang是一种并发、容错、分布式和动态类型的编程语言。它专门用于构建并发系统,并提供了一个轻量级进程模型来实现并发性。想了解更多erlang的相关内容,可以阅读本专题下面的文章。

409

2024.06.19

rabbitmq和kafka有什么区别
rabbitmq和kafka有什么区别

rabbitmq和kafka的区别:1、语言与平台;2、消息传递模型;3、可靠性;4、性能与吞吐量;5、集群与负载均衡;6、消费模型;7、用途与场景;8、社区与生态系统;9、监控与管理;10、其他特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

207

2024.02.23

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

48

2026.01.28

什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

406

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

251

2023.10.07

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6500

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

368

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

445

2024.02.23

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP入门到实战消息队列RabbitMQ
PHP入门到实战消息队列RabbitMQ

共22课时 | 1.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.4万人学习

Pandas 教程
Pandas 教程

共15课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号