基于linux下lvs之TUN模型的架构

Virtual server via IP tunneling(VS-TUN)

我们发现,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大。

优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。

不足:但是,这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议,我仅在Linux系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。

LVS-TUN模型实现负载均衡的工作方式

TUN的工作机制跟DR一样,只不过在转发的时候,它需要重新包装IP报文。这里的real server(图中为RIP)离得都比较远。用户请求以后,到director上的VIP上,它跟DR模型一样,每个realserver上既有RIP又有VIP,Director就挑选一个real server进行响应,但是director和real server并不在同一个网络上,这时候就用到隧道了,director进行转发的时候,一定要记得CIP和VIP不能动。我们转发是这样的,让它的CIP和VIP不动,在它上面再加一个IP首部,再加的IP首部源地址是DIP,目标地址的RIP的IP地址。收到报文的RIP,拆掉报文以后发现了里面还有一个封装,它就知道了,这就是隧道。

实验环境:

物理机: 172.25.254.55      

Server1:LVS服务器      (DIP)172.25.254.1       (VIP)172.25.254.100

server2:172.25.254.2    (VIP)172.25.254.100

server3:  172.25.254.3     (VIP)172.25.254.100

Server1

[root@server1 ~]# ip addr add 172.25.254.100/24 dev eth0   //添加VIP

[root@server1 ~]# ip addr

[root@server1 ~]# vim /etc/sysctl.conf    //开启本地路由转发

Net.ipv4.ip_forward = 1 

[root@server1 ~]# yum install ipvsadm -y    

[root@server1 ~]# ipvsadm -A -t 172.25.254.100:80  -s rr     

[root@server1 ~]# ipvsadm -a -t 172.25.154.100:80  -r 172.25.254.2 -i    

[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80  -r 172.25.254.3 -i

[root@server1 ~]# ipvsadm -ln

Server2:

[root@server2 ~]# modprobe ipip   //加载ipip模块手动加载tunl0隧道

[root@server2 ~]# ifconfig -a

[root@server2 network-scripts]# vim ifcfg-tunl0   //配置VIP

[root@server2 network-scripts]# /etc/init.d/network  restart    

[root@server2 network-scripts]# vim /etc/sysctl.conf   //关闭ARP转发

在末尾添加:net.ipv4.conf.tunl0.arp_ignore =1

net.ipv4.conf.tunl0.arp_announce = 2

net.ipv4.conf.all.arp_ignore =1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.tunl0.rp_filter =0

net.ipv4.conf.all.rp_filter = 0

root@server2 network-scripts]#vim /etc/sysctl.conf    //关闭本地路由转发

Net.ipv4.ip_forward = 0

[root@server2 network-scripts]# sysctl -p  

 

[root@server2 network-scripts]# vim  /var/www/html/index.html

www.wetos.org---server2

Server3:

[root@server3 ~]# modprobe ipip   //加载ipip模块手动加载tunl0隧道

[root@server3 ~]# ifconfig -a

[root@server3network-scripts]# vim ifcfg-tunl0   

[root@server3 network-scripts]# /etc/init.d/network  restart    

[root@server3 network-scripts]# vim /etc/sysctl.conf      //关闭ARP转发

添加:net.ipv4.conf.tunl0.arp_ignore =1

net.ipv4.conf.tunl0.arp_announce = 2

net.ipv4.conf.all.arp_ignore =1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.tunl0.rp_filter =0

net.ipv4.conf.all.rp_filter = 0

root@server3network-scripts]#vim  /etc/sysctl.conf    关闭路由转发

Net.ipv4.ip_forward = 0

[root@server3 network-scripts]# sysctl -p   

[root@server3 network-scripts]# vim  /var/www/html/index.html

www.westos.com---server3

物理机:

[root@foundation55 ~] #curl    172.25.254.100

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值