VS/TUN 技术对服务器有要求,即所有的服务器必须支持 “ IP Tunneling” 或者 “ IP
Encapsulation”协议。目前,VS/TUN 的后端服务器主要运行 Linux 操作系统。 在 VS/TUN
的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答
的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调 度百台以上
的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有 100Mbps 的全双工网卡,整个系统的最大吞吐量可超过
1Gbps。所以,VS/TUN 可以极大地增加负载调 度器调度的服务器数量。VS/TUN
调度器可以调度上百台服务器,而它本身不会成为系统的瓶 颈,可以 用来构建高性能的超级服务器。
IP隧道(IP tunneling)
环境:
server1:
1.ipvsadm -C ##清除之前环境遗留的策略
2.ip addr del 172.25.99.100/24 dev eth0 ##将虚拟ip从接口eth0删除
server2:
ip addr del 172.25.99.100/32 dev eth0
server3:
ip addr del 172.25.99.100/32 dev eth0
步骤:
调度器server1:
1.modprobe ipip
##添加ipip模块,ip addr show 可以查看到多出隧道接口tunl0
2.ip addr add 172.25.99.100/24 deb tunl0 ##在隧道接口上添加虚拟ip
3.ip link set up tunl0 ##激活隧道接口
初始状态为DOWN,开启后为UNKNOW
4 ipvsadm -A -t 172.25.99.100:80 -s rr
5.ipvsadm -a -t 172.25.99.100:80 -r 172.25.99.2:80 -i
##-i表示隧道模式
6. ipvsadm -a -t 172.25.99.100:80 -r 172.25.99.3:80 -i
服务器server2:
1.1.modprobe ipip ##添加ipip模块,ip addr show 可以查看到多出隧道接口tunl0
2.ip addr add 172.25.99.100/32 dev tunl0 ##在隧道接口上添加虚拟ip
3.ip link set up tunl0 ##激活隧道接口
4.sysctl -a | grep rp_filter
##关闭反向过滤,影响实验结果(linux系统反向路径过滤计数,
设计原意在于防止网络欺骗,即系统在接受到一个IP后,
检查该IP是不是合乎要求,不和要求的IP宝会被系统丢弃。
该技术称为方向过滤技术)
5.sysctl -w net.ipv4.conf.default.rp_filter=0
sysctl -w net.ipv4.conf.lo.rp_filter=0
sysctl -w net.ipv4.conf.eth0.rp_filter=0
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
....将所有都关闭
rp_filter参数用于控制系统是否开启对数据包源地址的校验。
有三个值,0、1、2,具体含义:
0:不开启源地址校验。 1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包。 2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不同,则直接丢弃该数据包。
6.vim /etc/sysctl.conf
将net.ipv4.conf.default.rp_filter=0 ##这个只能在文件中手动关闭
7.sysctl -p ##重新加载
8.sysctl -a | grep rp_filter ##再次查看
服务器server3:操作同server2
测试:
在测试端测试curl172.25.99.100
调度器处的情况