重庆通信学院训练部 谭建明
重庆通信学院机电教研室 汤小康
[摘要]:在Internet迅猛发展的今天,网民的剧增给网络教育站点带来巨大的挑战,可用性和容错性已成为对站点的关键要求。而负载均衡技术的出现,极大地保证了服务器的正常运转,大大提高容错性,为最终用户提供优质的服务质量。本文就几种常用的负载均衡技术展开讨论、进行了技术分析及性能比较,重点介绍了循环DNS技术。
[关键词]: TCP/IP、WEB服务器、DNS、负载均衡
1 前言
当前,我军正在开展网上教育、网上演练等科技大练兵活动,特别是利用Internet技术实现网络教育、远程教育。而这些活动在突破时空界限,通过灵活、富于变化的图像、声音、文字,让接受者轻松接受教育的同时,网络管理员都面临着同样一个问题:如何面对信息爆炸的世界?如何对流量进行负载均衡,防止某一服务器过载?
可以使用增加硬件性能的方法来提高Web 服务器的性能。但是单台服务器的性能总是有限的,尤其是服务器上需要运行大量的CGI程序时,不可能仅靠上面的调整服务器设置的方法来建立一个面向整个军事训练网的高负载Web站点。
如果网站负载超过了单个服务器的能力,就应该考虑使用一个以上的服务器,许多站点常常将数据在多个服务器阵列上进行复制。然而,使用的服务器越多,意味着管理的成本就越高,管理起来也更困难,并且服务器仍有可能出现过载,做出错误的响应。这就使我们需要一种智能程度更高的系统,它可以对传输流进行调节和管理,即所谓的负载平衡功能。在使用负载平衡技术的情况下,传输流可以被动态地分布到使用相同应用程序的一组服务器上,在多个服务器之间分配请求,使得这些服务器共同分担负载。对用户来说,这组服务器工作得就像一台服务器一样。
这种技术使传输流可以更有效地分布,并且大大提高容错性。负载平衡系统对这组服务器进行监控,并做出决策,选择性能最优、可用性最好的传输路由。这就保证了用户可以被接入到最可用的服务器上,从而为最终用户提供优质服务质量。
负载均衡方案
负载均衡技术方案中对多服务器的设计结构有对称结构、非对称结构之分。负载平衡系统的设计必须保证当发生服务中断情况下保证对用户的可用性。我们的关键是找到一种能够满足目前和未来应用需要的解决方案,保护当前和未来的投资。下面将介绍几种常用的均衡技术。
基于NAT的负载均衡技术
网络地址转换是Internet网关的一个重要功能,它能将内部地址和外部地址进行转换,以使具备内部地址的计算机能访问外部网络。同样外部网络访问网关拥有的某一外部地址时,地址转换网关能将其转发到该地址映射的内部地址的计算机上。
网络地址转换的另一功能是可以“屏蔽”内部IP地址,在IP地址较少的情况下非常有用。
对军事训练网来说,IP地址相当富余。因此,我们的重点在于:通过重新修改地址转换程序,使得地址转换网关能将请求均匀转换为内部的多个服务器的内部地址,此后外部网络中的计算机就各自与自己转换得到的内部服务器进行通信,从而达到负载均衡的能力。
基于第四层交换的负载均衡技术
当前,先进的局域网交换机开始支持第四层交换技术,就是按照IP地址和TCP端口进行虚拟连接的交换,可以在硬件MAC层(Layer2)和Layer3上实现负载平衡,直接将数据包发送到目的计算机的相应端口中。可以通过进一步增强它的功能,利用交换机就能将来自外部的初始连接请求,分别与内部的多个地址相联系,此后就能对这些已经建立的虚拟连接进行交换。因此一些具备第四层交换能力的局域网交换机,就能作为一个硬件负载均衡器,完成Web服务器的负载均衡。
由于第四层交换基于硬件芯片,因此其性能非常优秀,尤其是对于网络传输的速度,交换的速度远远超过普通的数据包转发。
这种结构也有不少局限性。例如,需要在应用层(Layer4)处理的每个数据包都必须被打开进行检查,以决定它们的目的端口。完成这种工作必须使用交换机上的中央处理器,因而降低了交换机的性能,不能充分发挥交换机带来的高网络带宽的优点。
再者,由于它是使用硬件实现的,因此也比较不灵活,仅仅能够处理几种最标准的应用协议的负载均衡,如HTTP 。
最后,交换机解决方案常常缺少SSL会话、ID跟踪、用户验证和应用安全检查等功能。
循环复用DNS负载均衡技术
循环DNS(Round-robin DNS)技术是负载平衡最常用的方法之一。最早的负载均衡技术是通过DNS服务中的随机名字解析来实现的。在DNS服务器中,可以为多个不同的地址配置同一个名字,这个数据被发送给其他名字服务器,而最终查询这个名字的客户机将在解析这个名字时随机使用其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,因此不同的客户访问的也就是不同地址的Web服务器,从而达到负载均衡的目的。
例如,如果希望使用三个Web服务器来回应对www.cqcc.com的HTTP请求,设它们的IP地址分别是:202.192.99.1,202.192.99.2,202.192.99.3。安装一个循环复用DNS软件,配置这个软件使得每次要求解析www.cqcc.com时返回所有三个IP地址。第一次解析结果中返回地址的次序与前面列出的相同,下一次请求则得到稍微不同的答案:202.192.99.2,202.192.99.3,202.192.99.1。再下一次则得到第三个答案:202.192.99.3,202.192.99.1,202.192.99.2。第一个客户将同202.192.99.1建立连接,因为202.192.99.1是它所看到的第一个IP地址。第二个客户看到的第一个IP地址是202.192.99.2,因此它将访问202.192.99.2。同样,第三个客户将访问202.192.99.3……
针对上面例子,可以设置该域的DNS服务器中关于该域的数据至少包括与下面例子类似的结果:
www1 IN A 202.192.99.1
www2 IN A 202.192.99.2
www3 IN A 202.192.99.3
www IN CNAME www1
www IN CNAME www2
www IN CNAME www3
这里先为每个计算机定义一个真实名字(www1、www2、www3),然后再为它们定义同一个别名。可以直接针对不同地址设置同一个真实名字(A记录),只是使用别名的方法易于管理一些。
由于此时反向解析只能针对一台计算机,那么每个Web服务器都需要使用ServerName重新定义同一个名字,或者设置名字解析的顺序为hosts文件优先,并在hosts文件中定义本身为www,以保证每个服务器的名字设置保持一致。
循环DNS具有对客户机和服务器透明的优点。在事务处理开始时,它也只执行一次。但是,循环DNS常常不能成功,因为中间名服务器和客户机软件(包括应用很广的浏览器)常常将DNS返回的IP地址存储起来,或忽略存在时间(TTL)值。TTL是一位IP数据比特位,用来指示IP数据报在被丢弃前可以转发到其它路由器的时间长度。
由于IP地址存储的原因,DNS服务器提供的负载平衡功能被绕过去了,客户机继续使用被存储起来的IP地址,而不去进行重新连接。这就产生了一个“热点”,在这个“热点”上,过度使用的服务器继续接收额外的接入。
DNS负载均衡的另一个问题是一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,而DNS服务器并不知道这一点,因此客户请求将被延迟,或返回一个“无法访问服务器”消息给用户,在此期间保存了故障服务器地址的客户计算机将不能正常访问服务器。
由于DNS数据是具备一个刷新时间的标志的,一旦超过这个时间限制过期,其他DNS服务器就需要和这个服务器交谈以重新获得地址数据。如果刷新时间较短,不同地方的DNS服务器能更新对应的地址,使出现故障的服务器地址可以及时删除,用户仍旧可以被引导到正常的服务器上,但如果用户缓冲了故障服务器的IP地址,这种方法也不能解决问题。同时将过期时间设置的过低将使DNS流量大增,而造成额外的网络问题。
由于循环DNS没有区分端口的能力,不能意识到服务器的可用性并且不能考虑服务器上的现有负载,无法对服务器负载进行动态地分析从而使得下一个请求总是由负载最小的服务器处理,因此循环复用DNS还有太多的限制,只能算是一种勉强可接受的负载平衡方案。
尽管存在多种问题,然而它还是一种非常有效的做法,当前使用在包括Yahoo在内的很多Web站点上。
通过集群实现负载均衡
为消除DNS负载平衡的限制,将一个负载平衡服务器(LBS)被放置在服务器群集的前端。而后,域名分析请求由DNS发送到LBS。整个服务器群集可以具有单一的IP地址,因此,消除了负载平衡对DNS的依赖。这些服务器的单一IP地址被称为群集地址。
一旦LBS接收到连接请求,可以有几种方式将请求发往相应的服务器。最简单的方式是使用HTTP(超文本传输协议)重定向功能。负载平衡应用使用HTTP将请求的客户机重新定向到服务器群集中的一个特殊服务器上。
然而,这种技术仍存在着几个很大的缺陷。在将发出请求的客户机重定向到这个服务器上时,又生产了额外的网络传输量。对重定向后返回的URL标记的书签将在未来的连接上绕过负载平衡。
一个更灵活的方式是LBS监测所有进入到群集地址的数据包。LBS检查每个发送到群集地址的IP包头,以决定这个包是否属于现有的连接或代表一个新的连接请求。如果这是个新的连接请求,则LBS执行负载平衡操作,以确定向哪个服务器转发这个请求。如果这个包来自现有连接,数据包将被转发到初始连接请求选择的同一个服务器上。
在理想的情况下,本地服务器的输入包应当流经LBS,LBS只对很少的包进行处理或不对包进行处理,并且不需要服务器上的专用代理软件。服务器的输出响应应当绕过LBS,通过一个独立带宽连接进行传输。
这种方案是比较方便的一种,如Microsoft 的NLB软件。它运行在在Windows NT Server企业版上,Windows 2000 Advanced Server中已经内建了NLB的功能。NLB可以从Microsoft网站免费下载。
另外,还有反向代理等负载均衡技术,使用代理服务器将请求均匀转发给多台Web服务器上,从而达到负载均衡的目的。
负载均衡方案的选择与评估
对于军事训练网的网上教育,尤其是网上演练等应用来说,服务中断的代价是相当高昂的。造成服务中断的原因很多,服务器和软件故障是最常见的,像“404 Object Not Found”或数据不正确等故障会给用户造成麻烦,而吞吐量过载、网络拥塞故障也会妨碍站点的可用性。
网上军事演练时的负载平衡系统设计必须保证当发生服务中断情况下网络的可用性。因此,在选择一个负载均衡系统时,应综合考虑:基于可用性的服务质量;零停机时间的连续运行;跨多种协议的简单、一致性管理;方便的安装等因素。
评估负载平衡系统时,可从以下几个方面考虑:
更高的可靠性:负载平衡器必须具有故障恢复保护,保证可用性。在具有故障恢复功能的情况下,一旦系统检测到主负载平衡器有故障,备份负载平衡器应该立即启动。发生故障的负载平衡器应当在无人干预的条件下自动重新引导,作为备份负载平衡器回到在线状态。
最佳的服务质量/可用性:负载平衡系统应当通过主动查询内容的准确性和应用的性能来检测错误,并自动重新发送传输流。
提供诸如SSL会话、ID跟踪等智能特性,保证用户在完成一次事务处理时连接在一个单独的服务器上。这种特性对于像AOL这类环境的用户十分重要。
提供传输流优先功能,这种功能使网络可以根据传输流的源、类型和目的地提供不同的访问服务水平。优先功能使多种网上军事演练应用具有很大的灵活性,并进一步优化了可用性。
负载平衡系统应当增强现有网络的设备功能,提高网络安全性,并且不受限于操作系统平台和网络的结构。
针对我军军事训练网,如何提高WEB服务器的可靠性、可用性,可以根据本单位设备、人员素质、网上应用系统等情况,综合选择上述负载均衡技术。
4 结束语
通过前面对各种负载均衡技术的介绍,可以看到,负载均衡技术的选择涉及到相当多的因素。负载均衡技术运用得好,可以增强Web应用的性能,对于实现服务器最优的服务质量至关重要。如果处理不当,用户将被迫面临很慢的响应时间或者连接遭到拒绝。在科技大练兵的今天,我们必须保证所采用的负载平衡解决方案的高可靠、高可用,才能为军事训练建立优质的服务平台,提高网上教育、网上模拟训练的质量。
作者简介
谭建明 重庆通信学院训练部装备科 副教授 科研成果多次获军队、院校级奖,编写全军指挥自动化统编教材《计算机网络》。主要研究方向:计算机网络应用技术
汤小康 重庆通信学院机电教研室 讲师 科研成果获院校级奖,编写教材《机械基础》。主要研究方向:网上教学架构
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。