服务器集群负载平衡技术研究_第1页
服务器集群负载平衡技术研究_第2页
服务器集群负载平衡技术研究_第3页
服务器集群负载平衡技术研究_第4页
服务器集群负载平衡技术研究_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

服务器集群负载平衡技术研究

web服务器集群系统负载平衡策略的提出在internet和intranet上,web服务器为浏览器信息请求提供服务。近年由于宽带网技术的飞速发展,网络带宽的增长远高于处理器速度和内存访问速度的增长,网络带宽的瓶颈效应日趋减弱。随着客户机数量和密集性任务的增加,单个Web服务器受到处理能力的限制,成为网络访问的新瓶颈。对于降低服务器负荷,提高系统性能这个问题,如果只提高单个Web服务器的性能,并不能够彻底地解决问题。另外,升级Web服务器的软硬件配置代价比较高。而且,仅仅升级一台服务器并不能充分保障系统的可靠性,一旦这台服务器发生故障,整个系统也就不能提供服务了。另一种方案是采用Web服务器集群系统,它采用负载平衡策略将到达的请求分配给集群中的某台服务器进行处理,并且通过数据冗余和软件监测等方法实现系统的高可用性。在这种方法中,不要求单个Web服务器具有很高的性能,当Web服务器集群不能满足浏览的需要时,在集群中加入一个或数个普通的Web服务器即可。从每个终端用户的角度来看,整个集群就像一个Web服务器。为了做到这点,集群系统必须具备负载平衡功能,使得负荷在多个Web服务器上均匀分布,从而以较低成本消除系统瓶颈,增加吞吐量。近年来,Web服务器集群系统的研究方案主要存在着以下问题:①占用系统软硬件资源较多,且只能运用于特定的操作系统平台;②当系统需要传递大量数据包时,负载平衡器本身会成为新的系统瓶颈,影响系统的性能。本文提出了一种用纯软件方法实现Web集群系统负载平衡的方案。这种方案可以在Windows,UNIX,LINUX等操作系统下构建集群系统,不需要附加磁盘阵列等昂贵的设备。这种构建集群的方案实现了系统的高可用性和动态负载平衡,运行效果良好。1模型运行指标当一个客户访问Web服务器时,服务器会开辟一个专门的线程为其服务(本文称这个线程为服务窗口)。每个服务窗口在运行时会占用一定的系统资源,因此一个Web服务器只能同时为一定数量的客户服务,超过这个数量的客户的访问请求会被拒绝,客户只能等待。在集群系统中,需要根据客户的人数,访问时间等参数合理地安排服务器数目以提高系统的性能。如果服务器过多,服务器会长期处于空闲状态,造成不必要的资源浪费;而服务器过少,客户必然要等待很长时间才能进行访问。任何Web服务系统的浏览(如网站的新闻浏览),高峰时间都可能形成Poisson流,Poisson流期间平均到达率为大约3.3人/min。如果访问客户多于服务窗口,则会存在排队现象。根据统计,对于一般网站的浏览每个客户平均浏览的时间为30min,每次访问的平均等待时间可以接受的限度为1min,由下文可知,以此假设作为前提条件,并不影响本研究方案的通用性。按照“排队论”,本文把访问客户作为排队论中的“顾客”,Web服务器作为“服务机构”,每一个服务窗口作为“服务台”。当访问客户得不到服务时,就要排队等候,这就形成一个“排队系统”。通过排队论模型可以计算以下主要运行指标:队长,客户等待时间的期望值,忙期分布等。根据排队论,需做如下数学假设:相邻两个访问客户首次登陆系统的时间间隔T是随机变量。通常假设到达的顾客是Poisson流,这时相邻两个访问客户登陆系统的时间间隔T是随机变量。它服从负指数分布,即P(T≤x)={01−exp{−λx}x≤0x>0Ρ(Τ≤x)={0x≤01-exp{-λx}x>0其中λ为固定正数,它表示单位时内申请访问的客户平均数(平均到达率),即相邻两个客户申请时间间隔的平均数(平均间隔时间)的倒数,λ的值由经验决定,本文取为3.3。每个客户在服务窗口访问的时间S也是随机变量,通常假设是指数分布随机变量。即P(S≤x)={01−exp{−μx}x≤0x>0Ρ(S≤x)={0x≤01-exp{-μx}x>0其中μ为固定正数,它表示平均单位时间能有μ个访问客户访问完(平均服务率),即平均每个客户访问时间的倒数,这里μ=1/30。记ρ=λ/(kμ),为了不致排队客户无限增多,令ρ<1。希望得到的Web服务系统运行指标有:Web服务系统中无访问客户,整个Web服务系统空闲的稳态概率P0;系统中n个客户正在浏览访问或排队的稳态概率Pn;系统中所有正在浏览和排队的客户人数的期望值L;排队等待浏览客户数的期望值记为Lq;每个客户在系统中停留时间的期望值记为W;每个客户排队时间的期望值记为Wq。则有下列公式:P0=[∑j=0k−1λjμjj!+1k!(λμ)k(11−ρ)]−1Pn=⎧⎩⎨λnμnn!P0λnμnk!kn−kP01≤n≤kn>kLq=(kρ)kρP0k!(1−ρ)2L=Lq+λμW=LλWq=LqλΡ0=[∑j=0k-1λjμjj!+1k!(λμ)k(11-ρ)]-1Ρn={λnμnn!Ρ01≤n≤kλnμnk!kn-kΡ0n>kLq=(kρ)kρΡ0k!(1-ρ)2L=Lq+λμW=LλWq=Lqλ将λ=3.3,μ=1/30代入。当系统中Web服务器节点数为2时,平均队长Lq为4.698人,平均排队时间Wq为1.423min;当Web服务器节点数为3时,平均队长Lq为1.205人,平均排队时间Wq为0.365min。所以,经以上预判,应取3台Web服务器和负载平衡器构成集群系统才能满足要求。2群体系统的动态负载平衡的实现2.1动态负载信息分配系统集群系统的负载平衡方法有动态和静态的两种。静态负载平衡SLB(StaticLoadBalancing)是根据服务器和网络的负载特性,预先制定一个调度策略或分配算法,在集群运行的整个阶段都按照这个不变的策略或算法给各个服务器分配任务工作站。而动态负载平衡需要在集群系统运行时实时检测系统的负载信息,动态地将任务在各个结点之间进行分配和调整以达到系统负载的均匀分配。使用动态负载平衡需要解决如下问题:(1)同步。负载平衡时需要对集群中所有的服务器同一时刻的负荷进行的比较,可以采取发送同步信号的方法解决这个问题。(2)性能度量。就是以多大的频率采集Web服务器负荷参数,采集什么样的参数能最好地反映系统性能,如何采集负荷参数。合理地解决这些问题才能达到最佳的负载平衡效果。本文研究的负载平衡器采用集中式策略,即该平衡器与系统中每一个Web服务器节点建立一个长期稳定的TCP连接,各个服务器同步地采集本机的性能参数,通过TCP连接传递给负载平衡器,负载平衡器再做均衡判决的工作。2.2平台监控系统为了使系统能够达到较高的吞吐量,使用户反应时间尽可能缩短,选取如下动态负荷参数:CPU利用率C,内存使用率M,硬盘传输量D,网络流量N。系统中设计了一个SERVERPER进程,该进程常驻于各服务器中,定期采集服务器的各项参数并将参数发送给负载平衡器。负载平衡器每隔20s发送一个计算服务器性能数据的同步广播信号。SERVERPER进程接收到信号后开始计算本机的负荷。(1)性能同步优化获得CPU使用率方法有多种,但考虑到对系统资源的占用尽可能节省,本集群系统采取调用APINtQuerySystemInformation的方法。这种方法可以精确地计算CPU的使用率,占用系统资源非常少。NtQuerySystemInformation函数的详细资料未作公开,在这里作一简要的介绍。NtQuerySystemInformation的功能很强大,调用它可以获得系统的很多性能数据,函数原型如下:NtQuerySystemInformationNTSTATUSNtQuerySystemInformation(SYSTEM-INFORMATION-CLASSSystemInformationClass,PVOIDSystemInformation,ULONGSystemInformationLength,PULONGReturnLength);其中参数的具体含义和函数调用方法可以查询相关手册。利用NtQuerySystemInformation求CPU使用率的算法是:每次接收到性能同步信号后调用该函数得到自计算机运行以来所有CPU空闲时间总量和计算机运行时间总量。将相邻两次得到的空闲时间总量相减,得到一个周期内所有CPU的空闲时间t1。将相邻两次得到的系统运行时间总量相减,得到一个周期的时间值t2。将t1和t2代入下列公式得到一个周期内CPU使用率的平均值。C=1−P=1−t1t2×QC=1-Ρ=1-t1t2×Q其中P为CPU的空闲率;Q为CPU个数。(2)高效获取物理高效技术SERVERPER进程每次接收到性能同步信号之后,每隔1s调用函数GlobalMemoryStatus得到物理内存的使用率,重复5次,再将得到的值平均作为这段时间内内存的使用率。(3)rysysteminblotSERVERPER进程每次接收到性能同步信号后调用NtQuerySystemInformation函数得到自计算机运行以来硬盘读操作的总数和写操作的总数,求和得到硬盘传输总量。将相邻两次得到的硬盘传输总量相减,得到一个循环周期内硬盘传输量。(4)常用的tcp包的质量SERVERPER进程每次接收到性能同步信号后调用函数GetTcpStatistics得到自计算机运行以来计算机接收和发送的TCP包的总量,求和;再将相邻两次得到的数相减,得到一个循环周期内计算机发送和接收到的TCP包数作为机器的网络流量。2.3平台的动态负载平衡系统中设计了一个JUDEGER进程常驻于负载平衡器上。进程JUDEGER接收自Web服务器传来的服务器负荷参数,将参数写入服务器信息表中,并从该表读取服务器的参数,从中选择工作正常且负载最低的服务器为下一客户服务。JUDEGER进程的主线程初始化通信端口后等待服务器SERVERPER进程的连接,当有服务器连接请求到来后,生成一个子线程与服务器通信,主线程继续等待服务器的连接请求。一个子线程接收和记录一个Web服务器的性能负载信息。集群有几个Web服务器节点,JUDEGER进程就生成几个线程与之通信。在每个循环周期内,服务器信息表都可以精确地反应所有Web服务器的负荷性能信息。负载平衡判决的方法:每隔3s,JUDEGER进程读入服务器信息表中每一行的内容并写入一个记录数组,数组的每一个记录代表了一个服务器的所有信息(动态负荷参数)。以数组中第一个正常工作的服务器信息(假定为M号服务器)为基准,将其它正常服务器(假定为i号服务器)的信息和基准服务器的信息代入下列公式进行加权比较。比值=α×λ1i×Ciλ1m×Cm+β×λ2i×Miλ2m×Mm+γ×λ3i×Diλ3m×Dm+θ×NiNm比值=α×λ1i×Ciλ1m×Cm+β×λ2i×Μiλ2m×Μm+γ×λ3i×Diλ3m×Dm+θ×ΝiΝm其中:下标i表示第i号服务器;下标m表示基准服务器;λ1为CPU处理能力;λ2为内存参数;λ3为硬盘参数;C为CPU的使用率;M为内存的使用率;D为硬盘传输量;N为网络流量;α为CPU比较权值;β为内存比较权值;γ为硬盘比较权值;θ为网络比较权值。α,β,γ,θ的初始值均为1。可以根据集群运行的实际情况加大或减小其中的某个权值以强调或减弱某方面的负载性能。在对服务器负载性能进行比较时,综合考虑了这些硬件的静态参数和动态负载。在得到服务器信息表中所有正常运行服务器与基准服务器的信息比值之后,JUDEGER进程选取其中比值最小的服务器作为负载最轻的服务器,记录这个服务器的IP。在这个循环周期中所有新进入集群系统的客户都将访问这台Web服务器。下个循环周期,JUDEGER进程又会选出新的负载最轻的服务器,新进入集群系统的客户都将访问新的轻载服务器。根据经验分析,1min内集群平均有3.3个新用户申请访问,而服务器负载参数采集的周期定为20s,系统可以均匀地将负载分配到每个服务器节点上,实现动态的负载平衡。负载判决的周期定为3s是为了可以尽快发现故障节点,进行任务切换,实现系统的高可用性。3系统负载平衡特性测试本文研究的Web服务器集群系统负载平衡实验在某电网调度系统中进行了初步测试,实验中使用了3台服务器,选取了以下观测指标:(1)负载平衡器判决的轻载服务器编号No;(2)CPU使用率C;(3)内存使用率M;(4)硬盘传输量D;(5)网络流量N。测试方法是从集群系统开始运行,每隔20s记录一次上述参数,逐步增加访问量,并以多种方式(浏览、上传、下载等)访问服务器。系统负载变化以CPU使用率和内存使用率为例,实验结果分别如图1,2所示。从图中可以看出,系统开始运行时,每个Web服务器节点负载较低,负载平衡器根据各个Web服务器的负载程度调度任务给Web服务器。大约过了30min之后,各个节点的负载趋于稳定,轻载服务器在三个服务器间不定期切换。实验结果表明系统的负载平衡特性满足了系统需求。本文提出的负载平衡方法应用于Web服务器集群系统中,经大量实验,与未

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论