【问题标题】:Is it necessary to use three nodes to build RabbitMQ cluster?搭建 RabbitMQ 集群是否需要使用三个节点?
【发布时间】:2015-09-24 03:48:47
【问题描述】:

不得不说官网提供的信息太少,无法清晰理解RabbitMQ。

官网建议使用三个节点搭建集群。这是什么原因?我想它就像 ZooKeeper,需要奇数个节点来进行仲裁并选举主节点。

另外,使用非 HA 集群有什么优势?提高性能还是什么?如果队列所在的节点宕机,则队列不工作。那么对于所有情况,是否需要将集群设置为镜像队列并自动同步?

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    三个节点是具有合理 HA 的最低要求。 假设你有一个队列镜像在两个节点中,如果一个节点宕机,另一个节点将被提升为新的从节点或主节点。

    请阅读here部分自动处理分区和部分更多关于暂停少数模式

    因此在主机上启用暂停少数模式不是一个好主意 两个节点的集群,因为在任何网络分区或 节点故障,两个节点都会暂停

    RabbitMQ 可以以不同的方式处理集群,具体取决于您部署它的位置 - LAN 或 WAN 或不稳定的 LAN 等。您还可以使用 federationshovel

    使用非 HA 集群有什么优势?提高性能还是什么?

    我会说是的,或者只是你有一个不需要 HA 队列的环境,因为你只能有临时队列。

    是否需要将集群设置为镜像队列和自动同步?

    您也可以选择manual-sync,因为当您同步队列时,队列被阻止,如果您有很多消息要同步,这可能是个问题。例如,您可以决定在没有流量时同步队列。

    HereUnsynchronised Slaves部分)解释清楚了。

    你的问题有点笼统,这取决于你在寻找什么。

    【讨论】:

    • 非常感谢您的清晰回答。集群超过 3 个节点是由于防止网络分区。在非 HA 的情况下我还是不知道,集群是如何提高性能的?生产环境实现非HA集群可行吗?
    • 当您使用集群时,即使您没有连接到不包含队列的节点,您也可以访问所有信息(队列、交换等)。您的观点是有道理的,但是例如,如果您只是以扇出方式发送信息,则不需要 HA,因为您只有临时队列。
    • rabbitmq 进程负载很高。并且 sasl 日志出现很多信息,例如 'Context: shutdown_error Reason: shutdown Offender: [{nb_children,1}, {name,channel_sup}, {mfargs,{rabbit_channel_sup,start_link,[]}}, {restart_type,temporary}{shutdown ,infinity}, {child_type,supervisor}] '。这种情况下,将rabbitmq从单机改成集群,还是增加集群节点会提高性能?
    • 你用的是哪个版本?
    • 抱歉没有及时回复。 RabbitMQ 3.2.2,二郎 R16B03
    猜你喜欢
    • 2016-06-26
    • 1970-01-01
    • 2016-09-22
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多