我的RabbitMQ群集是Active Active还是Active Passive?

时间:2014-02-04 14:59:33

标签: queue rabbitmq cluster-computing messagebroker

我使用join_cluster命令创建了一个由三个RabbitMQ节点组成的集群。

即。

rabbitmqctl –n rabbit2@MYPC1 join_cluster rabbit2@MYPC1 

(目前集群在一台计算机上运行)

问题:
documents中,它表示有一个用于主动被动的实现,一个用于主动主动。

  1. 我配置了什么?
  2. 我怎么知道?
  3. 如何改变?
  4. Active Active和Active之间是否有很大的性能折衷?主动被动?
  5. 与主动/主动互动的最佳做法是什么?
    即安装负载均衡器?将循环的阿帕奇
  6. 与主动/被动互动的最佳做法是什么?
    如果我只与活动交互 - 这是单点失败
  7. 感谢。

1 个答案:

答案 0 :(得分:8)

我一直在用RabbitMQ对可用性选项进行一些研究,虽然我还很新,但我会尝试用我所拥有的知识回答你的问题。请理解这些答案并非全面。

在回答问题和答案之前,我认为值得指出的是,我认为在单台计算机上运行的集群环境中使用“主动/主动”和“主动/被动”这两个术语并不适用。主动/主动和主动/被动通常是用于描述高可用性群集的术语,其中您具有多个逻辑服务器(在您的情况下,多个RabbitMQ群集),共享/冗余存储,网络功能,电源等系统。 / p>

  1. 我配置了什么?
    如果没有为群集中的节点或队列镜像进行任何负载平衡,则两者都没有,这意味着您没有高可用性群集。
  2. 我怎么知道?
    RabbitMQ不提供任何连接管理,因此具有故障节点的流量不会自动传递到其他节点,这是主动/主动群集所必需的。如果没有队列镜像,则集群中没有完全冗余的节点,这是主动/被动所必需的。
  3. 怎么改变?
    即使您实现了负载平衡和/或队列镜像,您也缺少一些要求来提供高可用性的RabbitMQ集群。主要是,使用RabbitMQ群集,您只有一个逻辑代理(HA群集至少需要两个)。
  4. Active Active和Active之间是否有很大的性能折衷?主动被动?
    我认为,当您开始引入数据复制和/或冗余时,您将开始看到性能损失,这会影响主动/主动和主动/被动。如果使用同步数据复制,那么与异步复制数据相比,您将看到更大的性能损失。还有更多内容,但对我而言,使用Active / Active可能会有更大的性能影响,但这在很大程度上取决于所有部分的合作速度。在Active / Passive中,您可能在服务器之间使用异步复制,性能可能会更好,但在故障转移情况下,您需要等待复制完成才能切换到辅助服务器。
  5. 与主动/主动互动的最佳做法是什么?即安装负载均衡器?将要循环的阿帕奇 RabbitMQ建议使用负载均衡器,这样您就不必将有关群集中节点的详细信息泄露给客户端。
  6. 与主动/被动互动的最佳做法是什么?如果我只与活跃的人互动 - 这是单点故障 这是一个故障点,但使用主动/被动,您可以实施故障策略来重试下一个可用服务器或所有剩余服务器。有了这些策略,您就可以建立一个场景,在发生故障转移而不是完全不可用时,集群的功能只会降级。此外,您可以与被动方进行交互,但交互类型可能非常不同(即只读访问),因为被动方可用的资源可能较少,并且数据复制可能会有延迟。 < / LI>

    以下是一些用于收集此信息的参考资料: