我使用join_cluster命令创建了一个由三个RabbitMQ节点组成的集群.
即
rabbitmqctl –n rabbit2@MYPC1 join_cluster rabbit2@MYPC1
(目前集群在一台计算机上运行)
问题:
在文档中,它说有一个主动被动实现,一个主动主动.
我配置了什么?
我怎么知道?
怎么改变?
Active Active和Active Passive之间是否有很大的性能折衷?
与主动/主动互动的最佳做法是什么?
即安装负载均衡器?将要循环的阿帕奇
与主动/被动交互的最佳实践是什么?
如果我只与活动交互 - 这是单点f失败
谢谢.
我一直在用RabbitMQ对可用性选项进行一些研究,虽然我还很新,但我会尝试用我所拥有的知识回答你的问题.请理解这些答案并非全面.
在得到问题和答案之前,我认为值得指出的是,我认为在单个计算机上运行的集群环境中使用"主动/主动"和"主动/被动"这两个术语并不适用.主动/主动和主动/被动通常是用于描述高可用性群集的术语,其中您具有多个逻辑服务器(在您的情况下,多个RabbitMQ群集),共享/冗余存储,网络功能,电源等的系统.
我配置了什么?
如果没有为群集中的节点或队列镜像进行任何负载平衡,则两者都没有,这意味着您没有高可用性群集.
我怎么知道?
RabbitMQ不提供任何连接管理,因此具有故障节点的流量不会自动传递到其他节点,这是主动/主动群集所必需的.如果没有队列镜像,则群集中没有完全冗余的节点,这是主动/被动所必需的.
怎么改变?
即使您实现负载平衡和/或队列镜像,您也缺少一些要求来提供高可用性RabbitMQ集群.首先,使用RabbitMQ群集,您只有一个逻辑代理(HA群集至少需要两个).
Active Active和Active Passive之间是否有很大的性能折衷?
我认为,当您开始引入数据复制和/或冗余时,您将开始看到性能损失,这会影响主动/主动和主动/被动.如果使用同步数据复制,那么与异步复制数据相比,您将看到更大的性能损失.还有更多内容,但对我而言,使用Active/Active可能会有更大的性能影响,但这在很大程度上取决于所有部分的协作速度.在Active/Passive中,您可能在服务器之间使用异步复制,性能可能会更好,但在故障转移情况下,您需要等待该复制完成才能切换到辅助服务器.
与主动/主动互动的最佳做法是什么?即安装负载均衡器?将循环的apache RabbitMQ建议使用负载均衡器,这样您就不必将
有关群集中节点的详细信息泄露给客户端.
与主动/被动交互的最佳实践是什么?如果我只与活动交互 - 这是单点故障
这是一个故障点,但使用主动/被动,您可以实施故障策略来重试下一个可用服务器或所有剩余服务器.有了这些策略,您就可以建立一个场景,在发生故障转移而不是完全不可用时,集群的功能只会降级.此外,您可以与被动方进行交互,但交互类型可能非常不同(即只读访问),因为被动方可用的资源可能较少,并且数据复制可能会有延迟.
以下是用于收集此信息的一些参考:
维基百科上的高可用性群集
使用RabbitMQ进行聚类
RabbitMQ群集中的高可用队列
RabbitMQ的高可用性