Configure HAProxy for rabbitmq
haproxy, java, load-balancing, rabbitmq, round-robin
Solution
Messages get published to an exchange which will route to a queue.
You probably didn't configure you queues with {"x-ha-policy","all"}. Based on the fact that the exchange routing is working on both nodes this is probably all you are missing.
Note: Pre Rabbit 3.0 you would declare a queue with the x-ha-policy argument and it would be mirrored. With rabbit 3.0 you need to apply a policy (ha-mode = all). You can set policies through the api or the api tools (rabbitmqctl, management gui). i.e.
`rabbitmqctl set_policy -p '/' MirrorAllQueues '.+' '{"ha-mode": "all"}'`
Problem
I want to use HAProxy as a load balancer. I want to put two rabbitmq server behind haproxy. Both the rabbitmq server are on different instance of EC2. I have configure HAProxy server by following this reference. I works but the problem is messages are not published in roundrobin pattern. Messages are publish only on one server. Is there any different configuration for my requirement? My configureation in /etc/haproxy/haproxy.cfg ``` 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 ``` Update: I have made some R&D on this and found that HAProxy is round robin the connection on the rabbitmq server. for ex: if i request for 10 connections then it will round robin the 10 connection over my 2 rabbitmq servers and publish the message. But the problem is I want to round robin the messages, not connection it should be manage by HAProxy server. i.e if i send 1000 msg at a time to HAProxy then 500 msg should go to rabbit server1 and 500 msg should go to rabbit server2. What should be the configuration that i have to follow? Update: I have also test with leastconn in balancing but HAProxy behavior in unexpected. I have posted that question on serverfault.com