负载均衡解决方案文档格式.docx
- 文档编号:21430386
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:11
- 大小:106.86KB
负载均衡解决方案文档格式.docx
《负载均衡解决方案文档格式.docx》由会员分享,可在线阅读,更多相关《负载均衡解决方案文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
新系统应具备较强的扩展性。
o
容量上:
如数据访问量继续增大,可再添加新的服务器加入系统;
应用上:
如当数据访问量增大到防火墙成为瓶颈时,防火墙的动态负载均衡方案,又如针对链路提出新要求时关于Internet访问链路的动态负载均衡方案等。
三、解决方案
梭子鱼安全负载均衡方案总体设计
采用服务器负载均衡设备提供本地的服务器群负载均衡和容错,适用于处在同一个局域网上的服务器群。
服务器负载均衡设备带给我们的最主要功能是:
当一台服务器配置到不同的服务器群(Farm)上,就能同时提供多个不同的应用。
可以对于每个服务器群设定一个IP地址,或者利用服务器负载均衡设备的多TCP端口配置特性,配置超级服务器群(SuperFarm),统一提供各种应用服务。
如图,网络中的四台服务器向用户提供了三种典型应用,分别为web、mail和ftp服务,因此管理员通过服务器负载均衡设备建立了三个不同的服务器群(Farm),并指定参与每个服务器群的服务器。
对于上述这个系统,服务器负载均衡设备的解决方案提供了三级全面冗余机制:
对于每种应用,如WEB服务,同时有四台机器提供服务,每台机器的状态可以设为regular(正常工作)或backup(备份状态),或者同时设定为regular状态。
负载均衡设备根据管理员事先设定的负载算法和当前网络的实际的动态的负载情况决定下一个用户的请求将被重定向到的服务器。
而这一切对于用户来说是完全透明的,用户完成了对WEB服务的请求,并不用关心具体是哪台服务器完成的。
对于整个服务器系统,资源得到充分的利用和冗余。
我们知道,一般情况下不同应用服务的用户数目是不尽相同的,对于服务器资源的消耗也有所不同。
如果对每一种应用只采取单独的机器提供服务,不但存在单点故障问题,同时每台服务器的利用也是不均匀的,可能存在大量的WEB请求,使单一的WEB服务器负荷超重;
而同时FTP服务器却处在基本空闲状态。
这也是一种系统资源的浪费,同时用户得到的服务也不够快捷。
在引入了服务器负载均衡设备的服务器系统中,每台机器的资源得到了充分利用,并减少了单点故障的问题。
负载均衡设备也可以引入冗余备份机制。
服务器负载均衡设备设备在网络层次上起到类似"
路由器"
的作用,并利用专用的集成电路芯片(ASIC)完成智能的负载分配的工作。
它的单点故障问题可以通过在系统中引入另外一台服务器负载均衡设备设备来完成。
但是与一般意义上的冗余备份机制不同,这时两台服务器负载均衡设备是同时处在工作状态,并互相备份的,而不是其中一台处于闲置的Stand-By状态。
服务器负载均衡设备通过网络互相监测,一旦其中一台不能正常工作,另一台将接管其所有的任务。
整个系统的可扩缩性也是显而易见的:
对于每一种特定服务,管理员可以根据具体的负载状况调配服务器。
如果某种服务的负载压力过大,可以考虑在系统中别的服务器上在建立一个该服务的镜像,只要简单的在对应该服务的服务群中加入一个条目,新加的服务器就能参与到整个服务器群的工作中来了。
系统中引入新的硬件服务器,或某台服务器需要对其硬件进行升级或配置的时候,服务器负载均衡设备能够自动监测到这些变化。
对于新加入的服务器,设有Warm-Up的时间,逐步地分配到该台服务器的负载;
对于从系统上撤掉的服务器,可以设定一个over的时间值,能够保证在该台服务器上的对话全部结束之后,才将服务器撤下,同时继续把流量分配到其它的服务器上,用户得到了不间断的服务。
系统中所有服务器的配置,从硬件到操作系统或应用软件都可以是异构的,不影响服务器负载均衡设备的功能发挥。
网络提供商可以灵活地进行网络服务器的升级扩容工作。
四、为什么选择梭子鱼安全负载均衡机:
高性能:
梭子鱼LB440负载均衡机提供业界至强的服务器负载均衡性能,支持每秒100,000的新建连接,900万的并发连接。
梭子鱼负载均衡机会实时地对后台服务器进行基于应用的健康检查,并决定在真实服务器不可用情况下服务如何处理。
采用Cookie的会话保持机制提供会话的完整性,这样可以避免在使用源地址会话保持时,客户端如果是通过统一的代理网关进行访问而造成负载均衡的不均匀,导致某些服务器的连接数远大于其他的服务器。
梭子鱼安全负载均衡机独特的无线连接心跳监控方式提供快速切换,是企业各种实时关键业务系统所必需的。
强大的安全保护:
梭子鱼安全负载均衡机内置集成了IPS实时安全防护系统,可以检测并阻挡1000多种入侵攻击和DOS攻击。
Web服务器集群负载均衡技术的应用与研究
侯秀杰
祝永志
孔令鑫
(曲阜师范大学计算机科学学院,山东日照276826)
摘
要
为了提高集群系统对用户的快速响应与整体吞吐量,必须采取一定的策略将Web访问均衡地分配到集群中的每一个服务器。
基于此思想本文针对传统的单机思想给出了一种多机三层结构的负载均衡系统。
实验结果表明了它在负载均衡方面的优越性。
关键词
负载均衡;
均衡策略;
调度算法;
Web服务器集群模型
1
引言
Internet的快速增长,特别是电子商务应用的发展,使Web应用成为目前最重要最广泛的应用,Web服务器动态内容越来越流行。
目前,网上信息交换量几乎呈指数增长,需要更高性能的Web服务器提供更多用户的Web服务,因此,Web服务器面临着访问量急剧增加的压力,对其处理能力和响应能力等带来更高的要求,如果Web服务器无法满足大量Web访问服务,将无法为用户提供稳定、良好的网络应用服务。
由于客观存在的服务器物理内存、CPU处理速度和操作系统等方面的影响因素,当大量突发的数据到达时,Web服务器无法完全及时处理所有的请求,造成应答滞后、请求丢失等,严重的导致一些数据包因延时而重发,使传输线路和服务器的负担再次增加。
传统的方法是提高Web服务器的CPU处理速度和增加内存容量等硬件办法但无论如何增加Web服务器硬件性能,均无法满足日益增加的对用户的访问服务能力。
面对日渐增加的Web访问服务要求,必须对Web服务器按一定策略进行负载分配。
利用负载均衡[1]的技术,按照一定策略将Web访问服务分配到几台服务器上,负载处理对用户透明,整体上对外如同一台Web服务器为用户提供Web服务。
2
Web负载均衡结构
2.1
负载均衡
负载是一个抽象的概念,是表示系统繁忙程度,系统在一段时间空闲,该系统负载轻,系统在一段时间空忙,该系统负载重,影响系统负载的各种因数较多如果存在很多的数据包同时通过网络连向一台Web服务器,也就是网络的速度比网络所连接的设备速度快的情况下,系统负载不断增加,直到最大。
目前提高Web服务器性能,使其具有较强负载能力,主要有两种处理思想[2]:
1)单机思想
不断升级服务器硬件性能,每当负载增加,服务器随之升级。
这随之将带来一些问题,首先,服务器向高档升级,花费资金较多;
其次,升级频繁,机器切换造成服务中断,可能会导致整个服务中断;
最后,每种架构的服务器升级总有一个极限限制。
2)多机思想
使用多台服务器提供服务,通过一定机制使它们共同分担系统负载,对单一的服务器没有太高的性能要求,系统负载增加,可以多增加服务器来分担。
对用户而言,整个系统仿佛是一台单一的逻辑服务器,这样的系统能够提供较强的可扩展性和较好的吞吐性能。
为了适应当前急剧增长的Web访问,有别于传统的单机思想,解决单机思想带来的一系列问题,本文提出了一种基于权值的策略分配负载。
2.2
负载均衡实现设备[2]
目前实现负载均衡需要两类的设备:
服务器和分配器。
1)服务器(Server)
为用户提供真正的服务,也就是指给用户提供负载均衡服务的计算机设备,有关该设备的一些性能数据是负载均衡的主要依据之一。
2)分配器(Dispatcher)
由用户浏览器、Web服务器组成两层结构Web系统[2],如图1所示,实际是基于客户端的负载均衡。
图1
负责给用户服务分配服务器,分配器的主要功能是根据客户和服务器的各种情况(这些情况要能反映服务器的负载状况或性能状况)通过一定的算法进行调动和分配工作,从而提高由服务器整体构成的网站的稳定性、响应能力。
它主要是集中所有的HTTP请求,然后分配到多台Web服务器上处理,来提高系统的处理效率。
2.3
负载均衡系统结构
2.3.1两层结构的负载均衡系统
在服务器上运行一个特定的程序,该程序相当一个客户端,它定期的收集服务器相关性能参数,如CPU、I/O、内存等动态信息,根据某种策略,确定提供最佳服务的服务器,将应用请求转发给它。
如果采集负载信息程序发现服务器失败,则找其它服务器作为服务选择。
这是一种动态负载均衡技术,但是每台服务器上必须安装特定的客户端程序,同时,为保证应用程序的透明性,需要对每个应用进行修改,能够将访问请求通过该客户端程序转发到其它服务器上,重定向方式进行,修改每一个应用程序,工作量十分大。
2.3.2三层结构的负载均衡系统
由用户浏览器、负载均衡和Web服务器组成三层结构Web系统[2],如图2所示。
实际是基于服务器的负载均衡。
图2
如果将基于客户端的负载均衡中客户端的负载均衡部分移植到一个中间平台,形成一个应用服务器,构成请求、负载均衡和服务器的三层结构,客户端应用不需要做特殊修改,透明的中间层将请求均衡的分布到不同的服务器。
据服务器直接连到Internet与否有两种多Web服务器结构:
隔离式(Separation)和非隔离式(Unseparation)。
隔离式是服务器不直接连到Internet,如图3所示,非隔离式是服务器直接连到Internet,如图4所示。
图3
图4
隔离式中只有负载均衡器对外有一个IP地址,所有的请求由负载均衡器分配到不同的WebServer,所有WebServer的返回结果也经过负载均衡器传回给用户。
非隔离式中每一台WebServer都有一个IP地址,用户请求经过负载均衡器分配到WebServer,而请求的应答不经过负载均衡器,直接传回用户。
为了减轻均衡器的负载,本文中采用了三层结构中的隔离方式。
2.4
负载均衡实现的方法
Web负载均衡常见算法有[3]:
循环调度算法(Round-RobinScheduling)、加权循环调度算法(WeightedRound-RobinScheduling)、最小连接调度算法(Least-ConnectionScheduling)、目标地址散列调度算法(DestinationHashingScheduling)、源地址散列调度算法(SourceHashingScheduling)。
本文采用基于权值的调度算法,也就是说权值大的服务器优先得到调度,本文在实现时是基于静态的权值,就是在开始的时候给每一个服务器配置一个默认的权值。
当然也可以根据实际运行情况再对每一个服务器的权值进行调整。
但是这需要实时的搜集每一个服务器的信息,如服务器的内存实用情况,响应速度等一些信息。
3
Web服务器集群环境配置与测试[4][6][9]
3.1搭建环境
3.1.1软硬件环境的搭建
(1)服务器有4台,一台安装apache,三台安装tomcat。
(2)服务器的操作系统都是WindowsXP。
(3)其中安装apache的服务器充当负载均衡器,其它三台是给用户真正服务的服务器。
(4)IP配置,一台安装apache的IP为219.218.22.130,三台安装tomcat的服务器IP分别为219.218.22.131/132/133。
3.1.2软件的安装与配置
1)安装tomcat的服务器的配置
(1)在三台安装tomcat的服务器上安装jdk。
(2)配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JAVA_HOME指向jdk的安装路径。
(3)在三台要安装tomcat的服务器上分别安装tomcat,调试三个tomcat到能够正常启动。
(4)tomcat的默认WEB服务端口是8080,默认的模式是单独服务,我配置的三个tomcat的Web服务端口修改为7080/8888/9999。
修改位置为tomcat的安装目录下的conf/server.xml在文件中找到下面的语句:
<
Connectorport="
8080"
maxHttpHeaderSize="
8192"
maxThreads="
150"
minSpareThreads="
25"
maxSpareThreads="
75"
enableLookups="
false"
redirectPort="
8443"
acceptCount="
100”connectionTimeout="
20000"
disableUploadTimeout="
true"
/>
只需改动Port=”8080”为上面提到的端口号就行,对安装tomcat的三个服务器这个文件做改动。
2)负载均衡服务器配置1
(1)在那台要安装apache的服务器上安装apache,我的安装路径为默认C:
\ProgramFiles\ApacheGroup\Apache2。
(2)安装后测试apache能否正常启动,调试到能够正常启动http:
//219.218.22.130。
(3)下载jk2.0.4后解压缩文件。
(4)将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中。
(5)修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中LoadModule模块配置信息的最后加上一句LoadModulejk2_modules/mod_jk2.so。
(6)分别修改三个tomcat的配置文件conf/server.xml在文件中找到下面的语句<
Enginename=”Standalone”defaultHost=”localhost”jvmRoute=”jvm1”>
只需改动jvmRoute的值,在这里分别改为tomcat1,tomcat2和tomcat3。
3)均衡服务器的配置2
在apache的安装目录中的conf目录下创建文件workers2.propertie,写入文件内容如下:
#finethecommunicationchannel
[channel.socket:
219.218.22.130:
8009]
Info=Ajp13forwardingoversocket
#配置第一个服务器
tomcatId=tomcat1#要和tomcat的配置文件server.xml中的jvmRoute="
tomcat1"
名称一致debug=0lb_factor=1#负载平衡因子,数字越大请求被分配的几率越高。
类似地再配置其它的服务器。
最后加上这样的句子info=Statusworker,displaysruntimeinformation
[uri:
/jkstatus.jsp]info=Displaystatusinformationandcheckstheconfigfileforchanges.Group=status:
[uri:
/*]
info=MapthewholeWebappdebug=0
4)安装tomcat的服务器配置2
在三个tomcat的安装目录中的webapps建立相同的应用,我和应用目录名为GroupTest,在三个应用目录中建立相同WEB-INF目录和页面index.jsp,index.jsp的页面的主要内容是打印出为客户服务的服务器的IP地址和端口号,当然还有其它一些内容,最主要的是这些内容,这样当我们在测试的时候也方便地知道为其提供服务的服务到底是哪一个服务器,这个信息是非常重要的,这样我们能看出当大量用户访问的时候我们能知道负载分配的情况。
5)集群配置
分别修改三个tomcat的配置文件conf/server.xml找到以下面语句开始的地方:
!
--<
ClusterclassName="
org.apache.c
atalina.cluster.tcp.SimpleTcpCluster”
ClusterListenerclassName="
org.apache.catalina.cluster.session.ClusterSessionListener"
/>
/Cluster>
-->
将最上,最下面的一行都改为<
--modifybywhh-->
就可以了。
然后再在Conf目录下建立jk2.properties文件,写入下面一行,其中端口为相应的channelSocket.port=8009
6)集群应用配置
对于要进行负载和集群的tomcat目录下的webapps中的应用中的WEB-INF中的web.xml文件要添加如下一句配置<
distribut
able/>
到此为止配置完成剩下的就是测试
3.2
环境的测试
(1)首选分别测试每个tomcat的启动是否正常。
http:
//219.218.22.131:
7080
//219.218.22.132:
8888
//219.218.22.133:
9999
(2)其次测试一下负载均衡服务器http:
//219.218.22.130/jkstatus.jsp再访问一下http:
//219.218.22.130/GroupTest/index.jsp以上测试成功,这说明负载均衡配置已经成功。
3.3
集群系统负载均衡测试
利用多个客户端访问页面index.jsp[5][7][8],能够在客户端的浏览器中看到为其提供服务的服务器的IP地址和端口,以及其它一些信息。
这说明,在并发请求的情况下,集群能够将请求进行分发,达到了负载平衡的目的。
下面是本实验测试的一些数据,详细内容如表格所示:
客户端
数量
服务器A,B,C
权值
处理请求数量
3
0.5,0.8,0.3
1,2,0
4
1,2,1
7
2,3,2
12
4,6,2
19
6,9,4
3.4
集群系统负载均衡测试分析
由上面的表格可知,当增加客户端的访问数量的时候我们可以发现设置权值在的服务器处理的请求个数多,这说明这个负载均衡系统达到了我们的预定目标,这样的系统也适用于集群中的服务器处理能力不一致的情况。
此系统具有良好的适应能力,非常好地解决了在单机思想下无法解决的系统瓶颈问题。
3.5
本系统的不足之处
本系统在除了有单机思想不能比拟的优点之处,也有自己的不足之处,比如本系统不能根据每个服务器的实际运行情况动态地调整集群中的每一个服务器权值,因此当有大量的用户同时访问时并不能真正的做到绝对的负载均衡,只能相对比较均匀地将负载分配到集群中的每一个服务器中去。
所以本系统也有待于进一步优化,比如实时地搜集每一服务器的信息,做到动态地调整每一个服务器的权值,有关系统的进一步优化问题,将做进一步的研究。
..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 负载 均衡 解决方案
![提示](https://static.bdocx.com/images/bang_tan.gif)