随着internet 和电子商务的飞速发展,人们对电子商务网络服务器访问需求急剧增加,网络服务器的负载越来越大,采用服务器集群[1]已成为提高网络服务性能的有效途径。web 服务器集群就是基于集群体系结构的web 服务器,它通常由一台前台调度器(fe)和若干台后台服务器(be)组成,彼此之间通过高性能网络或局域网互联。整个集群共享一个虚拟ip 地址,集群中只有fe对客户端可见,集群对客户端看来就像是一台高性能的服务器。所有的客户请求首先到达fe,由fe 将请求根据一定的负载平衡算法分发给be。be将处理结果直接或间接返回给客户端,这样使得服务器处理请求能力成倍增长,web集群应用尤其适合访问业务量大的商业服务器。
一、linux web集群的体系结构
如图1所示,一个linux web集群系统通常由一台fe和若干台be组成,fe和be通过局域网互联。整个集群共享一个虚拟ip 地址(virtual ip address),集群中只有fe对客户端可见,提高了集群安全性。fe除了要响应web服务请求外,还要充当负载平衡器角色,即根据调度算法分配工作给后台的be们。商业服务器对高可靠性要求高,为了屏蔽fe的失效,需要为它建立一个备份机(backup)。fe和backup通过传送诸如“我活着”这样的信息来监测对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就激活相应程序,接管fe继续提供服务;当backup又从fe那收到“我活着”这样的信息时,它就使该程序无效,从而释放ip地址,这样fe就可以再次进行集群管理了。
图1linux web集群体系结构图
集群中所有角色的计算机都是运行着linux的普通pc机,大大节省了硬件成本。集群的使用大大提高了电子商务系统的吞吐量和性能,并且双机服务机制保证了高可靠性。
二、前台调度器(fe)的实现技术
优良的调度技术是发挥集群性能的关键,在调度器的实现技术中,ip负载均衡技术是效率最高的。大多数商品化的ip负载均衡调度器产品都是使用vs/nat技术(virtual server via network address translation),如cisco的localdirector,这种方法通过网络地址转换(network address translation)将一组服务器构成一个高性能的、高可用的虚拟服务器。即通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后台的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
针对电子商务web服务的自身特点,调度算法采用的是基于内容的调度。
在基于ip负载调度技术中,当一个tcp连接的初始syn报文到达时,调度器就选择一台服务器,将报文转发给它。此后通过查发报文的ip和tcp报文头地址,保证此连接的后继报文被转发到该服务器。这样就要求后台服务器组提供相同的服务,不管请求被发送到哪一台服务器,返回结果都是一样的。但是,在电子商务应用中后台服务器功能不一,有的提供html文档,有的提供cgi、图片等,这就需要基于内容的调度(content-based scheduling)。有研究表明基于内容的调度能较大幅度的提高web服务器集群的性能,减少资源浪费。这是因为:相同页面的请求被发送到同一服务器,可以提高单台服务器的cache命中率。电子商务web访问流中存在局部性,将相同类型的请求发送到同一台服务器,使得每台服务器收到的请求具有更好的相似性,可进一步提高单台服务器的cache命中率。
图2 基于内容调度流程图
基于内容调度的流程如图2所示。后台服务器运行不同类型的服务,如文档服务,cgi服务,图片服务和数据库服务等。值得一提的是电子商务70%的业务流都是对数据库的访问,所以数据库服务器尽可能的采用硬件配置高的机器。客户首先和fe建立起一条tcp连接,fe收到客户http请求报文后分析url内容,提取出用于调度的有关信息,如html,jpg,gif,cgi等。一旦fe获得有关信息,根据其内容来决定哪一个后台服务器来处理,再将请求调度到该服务器。如图所示,fe将index.html的处理由请求转发给文件服务器be1处理,be1处理完成后经由fe返回给客户user1。基于内容调度有效地保证了后台服务器间的负载平衡和提高单个服务器的cache命中率。
三、 小结
在网络上开展实际电子贸易和交易业务,首先要建立电子商务系统,电子商务系统的核心是建立电子商务服务器。传统的单服务器模式电子商务系统很容易过载,越来越难以满足日益增长的巨大访问量要求;另一方面昂贵的服务器硬件也阻碍了电子商务的应用。linux集群正好解决了这一矛盾,既扩展了服务性能又满足了商业应用廉价的要求。随着internet和电子商务的爆炸性增长,linux web集群的应用前景越来越广阔。