2015-10-19 314 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的配置負載平衡器。

順便說一句你的問題是相當普遍的,希望它有幫助