LVS的DR模式
结构图

一、实践LVS的DR模式 lvs与rs同网段。
前期规则设置
CIP:192.168.10.50 gateway:192.168.10.60
Route: 192.168.10.60 192.168.80.60 启用IP_forward的功能,不能有网关。
LVS:DIP:192.168.80.100 gateway:192.168.80.60 VIP: 192.168.80.200
RS1: RIP:192.168.80.110 gateway:192.168.80.60 VIP: 192.168.80.200
RS1: RIP:192.168.80.120 gateway:192.168.80.60 VIP: 192.168.80.200
思考: 1.LVS 网关一定要用,可随便设置,,为什么要设置网关。RS回应数据包不经过LVS,那么网关存在的意义就是RS当机时,LVS可以回应数据给客户时数据包要出口。
LVS服务器设置:
设置VIP地址 注意 IP也可以绑定在lo上。
ip a a 192.168.80.200/24 dev eth0
设置LVS的DR模式
ipvsadm -A -t 192.168.80.200:80 -s rr
ipvsadm -a -t 192.168.80.200:80 -r 192.168.80.110
ipvsadm -a -t 192.168.80.200:80 -r 192.168.80.120:8080
ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.80.200:80 rr
-> 192.168.80.110:80 Route 1 0 0
-> 192.168.80.120:80 Route 1 0 0
RS的服务器设置:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
设置VIP地址,注意要32位掩码 IP绑定的接口也可以其它接口,建议在lo接口上。
ifconfig lo:0 192.168.80.200 netmask 255.255.255.255
客户端测试
while true ; do curl http://192.168.80.200 ;sleep 1; done
LVS和RS脚本方式
RS的预配置脚本:
#!/bin/bash
vip='192.168.80.200'
mask='255.255.255.255‘
dev=lo:1
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac
LVS的配置脚本:
#!/bin/bash
vip='192.168.80.200'
iface=‘lo:1'
mask='255.255.255.255'
port='80'
rs1='192.168.80.110'
rs2='192.168.80.120'
scheduler='wrr'
type='-g'
case $1 in
start)
ifconfig $iface $vip netmask $mask #broadcast $vip up
iptables -F
ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
;;
stop)
ipvsadm -C
ifconfig $iface down
;;
*)
echo "Usage $(basename $0) start|stop“
exit 1
esac
二、实践LVS的DR模式,lvs与rs不同网段。

前期规则设置 CIP:192.168.10.50 gateway:192.168.10.60 Route: eth0(192.168.10.60) eth0(192.168.80.60 、10.0.0.200/8 ) 启用IP_forward的功能 LVS:DIP:192.168.80.100 gateway:192.168.80.60 VIP: 10.0.0.100/32 gateway和VIP两个IP绑定在同一个网卡上 RS1: RIP:192.168.80.110 gateway:192.168.80.60 VIP: 10.0.0.100/32 VIP绑定在lo RS2: RIP:192.168.80.120 gateway:192.168.80.60 VIP: 10.0.0.100/32 VIP绑定在lo 测试中RS的网关也可以指向10.0.0.0.200, LVS中的VIP地址的掩码可以是8或32 , 测试中发现Route中的(192.168.80.60 、10.0.0.0.200/8 )测试中可以只设置其中的一个, RS的网关指向其中的一个, (网关的掩码要24,如果是32就判断与10.0.0.0.200不是同个网段)。 Route设置 ip a a 10.0.0.200/8 dev eth0 与80.60同一网卡上。 [root@localhost7e ~]# nmcli connection modify eth0 +ipv4.addresser 10.0.0.200/8 [root@localhost7e ~]# nmcli connection up eth0 LVS服务器设置: 设置VIP地址 ip addr add 10.0.0.100/32 dev eth0 设置LVS的DR模式 ipvsadm -A -t 10.0.0.100:80 -s rr ipvsadm -a -t 10.0.0.100:80 -r 192.168.80.110 ipvsadm -a -t 10.0.0.100:80 -r 192.168.80.120 ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.100:80 rr -> 192.168.80.110:80 Route 1 0 0 -> 192.168.80.120:80 Route 1 0 0 RS的服务器设置: echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 两台RS设置VIP地址 ip addr add 10.0.0.100/8 dev lo:1 客户端测试 while true ; do curl http://10.0.0.100 ;sleep 1; done
LVS和RS脚本方式
RS的预配置脚本:
#!/bin/bash
vip='10.0.0.100'
mask='255.0.0.0‘
dev=lo:1
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac
LVS的配置脚本:
#!/bin/bash
vip='10.0.0.100'
iface=‘eth0'
mask='255.0.0.0'
port='80'
rs1='192.168.80.110'
rs2='192.168.80.120'
scheduler='wrr'
type='-g'
case $1 in
start)
ifconfig $iface $vip netmask $mask #broadcast $vip up
iptables -F
ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
;;
stop)
ipvsadm -C
ifconfig $iface down
;;
*)
echo "Usage $(basename $0) start|stop“
exit 1
esac

浙公网安备 33010602011771号