6

您好我創建EC2如何在RabbitMQ集羣中進行負載分配?

我想向外擴展CPU利用率的RabbitMQ集羣基地,但是當我發佈消息只有一臺服務器使用的CPU和其他的RabbitMQ服務器不使用CPU

羣集連續3個RabbitMQ的服務器所以我怎樣才能在整個RabbitMQ集羣上分配負載

回答

9

RabbitMQ集羣旨在提高可伸縮性,但系統並非完全自動化。

當您在羣集中的節點上聲明隊列時,隊列僅在該節點上創建。所以,如果你有一個隊列,不管你發佈了哪個節點,這個消息將最終在隊列所在的節點上。

要正確使用RabbitMQ的集羣,你需要確保你做以下事情:

  • 已分發到各節點多個隊列,這樣的工作在一定程度上均勻分佈,
  • 連接你的客戶不同的節點(否則,您最終可能會通過一個節點彙集所有消息),並且如果可以,則嘗試讓發佈者/使用者連接到保存他們正在使用的隊列的節點(爲了最大限度地減少消息傳輸在集羣內)。

或者,看看High Availability Queues。它們像普通的隊列,但隊列內容鏡像在多個節點上。因此,對於您的情況,您將發佈到一個節點,RabbitMQ會將發佈鏡像到另一個節點,消費者將能夠連接到任一節點,而無需擔心內部傳輸導致羣集停滯。

+0

你好,scvalex。爲「有多個隊列分佈在各個節點上,這樣工作分佈有點均勻」,是否需要添加一個linux服務器來運行負載平衡器程序來解決程序?或者必須更改應用程序的源代碼以將「rabbitmq」所有節點的名稱信息添加到程序以實現負載平衡? –

+1

我會說「更改應用程序的源代碼以添加'rabbitmq'所有節點名稱信息以便爲負載平衡編程」,但也有一些人使用負載均衡器成功。 – scvalex

+0

找到你的文章之前,我認爲rabbitmq非常強大。但在此之後,我認爲它不像你所說的那樣是自動的。這並不容易使用。 –