首页 > 代码库 > 负载均衡之LVS TUN模式(IP隧道)
负载均衡之LVS TUN模式(IP隧道)
1、LVS、TUN简介
LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,所以相对反向代理服务器来说,性能一般会高一些;
TUN 是IP Tunneling,IP隧道的简称,它将调度器收到的IP数据包封装在一个新的IP数据包中,转交给应用服务器,然后实际服务器的返回数据会直接返回给用户。
2、简单的LVS/TUN架构图
这里我简单画一下LVS/TUN模式在应用时的部署环境:
我们先假设百度用的是这种架构模型(实际上百度是什么架构我也没有实地调研过)
然后来模拟下用户访问百度的情况。
1.用户在浏览器输入http://www.baidu.com,用户的电脑通过网络询问DNS,www.baidu.com域名的IP地址。
2.DNS服务器通过用户的地址,在服务器列表里选择一个可能是距离用户最近的LVS虚拟服务IP地址或者一个按照轮询策略的地址。
可以用pingwww.baidu.com,能看到会返回一个IP地址,这个IP地址就是我们DNS返回给我们的地址。也可以用dig命令,能够看到www.baidu.com实际对应了3个IP地址
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/haproxy(nginx官方版本现在没有4层代理功能,haproxy对后端又不支持keepalive),当然使用DR模式或者TUN模式也还可以的。基本都得用2层才能搞得定。其实对于访问量不是很大的公司,直接用nginx/haproxy/apache就OK了。搞的太复杂维护成本会比较高。
负载均衡之LVS TUN模式(IP隧道)