【CentOS】LVSでロードバランサーを構築する

インストール

VirtualBoxを利用して以下の構成で実装した。

LVS ブリッジ(dhcp + 仮想IP)
Server1 ブリッジ(dhcp)
Server2 ブリッジ(dhcp)

本来はLVSNICを2枚挿して、
内側と外側のネットワーク境界に設置するけど、
面倒なので普通にブリッジで構成する。

まずはLVS用の仮想アドレスを用意する。
仮想IPの設定は簡単で、
単に ifcfg-eth1 をコピーして編集するだけでいい。

# cp ifcfg-eth1 ifcfg-eth1:0

---------------
DEVICE="eth1:0"
ONBOOT=yes
NETMASK=255.255.255.0
TYPE=Ethernet
IPADDR=192.168.11.92 //割り当てる仮想IP
---------------

# /etc/init.d/network restart
# ifconfig

これで仮想IPが表示されるはず。


次にIPパケット転送を有効にする

# vim /etc/sysctl.conf
------------------
net.ipv4.ip_forward = 1 ←値を「1」に変更して有効にする
------------------

設定を反映させる。
# sysctl -p


yumでインストールする。
# yum install ipvsadm

この時ipvsadmのバージョンと
カーネルに組み込まれているipvsのバージョンを確認する必要がある。
今回はバージョンに問題がなかったので、そのまま続行。

ipvsadm でLVSの設定をしていく。
まずは初期化しておく。
# ipvsadm -C

LVSのIPを登録する。
# ipvsadm -A -t 192.168.11.92:80 -s rr

  • sオプションはリクエストの割り振り方を変える。

今回はラウンドロビンにした。

クライアントのIPを登録する。
# ipvsadm -a -t 192.168.11.92:80 -r 192.168.11.99:80 -m
# ipvsadm -a -t 192.168.11.92:80 -r 192.168.11.98:80 -m

設定の永続保存する。
# /etc/init.d/ipvsadm save

確認してみる。
# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.11.92:http wlc
-> 192.168.11.98:http Masq 1 0 0
-> 192.168.11.99:http Masq 1 0 0


各クライアントサーバでループバックアドレスを設定する。
ループバックアドレスを指定することで、
192.168.11.92が自分宛のリクエストだと認識させる。
--- ifcfg-lo:0 ---
DEVICE=lo:0
IPADDR=192.168.11.92
NETMASK=255.255.255.255
ONBOOT=yes


これでOKなはず。