Haproxyを使用して、複数の仮想マシン(Webサービス)をロードバランサーします。各仮想マシンには複数のIPアドレスがあります。
Haproxyでこれを設定するためのベストプラクティスは何ですか?現在、私の構成では、仮想マシンの各IPに、対応する2つの実サーバーを持つhaproxyで「リッスン」するエントリがあります。
複数の「リッスン」と2つのバックエンドサーバーのみのように修正できるかどうか尋ねてもいいですか。すべての「リッスンIP」は同じ仮想マシンにのみ転送されるためです。
global
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
stats socket /var/run/haproxy.stat mode 666
maxconn 4096
user haproxy
group haproxy
daemon
defaults
mode http
log global
log 127.0.0.1 local0 notice
option dontlognull
option redispatch
timeout connect 10000 # default 10 second time out if a backend is not foun
timeout client 300000
timeout server 300000
maxconn 60000
retries 3
listen stats
bind xx.xxx.xxx.xxx:8888
stats uri /
stats realm Haproxy\ Statistics
stats auth user:pass
stats refresh 20
listen server 66.xxx.xxx.36:80
mode http
balance roundrobin
cookie SERVERID insert nocache indirect
option http-server-close
option forwardfor
option httplog
server server1 66.xxx.xxx.66:80 cookie sv1 check inter 5s rise 2 fall 5
server server2 66.xxx.xxx.68:80 cookie sv2 check inter 5s rise 2 fall 5
listen app 66.xxx.xxx.36:80
mode http
balance roundrobin
cookie SERVERID insert nocache indirect
option http-server-close
option forwardfor
option httplog
server app1 66.xxx.xxx.66:80 cookie ap1 check inter 5s rise 2 fall 5
server app2 66.xxx.xxx.68:80 cookie ap2 check inter 5s rise 2 fall 5
できることは2つあります。まず、「リッスン」または「フロントエンド」セクションに必要な数の「バインド」行を含めることができます。したがって、変更するのがIPだけである場合は、それが最善の方法です。次に、各IPに異なる処理を適用する理由がある場合(たとえば、異なるACL、または書き換えルール)、「リッスン」ではなく「フロントエンド」+「バックエンド」を使用する必要があります。 「リッスン」セクションは、まったく同じセクションにあるフロントエンドとバックエンドです。複数のフロントエンドを使用することで、各IPアドレスで必要な処理の種類を定義し、それらすべてに同じバックエンドを使用させることができます(「default_backend」ルールを使用)。また、すべてのサーバーは、同じCookie名、同じLBアルゴリズム、同じヘルスチェックなどを使用して、この単一のバックエンドにのみ配置されます。
これが役立つことを願って、ウィリー