首页 > 代码库 > linux集群系列(1) --- LVS之load balancing(NET、DR、TUN)
linux集群系列(1) --- LVS之load balancing(NET、DR、TUN)
一、简介
1.1. 负载均衡集群:LB (load balancing)
负载均衡集群为企业需求提供了更实用的系统。如名称所暗示的,该系统使负载可以在计算机集群中尽可能平均地分摊处理。该负载可能是需要均衡的应用程序处理负载或网络流量负载。这样的系统非常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。对于网络流量也是如此。通常,网络服务器应用程序接受了太多入网流量,以致无法迅速处理,这就需要将流量发送给在其它节点上运行的网络服务器应用。还可以根据每个节点上不同的可用资源或网络的特殊环境来进行优化。
1.1.1. Virtual Server via NAT (VS-NAT):地址转换型
用地址翻译实现虚拟服务器地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点优点是节省IP地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。
1.1.2. Virtual Server via Direct Routing (VS-DR): 直接路由
用直接路由技术实现虚拟服务器当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点直接路由模式比较特别,很难说和什么方面相似,前2种模式基本上都是工作在网络层上(三层),而直接路由模式则应该是工作在数据链路层上(二层)。
其原理为,DR和REAL SERVER都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有REAL SERVER对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的 REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REAL SERVER。这时REAL SERVER收到这个数据包,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于DR要对二层包头进行改换,所以DR和REAL SERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上。
1.1.3. Virtual Server via IP Tunneling (VS-TUN): 隧道
用IP隧道技术实现虚拟服务器这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线 集群所能提供的服务是基于TCP/IP的Web服务Mail服务News服务DNS服务Proxy服务器等等.
二、集群系统:
3.2.1. Virtual Server via NAT (VS-NAT):地址转换型
用地址翻译实现虚拟服务器地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点优点是节省IP地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。
整个过程如图:CIP为客户Client的IP,VIP为服务器对外的IP,RIP为内部真实服务器的IP,DIP为主管Director IP
1、集群(cluster)节点跟Director必须在同一个IP网络中;
2、RIP(real server IP)通常是私有地址,仅用于各集群节点间的通信;
3、Director位于client和real server之间,并负责处理进出的所有通信
4、real server必须将网关指向DIP;
5、支持端口映射
6、real server可以使用任意OS;
7、较大规模应用场景中,director易成为系统瓶颈;
3.2.2. LVS-DR工作原理详解
为了阐述方便,我根据官方原理图另外制作了一幅图,如下图所示:VS/DR的体系结构:
我将结合这幅原理图及具体的实例来讲解一下LVS-DR的原理,包括数据包、数据帧的走向和转换过程。
官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。
实例场景设备清单:
说明:我这里为了方便,client是与vip同一网段的机器。如果是外部的用户访问,将client替换成gateway即可,因为IP包头是不变的,变的只是源mac地址。
① client向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:
② VS根据负载均衡算法选择一台active的realserver(假设是192.168.57.122),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下:
③ realserver(192.168.57.122)在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:
④ 如果client与VS同一网段,那么client(192.168.57.135)将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。
以上就是对LVS/DR模式的原理介绍。如果还有其他问题不明白的,可以参考作者另外一篇LVS/DR模式原理剖析的FAQs。
3.2.3. Virtual Server via IP Tunneling (VS-TUN): 隧道
用IP隧道技术实现虚拟服务器这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线 集群所能提供的服务是基于TCP/IP的Web服务Mail服务News服务DNS服务Proxy服务器等等.
TUN模式:采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。(通过重写ip来实现,真实服务器直接回复客户端。tun原理请参阅VPN原理!),与上图比较,注意节点的VIP和RIP的区别.
1、集群节点可以跨越Internet;
2、RIP必须是公网地址;
3、director仅负责处理入站请求,响应报文则由real server直接发往客户端;
4、real server不能将网关指向DIP;
5、只有支持隧道功能的OS才能用于real server;
6、不支持端口映射;
本文出自 “风过无痕” 博客,请务必保留此出处http://wangfx.blog.51cto.com/1697877/1956203
linux集群系列(1) --- LVS之load balancing(NET、DR、TUN)