2015-10-19 168 views
0

我需要在不同数据库之间同步表。因此我想设置一个高可用性的RabbitMQ集群。没有消息丢失是非常重要的,因为它会导致异步表。带负载均衡器的RabbitMQ集群

RabbitMQ Cluster with LB

正如你可以在这里看到,这种方法有失败的一个临界点。如果由于任何原因无法访问负载平衡器,则发送者无法将消息发送到RabbitMQ队列。

可能的选项是:

  1. 全部添加到您的应用程序和环路节点通过他们,直到你找到了工作之一。
  2. 在您的所有网络服务器节点上安装HAProxy等软件负载均衡器,以解析为正常工作的RabbitMQ节点。

我对这两种解决方案都感到不舒服。也许有人有一个更好的主意或对这个特定的主题有一些进一步的阅读?

我想用php的RabbitMQ。这个问题不应该很重要,但也许有人知道PHP的具体答案。

回答

1

这是一个常见问题。

如果负载平衡器在您的方案中可以fail,则必须将HA行为实施到客户端。

大部分RabbitMQ客户端不执行HA。 例如,这个client实现了客户端的HA

如果担心负载平衡器失败,还可以在HA中配置负载平衡器。

我把注意力放在HA的配置负载平衡器。

顺便说一句你的问题是相当普遍的,希望它有帮助