(internet) | | 182.48.51.190 +----+-----------+ | Virtual Router | +----+-----------+ | 10.1.0.1/24 GW | -----+------ 10.1.0.0/24 ------+-------------------+-------- | | | | eth0 10.1.0.10/24 | | | eth0:0 10.1.0.100/24 | eth0 10.1.0.150 | eth0 10.1.0.160 +----+------+ +------+----+ +---+-------+ | LVS serv | | Web serv1 | | Web Serv2 | +----+------+ +------+----+ +-----------+
# yum install ipvsadm
# ip addr add 10.1.0.100/24 label eth0:0 dev eth0
# ip addr del 10.1.0.100/24 label eth0:0 dev eth0
# vi /etc/sysctl.conf 下記を追加 net.ipv4.ip_forward=1 net.ipv4.conf.default.rp_filter=0
今回はNICが1つなので本来は必要ないが、NICを2つで構成している場合は必ず「net.ipv4.conf.default.rp_filter」を設定する。
参考:net.ipv4.conf.default.rp_filter
# sysctl -p
ファイアウォールは開けておく
Nat設定(ポート転送)は、80番、443番を VIP:10.1.0.100に対して通しておく。
# ipvsadm -A -t 10.1.0.100:80 -s lc # ipvsadm -A -t 10.1.0.100:443 -s lc
# ipvsadm -a -t 10.1.0.100:80 -r 10.1.0.150 -g # ipvsadm -a -t 10.1.0.100:80 -r 10.1.0.160 -g # ipvsadm -a -t 10.1.0.100:443 -r 10.1.0.150 -g # ipvsadm -a -t 10.1.0.100:443 -r 10.1.0.160 -g
# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.1.0.100:80 lc -> 10.1.0.150:80 Route 1 0 0 -> 10.1.0.160:80 Route 1 0 0 TCP 10.1.1.85:443 lc -> 10.1.0.150:443 Route 1 0 0 -> 10.1.0.160:443 Route 1 0 0
LVSサーバ側の設定が終わっていると、「182.48.51.190 → 10.1.0.100」への通信がそのままWeb Serv1、Web Serv2へ転送されます。
そのままだと、自分宛てと気づけずにパケットを処理する事ができません。
その為、下記どちらかでVIP宛て通信を返す必要があります。
iptables -t nat -I PREROUTING -d 10.1.0.100 -j REDIRECT
# ip addr add 10.1.0.100/24 label eth0:0 dev eth0
ループバックアドレスを設定すると、arp関係で問題が出るので、
下記の設定を入れてあげる。
# vi /etc/sysctl.conf 下記を追加 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2
# sysctl -p