KlabさんのLVSを使ったロードバランサ
http://dsas.blog.klab.org/archives/50664843.html
「こんなに簡単! Linuxでロードバランサ (1)」を見て実際に試した時のメモ。元記事ではDebianなので慣れているCentOSで試してみた。仕事で使っているCentOS4.4を使用。すべてのモジュールはRPMでそろえることができた。
以下をyumにてインストール
- ipvsadm
- keepalived
- iptables
- iproute
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