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