LVSでロードバランサ構築

LVSでロードバランサ構築のメモ。

ゲストOSの用意

VirtualBoxでゲストOSを3つ用意した。
ゲストOSはDebian 6.0 32bit。
ホストOSはUbuntu 11.10 32bit。

hostname IP1 IP2 GATEWAY
lb1 172.16.0.100 192.168.0.100 172.16.0.231
web1 Nothing 192.168.0.150 192.168.0.100
web2 Nothing 192.168.0.151 192.168.0.100

WebサーバにNginxインストール(web1,web2)

インストール手順はNginxインストール - i2bsの日記と同じ。

root@lb1:~# curl -H 'Host: web.localdomain' http://172.16.0.110
172.16.0.110(web1.localdomain)
root@lb1:~# curl -H 'Host: web.localdomain' http://172.16.0.111
172.16.0.111(web2.localdomain)

ipvsadmインストール(lb1)

apt-get install ipvsadm libnl1

ポートフォワード有効化(lb1)

sed -i.`date +%Y%m%d` -e '/net\.ipv4\.ip_forward/s/^#\(.*\)$/\1/' /etc/sysctl.conf
sysctl -p
cat /proc/sys/net/ipv4/ip_forward

仮想IP設定(lb1)

ip addr add 172.16.0.120 label eth0:vip dev eth0
ip addr show eth0 label eth0:vip

LVS設定(lb1)

ipvsadm -C
ipvsadm -A -t 172.16.0.120:80 -s lc
ipvsadm -a -t 172.16.0.120:80 -r 192.168.250.110 -m
ipvsadm -a -t 172.16.0.120:80 -r 192.168.250.111 -m
ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn TCP  172.16.0.120:80 lc
  -> 192.168.250.110:80           Masq    1      0          0         
  -> 192.168.250.111:80           Masq    1      0          0 

バランシングの確認(ホストOS)

root@johan:~# curl -H 'Host: web.localdomain' http://web.localdomain/
172.16.0.110(web1.localdomain)
root@johan:~# curl -H 'Host: web.localdomain' http://web.localdomain/
172.16.0.111(web2.localdomain)
root@johan:~# curl -H 'Host: web.localdomain' http://web.localdomain/
172.16.0.110(web1.localdomain)
root@johan:~# curl -H 'Host: web.localdomain' http://web.localdomain/
172.16.0.111(web2.localdomain)
root@johan:~# curl -H 'Host: web.localdomain' http://web.localdomain/
172.16.0.110(web1.localdomain)
root@johan:~# curl -H 'Host: web.localdomain' http://web.localdomain/
172.16.0.111(web2.localdomain)