rabbitMQ 集群 VS 联邦 VS 铲子

Posted

技术标签:

【中文标题】rabbitMQ 集群 VS 联邦 VS 铲子【英文标题】:rabbitMQ clustering VS federation VS shovel 【发布时间】:2014-06-27 06:51:15 【问题描述】:

我正在不同位置的机器上设置类似“rabbitMQ 集群”的东西,这对 RabbitMQ 集群来说并不好(因为它需要与单个位置的机器一起工作);

所以我在看rabbitMQ Federation,但它是一个节点的定向网络,如果第一个节点宕机,它会自动继续写入下一个节点吗?

我的目标是即使某些节点已关闭,但机器位于不同位置,日志/数据仍能流过

( 我们可以使用rabbitMQ Federation,让它双向吗? 比如我们有node1和node2,设置node1既是node2的上游又是下游,node2也是node1的上游和下游。所以这就像一个集群,但可以与不同位置的机器一起工作 )

【问题讨论】:

【参考方案1】:

如果第一个节点宕机了,它会自动继续写入下一个节点吗?

您可以配置 DNS 或负载平衡器并配置规则以重定向流量。 例如,如果您配置一个负载均衡器,您可以使用它的 IP 来配置上游 ip,这样您就可以添加或删除您想要的所有节点。

我们可以使用rabbitMQ Federation,让它双向吗?

是的,但你可以读到here:

你可以有一个循环消息

您可以使用max_hops=1 避免循环消息,请阅读here 了解更多信息

如果您只想在代理之间复制消息,您的架构也可以使用铲子实现。

铲子插件支持多broker连接为:

[ "amqp://fred:secret@host1.domain/my_vhost"
  , "amqp://john:secret@host2.domain/my_vhost"
]

如果你能读到here

如果主机被省略(在一般的 AMQP URI 中无效),铲子使用直接连接到运行它的代理。这样可以避免使用网络堆栈。

希望对你有用。

【讨论】:

以上是关于rabbitMQ 集群 VS 联邦 VS 铲子的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ 消息队列学习

RabbitMQ---集群,Haproxy+Keepalive 实现高可用负载均衡,Federation Exchange和Federation Queue

RabbitMQ集群

RabbitMQ集群

RabbitMQ 集群:无法连接到节点:nodedown

如何从rabbitmq集群中剔除某个节点以及如何将该节点加回集群