一.简介
-
原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项
-
优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。
-
缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。
二.实验环境的搭建及测试
在server1上
-
清除策略,删除vip
ipvsadm -C ip addr del 172.25.69.100/24 dev eth0
-
编辑调度策略
modprobe ipip ##添加ipip模块 ip addr add 172.25.69.100/24 dev tunl0 ip link set up tunl0 ##激活
ipvsadm -A -t 172.25.69.100:80 -s rr
ipvsadm -a -t 172.25.69.100:80 -r 172.25.69.2:80 -i
ipvsadm -a -t 172.25.69.100:80 -r 172.25.69.3:80 -i #-i 隧道模式
/etc/init.d/ipvsadm save
在server2和server3真实服务器上
-
删除vip
ip addr del 172.25.69.100/32 dev eth0
-
加载TUN并加上VIP
modprobe ipip ip addr add 172.25.69.100/32 dev tunl0 ip link set up tunl0
-
将反向过滤关闭 (linux系统反向过滤 系统在接收到一个IP包后,检查该IP是不是合乎要求,不合要求的IP包会被系统丢弃)
注意:重新保留时,有些参数设置会自动返回1,只要保证tunl0为0时就可以
为什么要修改这个参数呢?
rp_filter参数用于控制系统是否开启对数据包源地址的校验。
有三个值,0、1、2,具体含义:0:不开启源地址校验。 1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包。 2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不同,则直接丢弃该数据包。 sysctl -a | grep rp_filter sysctl -w net.ipv4.conf.lo.rp_filter=0 sysctl -w net.ipv4.conf.eth0.rp_filter=0 sysctl net.ipv4.conf.tunl0.rp_filter=0
vim /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 0
sysctl -p ##重新加载