配置HAProxy的对RabbitMQ的(Configure HAProxy for rabbitm

2019-07-29 08:22发布

我想用HAProxy的作为负载平衡器。 我希望把后面HAProxy的2台RabbitMQ的服务器。 无论是RabbitMQ的服务器上EC2的不同实例。 我有以下配置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味精HAProxy的然后500味精应该去兔Server1和500味精应该去兔服务器2。 应该是什么配置,我要跟进?

更新:

我还与leastconn在平衡,但HAProxy的行为意想不到的测试。 我已张贴这一问题上serverfault.com

Answer 1:

得到的消息发布到交换这将路线的队列。

你可能没有配置您{“X-HA-政策”,“所有”}队列。 基于这样的事实,该交换路由正在这两个节点上这可能是你失踪。

注:预兔子3.0,你将宣布与X-HA-政策观点队列中,它会被镜像。 与兔3.0则需要应用策略(HA模式=所有)。 您可以设置通过API或API工具(rabbitmqctl,管理GUI)政策。 即

rabbitmqctl set_policy -p '/' MirrorAllQueues '.+' '{"ha-mode": "all"}'



Answer 2:

同时,AMQP协议被设计为使用永久连接,这意味着你不会得到每AMQP的消息一个新的连接(以避免不断地重新连接的开销)。 这意味着负载平衡器如HAProxy的将不能有效地平衡了你的消息-它只能平衡你的连接帮助。

因此,你不能达到您的既定目标。 但是,如果你的实际目标是平均分配的消息对消费者的RabbitMQ的情况下,那么你可以为卡斯滕介绍使用群集,或者您可以使用联盟 。

联合会设置:

首先,你需要启用联盟插件:

rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management

然后为每个服务器的登录到网络的RabbitMQ UI作为管理员转到管理>“联邦上行流”>“添加新的上游”,然后添加其他服务器(S)的上游,。

现在,您需要定义一个策略为每个交换/排队你想成为联盟。 我只设法获得联邦队列工作介意你,所以我会尝试,第一。 进入管理>“策略”>“添加/更新的政策”,并补充说,针对您想联合队列(S)的政策。



Answer 3:

从服务器的定义中删除“备份”。

备份服务器是一个当所有其他人都下来,将被使用。 指定所有服务器作为backup ,而无需使用option allbackups将可能有不良后果。

更改你的配置以下的相关部分:

listen  rebbitmq *:5672
        mode    tcp
        balance roundrobin
        stats enable
        option  forwardfor
        option  tcpka
        server  web2 46.XX.XX.XXX:5672 check inter 5000
        server web1 176.XX.XX.XX:5672 check inter 5000


文章来源: Configure HAProxy for rabbitmq