是否需要使用三个节点来构建RabbitMQ集群?

是否需要使用三个节点来构建RabbitMQ集群?,rabbitmq,Rabbitmq,我不得不说,官方网站提供的信息很少,无法清楚地了解拉比 官方网站建议使用三个节点构建集群。原因是什么?我想这就像ZooKeeper,它需要奇数个节点来执行仲裁并选择主节点 另外,使用非HA集群的优势是什么?提高性能还是什么?如果队列所在的节点已关闭,则该队列不工作。因此,对于所有情况,是否有必要将集群设置为镜像队列和自动同步?三个节点是具有合理HA的最小节点。 假设您在两个节点中镜像了一个队列,如果其中一个节点停机,另一个节点将升级为新的从属节点或主节点 请阅读“自动处理分区”部分和“暂停少数模

我不得不说,官方网站提供的信息很少,无法清楚地了解拉比

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


另外,使用非HA集群的优势是什么?提高性能还是什么?如果队列所在的节点已关闭,则该队列不工作。因此,对于所有情况,是否有必要将集群设置为镜像队列和自动同步?

三个节点是具有合理HA的最小节点。 假设您在两个节点中镜像了一个队列,如果其中一个节点停机,另一个节点将升级为新的从属节点或主节点

请阅读“自动处理分区”部分和“暂停少数模式”部分

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

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

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

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

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

您还可以决定进行
手动同步
,因为当您同步队列时,队列会被阻止,如果您有大量消息要同步,则可能会出现问题。例如,您可以决定在没有流量时同步队列

(第节“非同步从属设备”)对其进行了清楚的解释


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

非常感谢你的清晰回答。群集超过3个节点是为了防止网络分区。我仍然不知道在非HA的情况下,集群如何提高性能?在生产环境中实现非HA群集是否可行?使用群集时,即使未连接到不包含队列的节点,也可以访问所有信息(队列、交换等)。您的观点是有道理的,但例如,如果您只是以扇出方式发送信息,则不需要HA,因为您只有临时队列。rabbitmq进程会获得高负载。sasl日志显示了大量信息,如“上下文:关机错误原因:关机违规者:[{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,Erlang R16B03