[置顶] lvs-tun隧道模式搭建
一、lvs直接路由原理
由于图片还要一张一张上传,可以到下面网站下载我的word版本:
http://download.csdn.net/user/y0908105023
补充基础知识:
OSI(Open SystemInterconnection),开放式系统互联参考模型。是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为了七层。OSI七层模型是一种框架性的设计方法,建立七层模型的主要目的是为解决异种网络互联时所遇到的兼容性问题,其最主要的功能是帮助不同类型的主机实现数据传输,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通信。其中第三层网络层负责ip地址,第二层数据链路层负责mac地址。
下面开始说明lvs直接路由的原理:(我用顺序表示)
1、客户端cip访问一个数据包到一个vip,此数据包中包含该客户端的源ip地址和目标ip地址。
2、访问请求到达vip所在的路由中,于是路由器发送arp广播确定要使用的mac地址,这时只要Director回复,于是数据包就被发送到了Director(注意:在dr模式中,Director和realserver是在同一个网络中,它们拥有相同的虚拟vip,它们也是可以响应arp来被当做服务器被直接访问的,但是在RealServer上面配置了忽略请求的协议,所以只有Director会响应arp广播)。
3、当数据包到达Director时,Director将数据包转发给RealServer,源地址和目的地址不变,还是cip和vip,但是此时的mac地址为realserver的mac。
4、数据包通过mac发送到realserver中,realserver在响应信息直接发送给客户端。
5、arp广播协议:addressresolution protocol地址解析协议,ARP(Address ResolutionProtocol,地址解析协议)是获取物理地址的一个TCP/IP协议。某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认其物理地址的应答,这样的数据包才能被传送出去。RARP(逆向ARP)经常在无盘工作站上使用,以获得它的逻辑IP地址。
二、lvs隧道模式
ip隧道可以用于将数据包从一个子网或虚拟lan转发到另一个子网或vlan,甚至在数据包必须要通过另一个网络或internet的情况下。隧道模式允许Director与集群节点放在不同的网络段。
下图是隧道模式的分析图。
搭建lvs隧道
lvs隧道图:
对dr服务器的操作:
ifconfig tunl0 192.168.181.10 broadcast192.168.181.10 netmask 255.255.255.255 up
route add -host 192.168.181.10 dev tunl0
ipvsadm -A -t 192.168.181.10:80 -s rr
ipvsadm -a -t 192.168.181.10:80 -r192.168.181.141:80 -i
ipvsadm -a -t 192.168.181.10:80 -r192.168.181.142:80 -i
对real server的操作:
ifconfig tunl0 192.168.181.10 broadcast192.168.181.10 netmask 255.255.255.255 up
route add -host 192.168.181.10 dev tunl0
echo "1">/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
特别注意:
在你一直访问找不到服务器时,那么可能是因为rpfilter,当系统接收到一个ip包时,检查该ip包是否符合要求,不合要求的包会被丢掉。该技术就被叫做rpfilter,反向过滤技术,可以通过修改真实服务器realserver的sysctl.conf来解决:
修改net.ipv4.conf.default.rp_filter= 1的1为0,然后就可以访问了。
三、lvs隧道模式原理(ip隧道协议)
ip隧道是一个将ip报文封装到另一个ip报文的技术,这可以使得目标为一个ip地址的数据报文被封装和转发到另一个ip地址。ip隧道技术也成为ip封装技术。
lvs隧道模式类似于vpn的方式,使用网络分层的原理,在客户端发的数据包的基础上,封装一个新的ip头标记,根据调度算法,将封装后的数据包放松给realserver,realserver收到后,先把dr发过来的数据包的头给解开,还原其数据包原样,处理后直接返回给客户端。由于realserver需要将封装后的数据包还原,也就是将一个数据包变为另一个数据包,所以realserver也需要支持ip隧道协议。
参考网址:
http://www.linuxidc.com/Linux/2012-06/64065.htm
http://www.cnblogs.com/oldjiang/archive/2013/02/01/LVS-Nat-Tun-Dr.html