2014-10-03 59 views
0

我的應用程序使用celery和rabbitmq安裝了大量的EC2機器。目前,我的所有機器都充當了工人,除了一臺機器完全充​​當rabbitmq經紀人。我的所有機器的celeryconfig文件基本上都指向那個rabbitmq代理。我應該有多個rabbitmq代理來負載均衡工作?

我已在我的配置上啓用了羣集和HA隊列,並且指定了一定數量的計算機來鏡像磁盤中的隊列。我的問題是:我應該指定多個rabbitmq代理而不是一個代理?假設我指定了兩個經紀人機器 - 那麼我的一半芹菜工將指向一個經紀人,另一半將指向另一個經紀人。

我不想指定多個經紀人,除非有一個經紀人會導致瓶頸,如果一個經紀人得到過度勞累(這是可能的)?

編輯:我已啓用羣集的原因是指定另一臺機器作爲經紀人的情況下主要失敗。

+0

當前配置是否存在性能問題? – theMayer 2014-10-03 11:48:42

+0

目前沒有,但我還沒有生產,我正處於測試階段。我想知道是否可能出現問題,因爲現在我正在設計架構,並且實施多代理架構需要重構我的應用程序的很多部分。 – jeffrey 2014-10-03 16:10:19

+0

所以更新:我遇到了兔子節點由於負載過重而出現故障的問題。 – jeffrey 2014-10-06 20:16:52

回答

1

我認爲這取決於以下因素

  • 吞吐量和熱點?在隊列上發佈/消耗太多的消息?或工人過載?
  • MQ節點上的高可用性和負載平衡? tcp負載均衡器可以充當高可用性,負載平衡器和節點號可以在此處進行更改,而不是所有的MQ客戶端,以便在MQ節點之一關閉時所有worker都不會丟失連接。
+0

這絕對是一個經紀人超負荷,隊列中的消息可能太多。我沒有使用負載平衡器,而是通過HA節點列表迭代,並修改celeryconfig指向另一個節點(如果當前節點發生故障)。 – jeffrey 2014-10-09 15:56:15

+0

「修改芹菜配置」手動完成? – 2014-10-09 23:55:39

+0

我有一個cronjob正在運行,如果celeryconfig中的代理已經死了,它將修改celery配置以指向一個活的代理。所以它是自動的。 – jeffrey 2014-10-10 18:11:06