2014-09-19 43 views

回答

1

按照RabbitMQ Clustering Guide

客戶端可以正常連接到羣集中的任何節點。如果該節點發生故障並且集羣的其餘部分仍然存在,則客戶端應該注意到已關閉的連接,並且應該能夠重新連接到羣集中的一些倖存的成員。通常,建議不要將節點主機名或IP地址燒入客戶端應用程序:這會引入不靈活性,並且如果集羣配置更改或集羣中節點數發生更改,則需要編輯,重新編譯和重新部署客戶端應用程序。相反,我們推薦一種更抽象的方法:這可能是一個動態DNS服務,它具有非常短的TTL配置,或者一個普通的TCP負載均衡器,或者使用起搏器或類似技術實現的某種移動IP。一般來說,管理與集羣內節點的連接的這一方面超出了RabbitMQ本身的範圍,我們推薦使用專門設計的其他技術來解決這些問題。

也看到這個答案:RabbitMQ client load balancing

而且從here報價:

建立在它前面的一個負載均衡和映射後端MQ實例。您可以選擇HAProxy或Apache或Nginx或您在組織中使用的任何硬件負載平衡器。

如果服務器在VPC內的AWS上運行,則選擇內部負載平衡器。更新應用程序以指向負載平衡器終點。

正如你所見,互聯網上關於此事的信息已經足夠。對,我沒有在這裏提供我的看法,但看起來沒有太多的困難來實現預期的解決方案。

只需爲Rabbit節點配置一些負載均衡器,然後使用它爲客戶端提供一個url即可。

+0

嗨Artem,非常感謝您的及時回覆,關於您提到的方法和鏈接,我會嘗試一下。還有一個問題:我曾經使用x-ha-policy = all來聲明HA隊列,並且它工作得很好。但是最近我發現這個選項已經不再適用了。你能告訴我爲什麼嗎?春季AMQP API或rabbitMQ有什麼變化? – Wuaner 2014-09-19 07:33:27

+0

這是真的。該政策自從RabbitMQ 3.0以來發生了變化:http://www.rabbitmq.com/blog/2012/11/19/breaking-things-with-rabbitmq-3-0 – 2014-09-19 07:39:09

+0

輝煌,謝謝Artem! – Wuaner 2014-09-20 13:09:44