KlabさんのLVSを使ったロードバランサ

http://dsas.blog.klab.org/archives/50664843.html
「こんなに簡単! Linuxでロードバランサ (1)」を見て実際に試した時のメモ。元記事ではDebianなので慣れているCentOSで試してみた。仕事で使っているCentOS4.4を使用。すべてのモジュールはRPMでそろえることができた。

以下をyumにてインストール

Kernelのバージョンとあっている必要があるので注意。

以下の図は元記事のもののIPアドレスだけ変更したもの。

             <internet>

                │

                //

                │

                │[192.168.0.122]

                │{192.168.0.100} = example.org

            ┌─┴─┐

            │ lv1  │

            └─┬─┘

                │[10.0.7.122]

                │

━━┯━━━━━┷━━━━┯━━━━━━━━ 10.0.0.0/16

    │                    │

    │[10.0.7.120]    │[10.0.7.121]

┌─┴─┐            ┌─┴─┐

│ w101 │            │ w102 │

└───┘            └───┘

192.168.0.0/24
    説明上、このアドレス帯をグローバルアドレスとして使います。


        * 192.168.0.122 : lv1の外側(eth1)のIPアドレスです。
        * 192.168.0.100: Webサービス用のバーチャルIPアドレス(VIP)です。ブラウザはこのIPアドレスに向けてHTTPアクセスしてきます。


10.0.0.0/16
    構内のネットワーク用のアドレス帯です。


        * 10.0.7.122: lv1の内側(eth0)のIPアドレスです。
        * 10.0.7.120: リアルサーバw101のIPアドレス(RIP)です。
        * 10.0.7.121: リアルサーバw102のIPアドレス(RIP)です。
#IP alias追加。
ip addr add 192.168.0.100 label eth1:100 dev eth1
ip addr show eth1 label eth1:100

#設定のclear
ipvsadm -C

#VirtualIPの追加。アルゴリズムは最小コネクション (lc)
ipvsadm -A -t 192.168.0.100:80 -s lc

#VIPにひもづくRealIPの追加。NAT (-m)。
ipvsadm -a -t 192.168.0.100:80 -r 10.0.7.120 -m
ipvsadm -a -t 192.168.0.100:80 -r 10.0.7.121 -m

#設定の確認
ipvsadm -Ln

#IPパケットのフォワーディングを有効にする。
echo '1' > /proc/sys/net/ipv4/ip_forward

#設定ファイルに保存する場合は以下。
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
#設定をリロード
sysctl -p


#リストから削除。振り分けされなくなる。
ipvsadm -d -t 192.168.0.100:80 -r 10.0.7.121
ipvsadm -Ln


#weightを0に設定。振り分けされなくなる。
ipvsadm -e -t 192.168.0.100:80 -r 10.0.7.121 -m -w 0
ipvsadm -Ln

#weightを5に設定
ipvsadm -e -t 192.168.0.100:80 -r 10.0.7.121 -m -w 5
ipvsadm -Ln