LVS でのL3DSR
ちょっと前にやったLVSのDSR方式は同一セグメント上にリアルサーバがある方式。
今回はL3でのDSR方式を検証。
検証構成は以下
上記構成でのL3DSRは以下のようにして実現。
1.クライアントからのVIP宛通信は、LVSへ到着
2.LVSはVIP宛のパケットをIPIPトンネルを使用して、リアルサーバへ振り分け
3.IPIPトンネルから受けた、クライアントからのパケットをLVSを経由することなくクライアントへ直接返す。
今回は、IPIPトンネルも絡むので、LVSのConfigから整理
LVSのConfig
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {
notification_email {
}router_id LVS_DEVEL
}vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.1.10
}
}
include web_servers.conf
}# cat /etc/keepalived/web_servers.conf
virtual_server_group web_servers {
10.1.1.10 80
}
virtual_server group web_servers {
delay_loop 3
lvs_sched wrr
lvs_method DR
protocol TCP
real_server 1.1.2.1 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /health_check.html
status_code 200
}
connect_port 80
connect_timeout 3
}
}
real_server 1.1.2.2 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /health_check.html
status_code 200
}
connect_port 80
connect_timeout 3
}
}
}# cat /etc/sysctl.conf
# Controls IP packet forwardingnet.ipv4.ip_forward = 1
L2DSRと差異は、real_serverのIPがWeb01/02のTun0のIPを指定すること。
そして、今度はIPIPトンネルの為の設定を投入。
IPIPトンネル
# ip tunnel add tun0 mode ipip remote 10.1.2.1 local 10.1.1.1 dev eth0
# ip add add 1.1.1.1 peer 1.1.2.1 dev tun0
# ip link set tun0 mtu 1400
# ip link set tun0 up
# ip tunnel add tun1 mode ipip remote 10.1.2.2 local 10.1.1.1 dev eth0
# ip add add 1.1.1.1 peer 1.1.2.2 dev tun1
# ip link set tun1 mtu 1400
# ip link set tun1 up
上記で、Web01/02へのIPIPトンネルを準備
CLIで確認
# ip add show
<略>
3: tunl0: <NOARP> mtu 1480 qdisc noop state DOWN
link/ipip 0.0.0.0 brd 0.0.0.0
12: tun0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN
link/ipip 10.1.1.1 peer 10.1.2.1
inet 1.1.1.1 peer 1.1.2.1/32 scope global tun0
16: tun1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/ipip 10.1.1.1 peer 10.1.2.2
inet 1.1.1.1 peer 1.1.2.2/32 scope global tun1
#
今度はリアルサーバ側
# cat /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux<中略>
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tun0.rp_filter = 0
#
ここもL2DSRとの差異は、tun0の「rp_filter = 0」の箇所
# cat /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.1.1.10
NETMASK=255.255.255.255
BROADCAST=10.1.1.10
ONBOOT=yes
NAME=loopback
#
ここはL2DSR同様なので略
そして、LVSとのIPIPトンネルを張る
# ip tunnel add tun0 mode ipip remote 10.1.1.1 local 10.1.2.1 dev eth0
# ip add add 1.1.2.1 peer 1.1.1.1 dev tun0
# ip link set tun0 mtu 1400
# ip link set tun0 up
これで、L3 DSRの設定は終わり。