LVS的默认模型:默认模型DR
DR模型原理图-->
在讲DR模型要点之前,需要了解网络的相关知识:
- 接收的报文拆解顺序:帧(MAC)-->数据包(IP)-->数据报文(port)
- ARP是广播,即只能在同一个局域网之内,不能穿过路由设备,作用是通告自己的MAC和请求目标IP的MAC
DR模型要点-->
- Real Server修改内核参数,忽略别人的ARP请求,同时禁止自己ARP通告,从而避免了外部的服务请求包转发到Real Server:
- 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
arp_ignore=1的意思是,仅当ARP广播查询的IP是进口网卡IP的时候,才予以回应,因为VIP不是,所以不回应。
arp_announce=2的意思是,对查询目标通告本地最合适的IP地址.那么何为最合适的IP地址.即:本地某个接口的IP地址和这个查询目标处于同一个子网内;如果这个条件不成立,则通告能接收到此ARP查询数据包的接口网卡MAC.
那么我们可以得到如下结论:
依据arp_ignore = 1,我们可以防止来自client的数据包被网关设备直接发往real server,因此,所有的client请求都到了DR上
依据arp_announce = 2,我们可以让DR获取到real server的DIP所在网卡的MAC.因此,DR就可以将目的MAC修改为real server的MAC,从而将数据包转发给Real server
- 在Real Server的lo上添加VIP,但是VIP不能添加到RIP网卡上,原因在于内核的ARP限制是在网卡上限制的
- 在Real Server上先修改内核参数,再配置IP地址,原因在于如果先配置IP,ARP就直接通告出去了
- RIP和DIP必须在一个网段,原因在于服务请求的报文,它的目标IP和源IP都不能更改,所以只能通过更改目标MAC地址来进行转发,不在一个网段,怎么知晓Real Server的MAC,不知道MAC,就无从修改网络服务报文的目标MAC,从而无法转发
- Real Server的网关必须指向RIP同一网段的另一个路由设备的lan口,从而发包到互联网上