我想使用HAProxy作爲負載平衡器。我想把兩個rabbitmq服務器放在haproxy後面。 rabbitmq服務器都在EC2的不同實例上。我通過以下this reference配置HAProxy服務器。我工作,但問題是消息不會以循環模式發佈。消息只在一臺服務器上發佈。我的要求是否有不同的配置?爲rabbitmq配置HAProxy
我在/etc/haproxy/haproxy.cfg configureation
listen rabbitmq 0.0.0.0:5672
mode tcp
stats enable
balance roundrobin
option tcplog
no option clitcpka
no option srvtcpka
server rabbit01 46.XX.XX.XX:5672 check
server rabbit02 176.XX.XX.XX:5672 check
listen web-service *:80
mode http
balance roundrobin
option httpchk HEAD/HTTP/1.0
option httpclose
option forwardfor
option httpchk OPTIONS /health_check.html
stats enable
stats refresh 10s
stats hide-version
stats scope .
stats uri /lb?stats
stats realm LB2\ Statistics
stats auth admin:Adm1nn
更新:
我已經做這方面的一些[R & d,發現HAProxy的是循環賽上的連接rabbitmq服務器。例如:如果我請求10個連接,那麼它會循環遍歷我的2個rabbitmq服務器上的10個連接併發布消息。
但問題是我想輪循消息,而不是連接它應該由HAProxy服務器管理。即如果我一次發送1000 msg到HAProxy,那麼500 msg應該去兔子服務器1,500 msg應該去兔子服務器2。我必須遵循什麼樣的配置?
更新:
我還與leastconn測試的平衡,但在意外HAProxy的行爲。我已經在serverfault.com
當你說它的工作原理,但消息只發布在一臺服務器上,當然這表明它不工作?從HAProxy機器可以與兩個服務器建立AMQP連接?我注意到他們在不同的網絡上,你可以發佈統計頁面的屏幕截圖,以便我們看到HAProxy正在做什麼。順便說一下,你的目標是什麼?如果通過扇出交換可能更好地管理某些內容,則使用HAProxy將RR消息發送到不同的服務器。 –
史蒂夫馬丁。感謝您的回覆。我的HAproxy服務器能夠連接兩個Rabbitmq服務器。我的目標是連接應該由HAProxy管理。例如,如果我在HAProxy後面有2個兔子服務器併發布1000條消息,那麼500 msg應該放入rabbit1,並且500 msg應該保留。如果我在HAProxy服務器中動態添加rabbitmq服務器,HAP應該在所有的兔子服務器之間進行分配。目前我正在忍受的是所有1000 msg在rabbit1中,而不是在兩者中。 –
啊,只是仔細看看你的HAP配置。您將兩臺服務器都配置爲「備份」。將在答案中發佈建議... –