五、LVS-DR 模式演示
实验图:
1.ip 规则
Director:
eth0 172.16.100.2 DIP
eth0:0 172.16.100.1 VIP
RS1:
eth0: 172.16.100.10 RIP
lo0:0 172.16.100.1 VIP
RS2:
eth0: 172.16.100.11 RIP
lo0:0 172.16.100.1 VIP
2.关闭arp响应
RS1与RS2:
1 2 3 4
sysctl -w net.ipv4.conf.eth0.arp_announce=2 sysctl -w net.ipv4.conf.all.arp_announce=2 echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
说明:
arp_ignore: 定义接收到ARP请求时的响应级别;
0:只要本地配置的有相应地址,就给予响应;
1:仅在请求的目标地址配置请求到达的接口上的时候,才给予响应;
arp_ignore = 1
arp_announce:定义将自己地址向外通告时的通告级别;
0:将本地任何接口上的任何地址向外通告;
1:试图仅向目标网络通告与其网络匹配的地址;
2:仅向与本地接口上地址匹配的网络进行通告;
arp_announce = 2
3.配置VIP
Director:
1
[root@master ~]# ifconfig eth0:0 172.16.100.1 netmask 255.255.255.0
RS1:
1
[root@rs1 ~]# ifconfig lo:0 172.16.100.1 broadcast 172.16.100.1 netmask 255.255.255.255 up
RS2:
1
[root@rs2 ~]# ifconfig lo:0 172.16.100.1 broadcast 172.16.100.1 netmask 255.255.255.255 up
4.增加路由
RS1:
1
[root@rs1~]# route add -host 172.16.100.1 dev lo:0
RS2:
1
[root@rs2~]# route add -host 172.16.100.1 dev lo:0
Director:
1
[root@master ~]# route add -host 172.16.100.1 dev eth0:0
5.配置lvs-dr
1 2 3
[root@master ~]# ipvsadm -A -t 172.16.100.1:80 -s wlc [root@master ~]# ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 3 [root@master ~]# ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 1
6.测试效果
1 2 3 4 5 6 7
[root@master ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.16.100.1:80 rr -> 172.16.100.10:80 Route 3 0 0 -> 172.16.100.11:80 Route 1 0 0
六、LVS 持久连接
说明:尽管我们选择了LVS的分发方法,但是大多时候我们要保证返回给客户端的所有响应请求必须来自于同一台Real Server,这里我们就要用到LVS Persistence(持久性)。
1.LVS 持久连接和类型
PCC 来自同一客户端所有服务的请求都被重定向到同一台Real Server上,以IP地址为准。
PPC 来自同一服务的请求都被重定向到同一台Real Server上,以端口号为准。
PNMP 基于防火墙标记的持久连接,根据iptables 的规则,将对于某类服务几个不同端口的访问定义为一类。
2.持久连接命令
1 2
ipvsadm -A|E … -p timeout -p timeout 持久连接时长,默认为300秒,单位是秒!
3.PCC 演示
PCC是一个虚拟服务没有端口号(或者端口号为0),以"-p" 来标识服务。
缺陷:定向所有服务,期望访问不同的Real Server无法实现。
1 2 3
ipvsadm -A -t 172.16.100.1:0 -s rr -p 3600 ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.10 -g -w 2 ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.11 -g -w 2
4.PPC 演示
例如:client---->LVS(80,22)------>RS1 client----->LVS(23)----->RS2
缺陷:期望访问不同的端口到同一台RS上,无法实现。
1 2 3
ipvsadm -A -t 172.16.100.1:80 -s rr -p 3600 ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 2 ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.11 -g -w 2
5.PNMP 演示
先对某一特定类型的数据包打上标记,然后再将基于某一类标记的服务送到后台的Real Server上去,后台的Real Server 并不识别这些标记。将持久和防火墙标记结合起来就能够实现端口姻亲功能,只要是来自某一客户端的对某一特定服务(需要不同的端口)的访问都定义到同一台Real Server上去。假设这样一种场景:一个用户在访问购物网站时同时使用HTTP(80)和HTTPS(443)两种协议,我们需要将其定义到同一台Real Server上,而其他的服务不受限制。
1 2 3 4 5
iptables -t mangle -A PREROUTING -d 172.16.100.1 -i eth0 -p tcp --dport 80 -j MARK --set-mark 8 iptables -t mangle -A PREROUTING -d 172.16.100.1 -i eth0 -p tcp --dport 443 -j MARK --set-mark 8 ipvsadm -A -f 8 -s rr -p 600 ipvsadm -a -f 8 -r 172.16.100.10 -g -w 2 ipvsadm -a -f 8 -r 172.16.100.11 -g -w 1