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

Bic*_*ick 1 queue cluster-computing rabbitmq messagebroker

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

rabbitmqctl –n rabbit2@MYPC1 join_cluster rabbit2@MYPC1 
Run Code Online (Sandbox Code Playgroud)

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

问题:
文档中,它说有一个主动被动实现,一个主动主动.

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

谢谢.

Eri*_*pie 8

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

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

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

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