LVS实战

2018-12-29

LVS 架构

Linux Virtual System

模式

NAT

原理

(a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
(b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c). IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
(d). POSTROUTING链通过选路,将数据包发送给Real Server
(e). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
(f). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP

实际上就是客户端请求vip服务器是CIP–VIP 转换成 CIP-RIP,RS返回数据时RIP–CIP转换成VIP–CIP

原理图

1546054640062

实战规划

服务器 ip地址
DS服务器LVS vip:192.168.1.220 DIP:172.16.10.10
RS1 RIP:172.16.10.221
RS2 RIP:172.16.10.222

LVS-DS

1
2
3
4
5
6
7
yum install ipvsadm
iptables -F && setenforce 0
ipvsadm -A -t 192.168.1.220:80 -s wrr
ipvsadm -a -t 192.168.1.220:80 -r 172.16.10.221:80 -m -w 1
ipvsadm -a -t 192.168.1.220:80 -r 172.16.10.222:80 -m -w 1
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

LVS-RS

1
ip route add default via 172.16.10.10

总结

LVS dr服务器需要两张网卡,DIP网卡和VIP网卡

CIP和VIP,RIP要互通

RS必须把网关指向DIP

DR

原理

1、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP

2、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

3、 IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址

4、 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。

5、 RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP

6、 响应报文最终送达至客户端

原理图

1546066034360

实战规划

服务器 ip地址
DS VIP:172.16.10.250 DIP:10.23.23.10
RS1 RIP:10.23.23.20
RS2 RIP:10.23.23.30

546487486188

centos路由器配置

1546498681732

1546498921192

1
2
echo "1" > /etc/sys/net/ipv4/ip_forward
route add -host 172.16.10.250 dev eno67109432

DS配置

1546498898323

1546498946983

1
2
3
4
5
6
7
ifconfig eno16777736:0 172.16.10.250 broadcast 172.16.10.250 netmask 255.255.255.255 up

route add -host 172.16.10.250 dev eno16777736:0

ipvsadm -A -t 172.16.10.250:80 -s wrr
ipvsadm -a -t 172.16.10.250:80 -r 10.23.23.20:80 -g -w 1
ipvsadm -a -t 172.16.10.250:80 -r 10.23.23.30:80 -g -w 1

RS配置

1
2
3
4
5
6
7
8
ifconfig lo:0 172.16.10.250 broadcast 172.16.10.250 netmask 255.255.255.255 up

route add default gw 10.23.23.2

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

1546498984176

1546499023346

IP-TUN

原理

原理图

1546066391739

实战规划

FullNAT