Ana*_*oni 3 java load-balancing haproxy round-robin rabbitmq
我想使用HAProxy作为负载均衡器.我想把两个rabbitmq服务器放在haproxy后面.rabbitmq服务器都在EC2的不同实例上.我按照此引用配置了HAProxy服务器.我的工作但问题是消息不以roundrobin模式发布.消息仅在一台服务器上发布.我的要求有不同的配置吗?
我在/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
Run Code Online (Sandbox Code Playgroud)
更新:
我对此进行了一些研发,发现HAProxy是在rabbitmq服务器上进行循环连接.例如:如果我请求10个连接,那么它将在我的2个rabbitmq服务器上循环10个连接并发布消息.
但问题是我想要循环消息,而不是它应该由HAProxy服务器管理的连接.即如果我一次向HAProxy发送1000 msg,那么500 msg应该转到兔子服务器1,500 msg应该转到兔子服务器2.我必须遵循的配置是什么?
更新:
我还测试了lessconn的平衡,但HAProxy的行为是出乎意料的.我在serverfault.com上发布了这个问题
消息将发布到将路由到队列的交换机.
您可能没有使用{"x-ha-policy","all"}配置队列.基于交换路由在两个节点上工作的事实,这可能是您所缺少的.
注意:Pre Rabbit 3.0您将使用x-ha-policy参数声明一个队列,并且它将被镜像.使用Rabbit 3.0,您需要应用策略(ha-mode = all).您可以通过api或api工具(rabbitmqctl,management gui)设置策略.即
rabbitmqctl set_policy -p '/' MirrorAllQueues '.+' '{"ha-mode": "all"}'
归档时间: |
|
查看次数: |
8091 次 |
最近记录: |