在负载分配器的实现技术中,IP负载均衡技术是效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用性的虚拟服务器,称之为VS/NAT技术(Virtual Servervia Network Address Translation)。通过IP隧道实现虚拟服务器的方法VS/TUN(Virtual ServerviaIP Tunneling)和直接路由实现虚拟服务器的方法VS/DR(Virtual servervia Direct Routing)可以极大地提高系统的伸缩性。
(一)通过NAT实现虚拟服务器(VS/NAT)
由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用保留IP地址(10.0.0.0/255.0.0.0/172.16.0.0/255.128.0.0和192.168.0.0/255.255.0.0)。这些地址不在Internet上使用,而是专门为内部网络预留的。当内部网络中的主机要访问Internet或被Internet访问时,就需要采用网络地址转换(Network Address Translation,NAT),将内部地址转化为Internet上可用的外部地址。NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写后,客户相信它们连接一个IP地址,而不同IP地址的服务器组也认为它们是与客户直接相连的。由此,可以用NAT方法将不同IP地址的并行网络服务变成在一个IP地址上的虚拟服务。
在一组服务器前有一个分配器。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果都是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系统(如NFS)共享,也可以通过分布式文件系统来提供。
客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达分配器,分配器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址(Virtual IP Address)改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。同时,分配器在连接Hash表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务器。当来自真实服务器的响应报文经过分配器时,分配器将报文的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户。通过在连接上引入一个状态机,不同的报文会使连接处于不同的状态,不同的状态有不同的超时值。在TCP连接中,根据标准的TCP有限状态机进行状态迁移。在UDP中,只设置一个UDP状态。不同状态的超时值是可以设置的,在缺省情况下,SYN状态的超时为1分钟,ESTABLISHED状态的超时为15分钟,FIN状态的超时为1分钟,UDP状态的超时为5分钟。当连接终止或超时,分配器将这个连接从连接Hash表中删除。
对改写后的报文,应用增量调整Checksum的算法调整TCP Checksum的值,避免扫描整个报文来计算Checksum的开销。
在一些IP地址或者端口号在报文的数据传送网络服务中,若只对报文头的IP地址和端口号做转换,这样就会出现不一致性,服务会被中断。所以,针对这些服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号。现在所知道的有这个问题的网络服务有FTP、IRC、H.323、CUSeeMe、RealAudio、RealVideo、Vxtreme/Vosiac、VDOLive、VIVOActive、TrueSpeech、RSTP、PPTP、Streamworks、NTTAudioLink、NTTSoftwareVision、YamahaMIDPlug、iChatPager、Quake和Diablo。
(二)通过IP隧道实现虚拟服务器(VS/TUN)
在VS/NAT的集群系统中,请求和响应的数据报文都需要通过负载分配器,当真实服务器的数目在10台和20台之间时,负载分配器将成为整个集群系统的新瓶颈。大多数Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载分配器中只负责调度请求而将响应直接返回给客户,可极大地提高整个集群系统的吞吐量。
将IP隧道技术(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使目标为一个IP地址的数据报文被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。目前有3种IP隧道技术:IP上的IP封装、最小IP封装和通用路由封装技术。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中,隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。(www.xing528.com)
利用IP隧道技术将请求报文封装转发给后端服务器,响应报文能从后端服务器直接返回给客户。但在这里,后端服务器为一组而非一个,所以不可能静态地建立一一对应的隧道,而是动态地选择一台服务器,将请求报文封装和转发给选出的服务器。这样就可以利用IP隧道的原理将一组服务器上的网络服务组成一个IP地址上的虚拟网络服务。
(三)通过直接路由实现虚拟服务器(VS/DR)
与VS/TUN方法相类似,VS/DR利用大多数Internet服务的非对称特点,负载分配器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。该方法与IBM的Net Dispatcher产品中使用的方法类似(其中服务器上的IP地址配置方法是相似的),但IBM的Net DiSpatcher是非常昂贵的商品化产品,内部所使用的机制未公开,其中有些是IBM的专利。
VS/DR的工作流程:它的连接调度和管理与VS/NAT和VS/TUN中的一样,它的报文转发方法又有不同,将报文直接路由给目标服务器。在VS/DR中,分配器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。
在VS/DR中,根据缺省的TCP/IP协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯定也为VIP,所以响应报文不需要做任何修改,可以直接返回给客户。客户得到正常的服务,而不会知道是哪一台服务器处理的。
(四)三种方法的优缺点比较
虽然LVS支持三种负载均衡模式,但是从上面的分析可以发现,根据负载均衡器处理IP进出方式,LVS实际上包含了两种模型:单工处理和双工(双向连接工作模式)处理。显然,NAT地址转换模式属于双工连接处理。在这种模式下,负载均衡器不但需要处理进入集群的IP包,而且还要处理集群内部节点返回的应答IP包,因此称之为双工连接处理。而其他模式中,负载均衡器仅仅处理进入集群的IP请求包,而集群内部节点的响应数据则是通过节点到客户端的路由通道直接发送到目的地。由于均衡器仅处理一次完整连接的IP请求部分,而对IP的应答数据则不处理,所以称之为单工连接模式。
因此,在IP负载均衡中,如果使用双工处理模式(NAT),不仅要对进入集群的请求做出处理(改写IP包的源、目的地址),还要对服务节点返回的大量数据做同样的工作。那么,随着集群服务节点池规模的扩大,负载均衡器的处理能力很快就会达到饱和,也大大影响了LVS集群的规模可扩展性。而使用IP隧道或者DR模式,负载均衡器只需要处理相对很少的IP数据包;对于大量的返回数据,都由服务节点通过路由器、交换机等设备直接返回给客户端。因此,单工处理模式在可扩展性方面有较强的 优势。
综上所述,LVS的三种IP负载均衡技术各有各的优缺点。网络地址转换NAT配置容易、使用灵活、要求较低,但效率较低,且不能用于服务器数目较大的集群系统;而IP隧道和直接路由DR效率较高,配置复杂,且对操作系统有一定的要求。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。