我知道Spring AMQP支持故障切換,但我的問題是,我如何負載平衡RabbitMQ代理的客戶端和集羣節點之間的連接?Spring AMQP java客戶端與RabbitMQ集羣節點之間的負載均衡連接?
任何反應將不勝感激。
問候。
我知道Spring AMQP支持故障切換,但我的問題是,我如何負載平衡RabbitMQ代理的客戶端和集羣節點之間的連接?Spring AMQP java客戶端與RabbitMQ集羣節點之間的負載均衡連接?
任何反應將不勝感激。
問候。
客戶端可以正常連接到羣集中的任何節點。如果該節點發生故障並且集羣的其餘部分仍然存在,則客戶端應該注意到已關閉的連接,並且應該能夠重新連接到羣集中的一些倖存的成員。通常,建議不要將節點主機名或IP地址燒入客戶端應用程序:這會引入不靈活性,並且如果集羣配置更改或集羣中節點數發生更改,則需要編輯,重新編譯和重新部署客戶端應用程序。相反,我們推薦一種更抽象的方法:這可能是一個動態DNS服務,它具有非常短的TTL配置,或者一個普通的TCP負載均衡器,或者使用起搏器或類似技術實現的某種移動IP。一般來說,管理與集羣內節點的連接的這一方面超出了RabbitMQ本身的範圍,我們推薦使用專門設計的其他技術來解決這些問題。
也看到這個答案:RabbitMQ client load balancing。
而且從here報價:
建立在它前面的一個負載均衡和映射後端MQ實例。您可以選擇HAProxy或Apache或Nginx或您在組織中使用的任何硬件負載平衡器。
如果服務器在VPC內的AWS上運行,則選擇內部負載平衡器。更新應用程序以指向負載平衡器終點。
正如你所見,互聯網上關於此事的信息已經足夠。對,我沒有在這裏提供我的看法,但看起來沒有太多的困難來實現預期的解決方案。
只需爲Rabbit節點配置一些負載均衡器,然後使用它爲客戶端提供一個url即可。
嗨Artem,非常感謝您的及時回覆,關於您提到的方法和鏈接,我會嘗試一下。還有一個問題:我曾經使用x-ha-policy = all來聲明HA隊列,並且它工作得很好。但是最近我發現這個選項已經不再適用了。你能告訴我爲什麼嗎?春季AMQP API或rabbitMQ有什麼變化? – Wuaner 2014-09-19 07:33:27
這是真的。該政策自從RabbitMQ 3.0以來發生了變化:http://www.rabbitmq.com/blog/2012/11/19/breaking-things-with-rabbitmq-3-0 – 2014-09-19 07:39:09
輝煌,謝謝Artem! – Wuaner 2014-09-20 13:09:44