基于负载的动态网页生成系统的设计与实现

时间:2022-05-20 04:29:29

基于负载的动态网页生成系统的设计与实现

摘要:基于负载的动态网页生成系统基于开源的文化理念,依托现有的虚拟化技术和负载均衡技术,以红旗Asianux操作系统和红旗LVS服务器为平台,系统主要包括负载均衡算法的优化和动态网页图片的生成。

关键词:动态网页;负载;调度算法

中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)28-6917-03

The Design and Implementation of Dynamic Webpage Generation System Based on the Load

ZHOU Quan, DUAN Ran, WEI Meng, LIU Bin, ZHOU Xiao-yi

(Department of Computer Science and Technology, College of Information Engineering, North China University of Technology, Beijing 100144, China)

Abstract: The Dynamic Webpage Generation System Based on the Load is according to open source cultural concept, based on the existing virtualization technology and load balance technique, with the Red Flag Asianux operating system and the Red Flag LVS server as its platform, the system includes the optimization of load balancing algorithm and dynamic webpage image formation.

Key words: dynamic webpage; load; dispatch algorithm

1 概述

1.1 集群的定义

计算机集群是一种低成本的分布式计算机系统,它由很多工作站或者PC节点组成,能够提供高性能和高可用性。集群技术可如下定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可用性的服务。大多数模式下,集群中所有的计算机拥有一个共同的名称,集群内任意一个系统上运行的服务可被所有的网络客户所使用。集群系统必须可以协调管理各分离组件的错误和失败,并可透明地向集群系统中加入组件。

1.2 集群产生的背景

计算机集群是由分布式计算机系统发展而来的,特别是近年来互联网的出现,对集群技术的要求也越来越高。自从世界上第一台计算机ENIAC于1945年在美国宾夕法尼亚大学的莫尔电子工程学院诞生起,人类对计算机性能的探索就一直没有停止过。随着互联网技术的飞速发展,网络在我们生活中扮演的地位也越来越重要,流行站点、门户网站的访问流量逐年剧增,网络服务器负载也越来越大,越来越多的网站管理员在管理站点的同时发现系统的性能瓶颈,海量的点击率会导致系统偶尔超负荷运作,升级服务器、提升服务器性能势在必行。

对于以前的单服务器系统,升级的办法是升级硬件,通过使用更快速的CPU,更大的内存容量来提升服务器性能,但这毕竟不是长久之策,升级过程是复杂的,需要耗费较多的人力、物力和财力,而且随着时间的推移,更大的访问流量又必然会使系统出现新的性能瓶颈,对硬件的更新换代不仅会导致过高的投入和更高的维护成本,而且大大降低了整个系统的性能价格比。所以,简单的升级并不能满足系统的长远发展,如何解决网络服务器的可扩展性和高可用性才是需要考虑的重中之重。

1.3 集群的分类

随着计算机体系结构的发展,集群以其可扩展性和较低的成本等优势被广泛的研究和应用。由于集群系统构建成本低、系统利用率高,可用性、可扩展性好,现在很多公司、企业和政府,越来越多地使用集群来满足其高可用性、高性能计算的需求。

按照侧重点以及集群系统所要完成的任务的不同,可以将集群分为以下三种类型:

1) 负载均衡集群

将外部的应用请求尽可能平均的分配到不同的计算机上处理,充分利用集群系统的计算能力,提高整个系统的处理效率。

2) 高可用集群

高可用集群的主要功能就是利用集群系统的容错性,对外提供7×24小时不间断的服务。有许多的应用程序都是必须一天24小时不停运转的,如工业控制系统、数据库服务器等关键应用。比较有名的高可用集群有MissionCriticalLinux的Convolo和SteelEye的LifeKeeperforLinux。

3) 科学计算集群

通过将多台计算机连接起来,处理复杂的科学计算。在这种集群上运行的是专门开发的并行应用程序,它可以把一个问题所需要的数据分布到多台计算机上,利用这些计算机的共同资源来完成复杂的计算任务,从而解决单个计算机所不能解决的问题,像处理气象计算、石油勘探等需要进行大规模数值计算这类问题。比较有名的Beowulf集群就是科学计算集群。

在实际的应用中,这几种集群往往会混合使用,以使整个系统有较高的稳定性和较大的信息处理能力。

