TenForward

技術ブログ。はてなダイアリーから移転しました

LVS

LVS-Tun 構成が出来なかった件.Debian を使っていたのですが,回答がずばり,ここ に.

Debian はデフォルトで rp_filter がオンになって起動するので,/etc/network/options の rp_filter の設定をオフにしないとダメでした.

spoofprotect=no

というわけで,手順のメモ.テストはロードバランサとリアルサーバを同じネットワークにいる構成でやっているので LVS-DR でも OK ですが,TUN でやってます.Debian 3.1, kenel 2.6.8 でやってます.

  • ロードバランサ (Director) は 192.168.28.2, リアルサーバは 192.168.28.4, 192.168.28.5 (Webサーバが起動しています)
  • Virtual アドレスは 192.168.28.100

ロードバランサ (Director) の設定

一応,ロードバランサが機能しているのを確認しやすくするためにラウンドロビンで設定してます (2 行目の "rr").

# ifconfig eth0:0 192.168.28.100 netmask 255.255.255.255 broadcast 192.168.28.100 up
# ipvsadm -A -t 192.168.28.100:80 -s rr
# ipvsadm -a -t 192.168.28.100:80 -r 192.168.28.4 -i -w 1
# ipvsadm -a -t 192.168.28.100:80 -r 192.168.28.5 -i -w 1
  • よく設定例で ip_forward を 1 にするように書いてますが,不要のようです.

リアルサーバの設定

  • rp_filter は無効に.
  • tunl0 に 192.168.28.100 を割り当てる.
  • 今回の場合,ロードバランサとリアルサーバが同じネットワークに属しますから,リアルサーバが Virtual アドレスに対する arp に反応しないようにする.
# ifconfig tunl0 192.168.28.100 netmask 255.255.255.255 broadcast 192.168.28.100 up
# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce