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

  

posted @ 2022-08-02 16:18  yuanbangchen  阅读(280)  评论(0编辑  收藏  举报