首页 > 代码库 > 负载均衡之LVS TUN模式(IP隧道)

负载均衡之LVS TUN模式(IP隧道)


1LVSTUN简介

LVS Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,所以相对反向代理服务器来说,性能一般会高一些;

TUN IP TunnelingIP隧道的简称,它将调度器收到的IP数据包封装在一个新的IP数据包中,转交给应用服务器,然后实际服务器的返回数据会直接返回给用户。

 

2、简单的LVS/TUN架构图

这里我简单画一下LVS/TUN模式在应用时的部署环境:

 技术分享

 

我们先假设百度用的是这种架构模型(实际上百度是什么架构我也没有实地调研过)

然后来模拟下用户访问百度的情况。

1.用户在浏览器输入http://www.baidu.com,用户的电脑通过网络询问DNSwww.baidu.com域名的IP地址。

2.DNS服务器通过用户的地址,在服务器列表里选择一个可能是距离用户最近的LVS虚拟服务IP地址或者一个按照轮询策略的地址。

可以用pingwww.baidu.com,能看到会返回一个IP地址,这个IP地址就是我们DNS返回给我们的地址。也可以用dig命令,能够看到www.baidu.com实际对应了3IP地址

3.用户浏览器通过DNS获得的IP地址,访问LVS服务器

4.进入LVS/TUN模式,LVS将数据包提供给APACHE或者nginx构建的反向代理服务器;

5.反向代理服务器最终将请求送给应用服务器;

6.应用服务器完成用户请求之后,通过反向代理服务器直接返回给用户,而不需要通过LVS服务器。

 

3、前提

不是所有的服务器都支持IP隧道,不过对一般的linux服务器操作系统而言,基本都支持ip tunneling协议。

如果看过我关于LVS/DR模式的介绍,发现这个流程本质上是一样的。

 

4、优点

TUN模式可以解决DR模式下不能跨网段的问题,甚至可以跨公网进行。

 

5、总结

对于大规模网站,单独使用LVS还是不够的,一般还是得配合nginx or apache做负载均衡。这个时候最简单的就是lvs+nginx/haproxynginx官方版本现在没有4层代理功能,haproxy对后端又不支持keepalive,当然使用DR模式或者TUN模式也还可以的。基本都得用2层才能搞得定。其实对于访问量不是很大的公司,直接用nginx/haproxy/apacheOK了。搞的太复杂维护成本会比较高。

负载均衡之LVS TUN模式(IP隧道)