2实验环境的部署及算法的改进

2.1 实验环境搭建

我们使用红旗负载均衡集群作为实验环境。整个集群服务器的系统结构如图1所示。

整个集群系统构建在2台实际服务器之上,集群中的实际服务器对用户是不可见的,用户只能看见一台在集群中被称为是负载均衡服务器(director)的前端机。三台机器通过局域网连接起来,用户将请求发至前端机,再由前端机将用户请求转发到2台实际服务器。

分别在两台实际服务器上部署Apache网页服务器,修改默认网页,一台为“HelloRealServer1”,另一台为“HelloRealServer2”。集群搭建完毕后,通过客户机不停访问集群的前端机,如果出现两个页面相互轮转的效果,则负载均衡集群搭建成功。

红旗负载均衡集群系统为前端机提供了三种IP级的请求转发方法,分别是网络地址转换(NetworkAddressTranslate,NAT),IP隧道(IPTunneling)和直接路由(DirectRouting)。

在调度算法方面,红旗LVS系统提供了8种调度算法供用户选择。我们使用最简单的轮转调度(RoundRobinScheduling)算法,这种算法将所有的实际服务器看作是相同的结点,不考虑各服务器的连接数和响应时间,以轮转的形式将请求转发到不同的实际服务器上。

2.2 关于前期测试结果的一点思考

在实验的过程中,我们发现目前所实现的算法中,大部分只能预先设置好服务器权值对Web请求进行调度,虽然负载本身通过轮转或者最小连接策略等8种调度算法尽量平衡各实际服务器的压力,但是这在实际应用中还是经常会出现有的服务器压力过大,而有的服务器却比较空闲的情况。究其原因,我们认为是由于每个Web服务器请求所耗的系统资源各不相同,但是负载还是静态的根据预先设计好的算法进行实际服务器的调度,导致有的服务器负担过重却依旧在接收负载服务器的任务,而相对空闲的服务器却继续空闲,这样一方面造成资源浪费,另一方面可能导致服务器崩溃。当我们认识到这其中的欠缺之后,在本作品的设计过程中,进而提出了一种改进的算法,最小负载算法。由负载服务器收集实际服务器的压力状况,然后分析各实际服务器的实时压力状况,选择压力较小的实际服务器完成用户的请求。

2.3 关键算法与技术

负载调度算法主要由两部分组成,均衡服务器上部署的是负载均衡算法(最小调度算法)如图2所示,实际服务器上部署的是负载检测和评估算法。

2.3.1 算法调度模块

算法调度模块主要分为负载均衡算法和负载检测评估算法两个部分。

负载均衡算法主要是根据实时的收集各实际服务器的状态评估指数,并根据这些指数分配网络请求。比如我们把系统的评估指数分为三级:0级、1级和2级。0级代表服务器状态良好,处于比较空闲的状态,而2级则代表服务器比较繁忙。均衡服务器就是根据这些指数选择比较闲的服务器分配网络请求。由于在修改LVS源码时无法得到对应版本的LVS源码,而只有动态链接库文件,此算法并没有真正编译到LVS中。

负载检测评估算法主要分为负载的检测和评估。对服务器的负载检测主要是对服务器CPU使用率,I/O使用率,内存使用率和网络流量进行检测,负载评估是根据这些检测到的指标对系统的状态进行一个评估,评估结果以等级(0,1,2)的方式返回,以便均衡负载器进行负载均衡,CGI程序进行网页动态生成。此算法在实际服务器上,以守护进程的方式运行。简单评估算法如下:当CPU使用率小于50%,内存使用率小于50%,网络流量小于最大流量的2/5时,我们认为服务器状态良好,返回评估等级0;当CPU使用率大于80%,内存使用率大于80%,网络流量大于最大流量的4/5时,我们认为服务器状态繁忙,返回评估等级2;其他情况则返回评估等级1。

2.3.2 CGI实现模块

CGI(CommonGatewayInterface)通用网关接口,在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。当用户向服务器发送请求之后,浏览器把这些请求信息传送到服务器的CGI目录下特定的CGI程序中,于是CGI程序在服务器上按照预定的方法进行处理。然后CGI程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到服务器返回的界面,整个过程结束。本作品中CGI程序在接到用户访问图片的请求之后,根据本服务器此时的负载情况动态产生与之相对应清晰度的图片,然后返回到用户浏览器界面。

