web-dev-qa-db-ja.com

HAProxy + keepalived +複数のバックエンドファーム/仮想IPアドレス

複数のバックエンドファーム(HTTP、FTPなど)があり、基本的に顧客ごとに1つのファームがあり、Piranhaから移動して負荷分散インフラストラクチャを再構築しようとしています。 HAProxyへ。
いくつかの異なるバックエンドサーバーファームを使用しているため、Piranha構成は現在次のようになります(例はファーム webserv01 、 2番目のファーム webserv02 は同じ構成を使用しますが、仮想IPは異なります):

virtual webserv01 {
active = 1
address = 10.11.11.1 eth2:30
vip_nmask = 255.255.255.0
port = 80
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
server webserv01v {
address = 192.168.101.64
active = 1
port = 80
weight = 1
}
server webserv02v {
address = 192.168.102.64
active = 1
port = 80
weight = 1
}
server webserv05v {
address = 192.168.101.65
active = 1
port = 80
weight = 1
}
server webserv06v {
address = 192.168.102.65
active = 1
port = 80
weight = 1
}
}

(たとえば、顧客1にはvIP 10.11.11.1:80を使用する独自のWebサーバーファームがあり、顧客2にはvIP 10.11.11.2:80を使用するファームがあります)。 1つのHAProxyインスタンスが、異なる一意のvIPアドレスを使用して同じサービスの複数のファームを処理できるかどうか知りたいです。

基本的な設定は次のようになります。
2つのHAProxyインスタンス(フェイルオーバーあり)
4つのHTTPバックエンドファーム(顧客ごとに1つ)
2つのFTPファーム

わかりやすくするために、2つのWebサーバーファーム用の私のコンセプトHAProxy構成例を添付してください。さまざまな仮想IPに注意してください。

#---------------------------------------------------------------------
# LB: VIRTUAL WEBSERVER POOL #01
#---------------------------------------------------------------------
frontend vWEB-LB-01
bind    10.11.11.1:80
mode    http
default_backend vWEB-Pool-01

backend vWEB-Pool-01
mode    http
balance roundrobin
server  webserv01v  192.168.101.64:80   check   weight 100  inter 1000
server  webserv02v  192.168.102.64:80   check   weight 100  inter 1000
server  webserv05v  192.168.101.65:80   check   weight 100  inter 1000
server  webserv06v  192.168.102.65:80   check   weight 100  inter 1000

#---------------------------------------------------------------------
# LB: VIRTUAL WEBSERVER POOL #02
#---------------------------------------------------------------------
frontend vWEB-LB-02
bind    10.11.11.2:80
mode    http
default_backend vWEB-Pool-02

backend vWEB-Pool-02
mode    http
balance roundrobin
server  webserv01v  192.168.101.75:80   check   weight 100  inter 1000
server  webserv02v  192.168.101.76:80   check   weight 100  inter 1000
server  webserv05v  192.168.101.68:80   check   weight 100  inter 1000
server  webserv06v  192.168.101.69:80   check   weight 100  inter 1000

HAProxyおよび/またはkeeoalivedは、これを表示されている方法で処理できますか?はいの場合、どのようにこれにアプローチしますか?

2つのHAProxyインスタンス間のフェイルオーバーの目的でkeepalivedを使用し、バックエンドファームの負荷分散を実行させたいと思います。使用する必要のある複数の仮想IPアドレスについて今混乱しているので、洞察をいただければ幸いです。

2
Mosh Pit

はい、HAproxyがそれを行います。 HAproxyが使用するすべての仮想IPでkeepalivedを構成する必要があります。 keepalived.confのvirtual_ipaddressブロックに複数のIPを割り当てることができます。

virtual_ipaddress {
        192.168.0.10
        192.168.0.11
        192.168.0.12
        192.168.0.13
        }
4
Jim G.