- PR -

DNSラウンドロビンとmod_proxy_balancerで簡易ロードバランス

投稿者投稿内容
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2007-02-08 18:39
素晴らしいページを教えていただき、ありがとうございます。

いろいろ試しているのですが、なんか、テストしづらいです。

LVS設定前、

サーバ1

# ifconfig
----
eth0 inet addr:xx.xx.xx.117 Bcast:xx.xx.xx.119 Mask:255.255.255.248
eth0:0 inet addr:yy.yy.yy.61 Bcast:yy.yy.yy.63 Mask:255.255.255.252
eth0:1 inet addr:yy.yy.yy.62 Bcast:yy.yy.yy.63 Mask:255.255.255.252
eth1 inet addr:192.168.78.126 Bcast:192.168.78.255 Mask:255.255.255.0
lo inet addr:127.0.0.1 Mask:255.0.0.0
----

サーバ2

# ifconfig
----
eth0 inet addr:xx.xx.xx.116 Bcast:xx.xx.xx.119 Mask:255.255.255.248
eth0:0 inet addr:yy.yy.yy.53 Bcast:yy.yy.yy.55 Mask:255.255.255.252
eth0:1 inet addr:yy.yy.yy.54 Bcast:yy.yy.yy.55 Mask:255.255.255.252
eth1 inet addr:192.168.78.125 Bcast:192.168.78.255 Mask:255.255.255.0
lo inet addr:127.0.0.1 Mask:255.0.0.0
----

両方、eth0に3つのグローバルIPアドレスとeth1にローカルIPアドレスが
割り当てられています。

DNSラウンドロビンで返ってくるIPアドレスは、各eth0:0のアドレスです
(yy.yy.yy.61 と yy.yy.yy.53)。
これを、各eth0のアドレス(xx.xx.xx.117 と xx.xx.xx.116)へロード
バランスしたいです。

サーバ1の設定

1.
# vi /etc/sysctl.conf
----
net.ipv4.ip_forward = 1
----
# sysctl -p

2.
# ifconfig lo:0 〜
----
lo:0 inet addr:yy.yy.yy.53 Mask:255.255.255.255
----

3.
# ipvsadm -A -t yy.yy.yy.61:80 -s rr
# ipvsadm -a -t yy.yy.yy.61:80 -r xx.xx.xx.117:80 -g
# ipvsadm -a -t yy.yy.yy.61:80 -r xx.xx.xx.116:80 -g
# ipvsadm -L -n
----
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP yy.yy.yy.61:80 rr
-> xx.xx.xx.117:80 Local 1 0 0
-> xx.xx.xx.116:80 Route 1 0 0
----

サーバ2の設定

1.
# vi /etc/sysctl.conf
----
net.ipv4.ip_forward = 1
----
# sysctl -p

2.
# ifconfig lo:0 〜
----
lo:0 inet addr:yy.yy.yy.61 Mask:255.255.255.255
----

3.
# ipvsadm -A -t yy.yy.yy.53:80 -s rr
# ipvsadm -a -t yy.yy.yy.53:80 -r xx.xx.xx.117:80 -g
# ipvsadm -a -t yy.yy.yy.53:80 -r xx.xx.xx.116:80 -g
# ipvsadm -L -n
----
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP yy.yy.yy.53:80 rr
-> xx.xx.xx.117:80 Local 1 0 0
-> xx.xx.xx.116:80 Route 1 0 0
----

これで、片側のhttpd止めたりしてテストしているのですが、
ちゃんとバランスしているような、いないような。
ブラウザがキャッシュしたりするので、うまくいっているのか
とてもビミョーです。

見当違いなことやってないか、お気付きでしたら、ご指摘
ください。

しかし、LVSってスゴいですねぇ。
これでうまくいっているとしたら、とても簡単だし。

あと、heartbeatとかも設定してみます。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-02-08 19:04
引用:

Jumpin' Jack Flashさんの書き込み (2007-02-08 18:39) より:
DNSラウンドロビンで返ってくるIPアドレスは、各eth0:0のアドレスです
(yy.yy.yy.61 と yy.yy.yy.53)。
これを、各eth0のアドレス(xx.xx.xx.117 と xx.xx.xx.116)へロード
バランスしたいです。



LVSを使うのであればDNSラウンドロビンは要らないのでは?
yy.yy.yy.61とyy.yy.yy.53のどちらかを仮想IPにしましょう。

あと、DSRになるので仮想IPはループバックで定義する必要があります。

この構成で設定すると、アクティブ側のロードバランサの仮想IPは、
勝手にループバックからeth0のエイリアスに切り替わってくれました。

自分が試したときは手順通りでうまく行きましたよ。
今までの内容からすると、完全に同じ構成でいいはずです。

スキルアップ/キャリアアップ(JOB@IT)