系统的图片处理模块主要是完成图片的压缩处理,把图片按一定的比例进行压缩,减小的图片的大小,也就是降低它的清晰度,这样我们就可以根据系统状态选择合适的图片生成网页。图片处理模块可以对图片进行批处理,这样也就提高了处理速度和响应速度。支持的图像格式包括:JPG,JPEG,BMP,PNG,DIB,JPE,PGM,TIF,PBM,JP2。

CGI的整体实现过程中,我们使用了CGIC函数库。这是一个支持CGI开发的开放源码的标准C库,利用CGIC所提供的方便的功能函数,再调用mysysstat()函数获得本服务器的负载状态,然后将此状态信息反馈给上一级的负载均衡服务器,负载服务器根据各实际服务器的状态,选择其中压力最小的服务器接收用户请求。当此实际服务器接收到负载最终发送来的请求之后,调用本服务器中的CGI程序,动态生成包含不同清晰度图片的网页,返回给用户。

3 系统测试

3.1 测试方法

1) 配置红旗负载均衡服务器并打开http服务;

2) 在实际服务器上启动系统检测的守护进程sysstat,以模拟的方式启动;

3) 通过其他PC机访问服务器上的index.CGI程序,可以看到图片随着网页的动态生成而变化。

3.2 测试结果

图3 服务器压力大时的测试结果 图4 服务器压力一般时的测试结果

在服务器处于不同负载的情况下用客户端访问页面,可以得到如上的截图。

在服务器压力较大时,客户端收到如图3所示的网页,从图片属性可以看出,客户端收到的图片为较不清晰的图片;在服务器压力一般时,客户端则收到如图4所示的较清晰图片;而在服务器压力较小时,客户端收到的图片为最清晰的图片,如图5所示。

从以上测试数据可以看出守护进程和CGI程序的功能可以正确实现。

4 总结

通过对整个系统的设计、开发和测试,完成了预想的系统功能,并取得了预期的效果。当然,由于各方面的原因,系统还存在着不少的问题,如将均衡算法嵌入LVS应用没有完成,系统测试的局限性等,这些存在的问题有待以后进一步的改进和优化。

5 结束语

现如今,集群技术以其低成本,高性价比等特点逐步进入人们的视野,集群系统技术仍在不断发展,目前的集群系统仅在网络第三层即网络层进行请求的转发,集群只能提供单一的服务,未来,将会有支持基于内容的负载均衡,集群系统将提供多种服务。

为了提高系统的可用性,提供负载平衡,减少软、硬件的失效,保护关键应用,非常有必要部署一个集群系统,从而使最终用户更加满意。不过在Unix平台上,这方面却有着许多不足:集群部署成本太高,系统过于复杂而且不够灵活,可选择的余地小,而且硬件昂贵,整个系统的性价比较低。

一种新的而且更具吸引力的方案是Linux集群,现有的大多数Linux集群产品并不复杂而且没有太多的部署成本,而Linux由于它的开源特性,必然会有更多的有志之士为它出谋划策,从而推动Linux集群技术不断向前发展。

集群是在理论和实际应用上都有重大意义的技术,正备受各大IT厂商的关注,但现有集群系统在某此方而仍存在不少问题,在性能与可用性方而还不是十分理想,木文主要介绍Linux集群技术的概念和一些基本的搭建方法,希望本文能对服务器集群技术的深入研究起到抛砖引玉的作用。

参考资料:

[1] 崔小燕.Linux集群系统分析[J].西安邮电学院学报,2006,11(5).

[2] 李英壮,李先毅,王利明,等.基于Linux的集群管理系统设计与实现[J].大连理工大学学报,2003,43(S1).

[3] 古奋飞,王良侠.浅析Linux集群技术[J].电脑知识与技术,2010(6).

[4] 北京中科红旗软件技术有限公司.Red Flag Server 4.0集群技术白皮书[EB/OL].(2003)./source/Documents/as4/jiqunjishu.pdf.

上一篇:基于网络动态的网络入侵取证系统探析 下一篇:网络教学平台的设计与实现