我是RabbitMQ的新手,所以请问我一些琐碎的问题:
1)如果在RabbitMQ中进行集群,则如果一个节点发生故障,则将负载转移到另一个节点(而不停止其他节点)。同样,我们也可以在不停止集群中现有节点的情况下将新节点添加到现有集群中。那是对的吗?
2)假设我们从单个RabbitMQ节点开始,并在其上创建100个队列。现在,生产者开始以更快的速度发送消息。为了处理此负载,我们添加了更多节点并建立了集群。但是队列仅存在于第一个节点上。现在如何在节点之间平衡负载?如果我们需要添加更多队列,应该在哪个节点上添加队列?或者我们可以使用负载均衡器添加它们。
提前致谢
请您参考如下方法:
1)如果在RabbitMQ中进行集群,则如果一个节点发生故障,则将负载转移到另一个节点(而不停止其他节点)。同样,我们也可以在不停止集群中现有节点的情况下将新节点添加到现有集群中。那是对的吗?
如果在其上创建队列的节点发生故障,只要启用了队列的镜像,rabbitmq就会为集群中的该队列选择一个新的主节点。群集根据您可以定义的策略提供HA。
2)假设我们从单个RabbitMQ节点开始,并在其上创建100个队列。现在,生产者开始以更快的速度发送消息。为了处理此负载,我们添加了更多节点并建立了集群。但是队列仅存在于第一个节点上。现在如何在节点之间平衡负载?
负载不平衡。分布式群集提供HA,而不提供负载平衡。您的请求将被重定向到队列所在的集群中的节点。
如果我们需要添加更多队列,应该在哪个节点上添加队列?或者我们可以使用负载均衡器添加它们。
这取决于您的用例。有些人使用循环轮询并在单独的节点上创建队列。
综上所述
对于高可用性,在群集中使用mirroring。
要在节点之间平衡负载,请使用LB to distribute across Queues。
如果您想平衡队列本身,请查看Federated Queues。它们允许您从上游队列中获取下游队列中的消息。