(零)本地流量
只要是本机的进程跟本机的进程进行通讯,产生的流量,都是在lo接口上,而无论你使用的ip地址是eth0还是eth1的!
(一) 冲突域与广播域
冲突域:发生在第一层(物理层),用于隔离冲突域的设备,是二层设备(如网桥,交换机)
广播域:发生在第二层(链路层),用于隔离广播域的设备,是三层设备(如路由器,VLAN)
(二)ARP广播与loopback接口
前面所说,ARP广播,发生在第二层(链路层,具有物理地址),而loopbackup接口,可以认为是三层设备(只有IP地址而没有物理地址),
所以,loopbackup接口自身并不会接收arp广播,也就不响应ARP请求。
(三)LVS VIP
1)在LVS的DR跟Tunel模式下,Director与Realserver都必须配置VIP
2)Director的VIP用于接收client的请求,并将请求转发到某台Realserver(转发时将请求中的mac地址由director的改成realserver的mac,目标IP地址则仍然是director的VIP)
3)client的请求被Director转发并经过链路层寻址到达Realserver后,由于Realserver配置了VIP(请求中的目标IP正是VIP),所以接收请求并处理
4)处理结果返回给client
(四)LVS ARP
1) lvs/dr 跟 lv/tun都配置了vip
2) director才能响应对vip的arp请求
3)realserver不响应对vip的arp请求
(五)realserver arp problem
#开启arp_ignore
pre-up echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
#配置eth0只响应对自己接口上ip的arp请求
pre-up echo "1" > /proc/sys/net/ipv4/conf/eth0/arp_ignore
#对lo接口配置arp_ingore是不需要的!因为lo接口不接收arp请求
# pre-up echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
#开启arp_announce
pre-up echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
#realserver接收并处理了director的转发的client请求(在lo:0接口上处理),而将处理结果返回给client的时候(lo:0生成处理结果,而从eth0发出),如果此时需要进行arp请求,arp请求的源地址,使用的是发出请求接口的ip(eth0的ip),而不是产生结果的接口的ip(lo:0)...这样避免了arp请求被路由器缓存并打乱了原有的vip的mac)
pre-up echo "2" > /proc/sys/net/ipv4/conf/eth0/arp_announce
(六)ipvs/dr ipvs/nat ipvs/tun
1)dr跟tun有arp问题,而nat没有
2)nat模式下,director作为所有realserver的网关,所有的进站出站流量,全部通过director(瓶颈)
3)dr模式下,需要进行物理寻址,所以director跟realserver同在一个物理网络(arp问题)
4)tun模式下,director跟realserver可以在同一个网络,也可以跨网(当在同一个网络时,有arp问题)
5)dr跟tun模式下,director跟realserver的端口必须对应,而nat下各台realserver可以使用不同的端口