HAProxy をロードバランサーとして使用したい。haproxy の背後に 2 つの rabbitmq サーバーを配置したいと考えています。両方の rabbitmq サーバーは、EC2 の異なるインスタンス上にあります。このリファレンスに従って HAProxy サーバーを構成しました。私は動作しますが、問題はメッセージがラウンドロビン パターンで公開されないことです。メッセージは 1 つのサーバーでのみ公開されます。私の要件に別の構成はありますか?
/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
アップデート:
これについていくつかの研究開発を行ったところ、HAProxy が rabbitmq サーバー上の接続でラウンド ロビンであることがわかりました。例: 10 の接続を要求すると、2 つの rabbitmq サーバーを介して 10 の接続をラウンドロビンし、メッセージを公開します。
しかし、問題は、HAProxy サーバーによって管理されるべき接続ではなく、メッセージをラウンドロビンしたいことです。つまり、一度に 1000 メッセージを HAProxy に送信すると、500 メッセージがウサギ サーバー 1 に送信され、500 メッセージがウサギ サーバー 2 に送信されます。私が従わなければならない構成は何ですか?
アップデート:
バランシングで leastconn もテストしましたが、HAProxy の動作は予期しないものでした。その質問をserverfault.comに投稿しました