免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
开 题 报 告毕业设计题目: 基于nginx的服务器负载均衡器实现11 本科毕业论文(设计)开题报告班 级姓 名论文题目基于nginx的服务器负载均衡器实现目录:一、选题背景及意义二、国内外研究现状三、拟解决的主要问题四、总体研究思路五、实验环境搭建和测试六、预期研究成果七、研究工作计划参考文献成绩: 答 辩意 见答辩组长签名: 年 月 日系主任审核意见签名:年 月 日一、 选题的背景及意义Intnet的规模每一百天就会增长一倍,客户希望获得7*24的不间断可用性及较快的系统反应时间,而不愿屡次看到某个站点“server too busy”及频繁的系统故障。但随着互联网用户数目迅速扩容,并发访问人数不断增加,服务器负载越来越重,常常造成超负荷运载。目前,超负荷服务器提供服务时暴露出了以下问题:1(1)服务器的服务能力远远不能满足用户实际需求。虽然各个厂商的服务器性能逐步提高,处理芯片不断升级,内存、硬盘不断扩容,但仍然无法满足急剧膨胀的用户访问需求。长远来看,单纯的硬件升级决不是根本的解决方法。(2)服务器可靠性无法保证。服务器本身的软件、硬件和网络连接等问题理论上都有可能造成服务器出现相关各种故障。因此,在故障恢复前,用户会在一段时间内得不到应有的服务,对于一些要求高可靠性的网络系统而言是致命的缺点,因此带来的危害后果十分严重。(3)服务响应时间长,延迟大,无法满足用户需求。服务器忙时反应能力下降,会造成用户端连接速度缓慢、延迟增加,即使服务器相对正常,由于服务器繁忙造成的拥塞同样会影响对用户的服务。(4)存在服务器单点故障。随着用户访问量的增加,服务器负担将不断增加,很容易造成服务器崩溃而停止服务,这对许多实时性要求高的网络服务将是致命打击。在此情况下,如果扔掉现有设备去做大量的硬件升级,势必造成现有资源的浪费,而且如果面临下一次业务量的提升,又将导致再一次硬件升级的高额成本投入,因此即使性能再卓越的设备也不能满足当前业务量需求的快速发展。于是,负载技术应运而生2。 负载均衡(load balance)技术是建立在现有网络结构之上,它提供了一种廉价、有效、透明的方法用于扩展网络设备和服务器的带宽,同时增加系统吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其核心思想是采用增加同时工作的服务器数量的方法,根据当前服务器的负载情况,将到达的大量用户请求合理分配到不同的服务器上进行处理,以减轻单个服务器的处理负担,从而极大地提高服务器性能,使资源得到最大效率的利用3。二、国内外研究现状负载均衡从不同角度可以分为三类,第一类是软件硬件的负载均衡技术。软件负载均衡技术就是利用现有的服务器资源,通过编写软件实现服务器负载均衡。4与硬件负载均衡相比,是一种充分利用现有资源、能够节约资金、负载均衡措施灵活、现实有效的方法;基于硬件的负载均衡,即将负载均衡功能形成专门的硬件。所有服务器通过该硬件来提供对外服务。但负载均衡器容易成为外部用户访问数据中心的瓶颈,而且硬件设备价格昂贵5。负载均衡从其应用的地理结构上,分为本地负载均衡和全局负载均衡。本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指在不同地理位置、有不同网络结构的服务器群间做负载均衡6。从算法上主要分为静态负载均衡算法和动态负载均衡算法。静态负载均衡算法是利用事先知道的应用问题的众多特征(如任务大小、任务间通信量、个服务器处理性能)进行负载分配分,力图达到一个全局最有或接近最优的效果7。静态负载均衡算法主要包括轮转调度算法8、加权轮转调度算法9、目的地址散列10、源地址散列11等。但由于静态负载均衡算法事先确定了分发策略,算法在执行任务的过程中,分发策略并不随着外部环境的变化而改变。而网络上任务的到达时间、到达的数量多少都是未知的,因此服务器的执行具有盲目性。当一台服务器任务过多时,未执行的任务只能排队等候,而不会被转移到其他的可能空闲的服务器上。这就会出现一台服务器忙碌而其他服务器空闲的情况,服务器的性嫩归咎会有所下降,也造成了资源浪费。这种算法的优点是不会产生额外的开销12。动态负载均衡算法考虑到了服务器实时的负载和响应情况看,不断调整服务器处理请求的比例,以此来避免服务器超载是依然能收到大量请求,从而提高了整个系统的吞吐率。相比于静态负载均衡算法,这种算法更灵活,更有效13。由于集群系统运行一段时间后,各台服务器的负载状况会与调度器上记录的负载量产生一定的偏移,因此需要通过周期性的负载信息查询来修正调度器上的记录。这种“查询修正任务分配查询”的机制我们称为动态反馈机制。由于动态反馈机制需要额外的系统开销,所以对于每一个服务请求,我们不可能都进行一次负载信息查询,因此只能在每个周期时间间隔做一次节点信息查询。动态负载均衡算法主要包括最小连接调度算法14、加权最小连接调度算法15、响应速度均衡算法16等。从上述可以看到,利用算法来实现负载均衡是最便捷、有效的。而现在很多静态算法均已实现,但动态算法大多还停留在理论阶段,算法的稳定性、可靠性还有待加强。三、拟解决的主要问题相比于其他方法,动态负载均衡算法是最便捷、最有效的算法。本课题主要要求熟悉在Linux下的C语言开发,利用C语言编程实现动态负载均衡。了解Nginx的web服务器及反向代理的实现原理,并利用Nginx作为反向代理服务器完成服务器的集群,以测试动态负载均衡算法的有效性。在测试环境搭建过程中要完成Apache服务器17和Nginx服务器18的配置,并用一台电脑来模拟客户端想服务器发送高并发请求。本课题主要解决的问题:如何实时获取服务器的负载(CPU memory)情况;动态负载均衡算法的实现。算法根据实时获取的服务器负载情况来分配服务请求,使各个服务器的负载情况相对平均,以此来提高服务的性能,高效地处理服务请求。四、总体研究思路4.1 动态负载均衡算法Nginx是一款开放源代码的软件,它允许用户根据需要在源代码中插入模块,以实现特定的功能。本课题主要工作就是在Nginx源代码中插入负载均衡模块,通过负载均衡算法来实现服务器的负载均衡。加权轮转调度算法根据每台服务器的处理能力的不同,人为设定一个能反映其处理能力的相对权重。因此该算法能区别对待集群中的每一台服务器,能力不同的服务器指定不同的权重,权重大的服务器处理较多的连接数,权值小的服务器处理较少的连接数,总之就是试图保证服务器处理的负载与其处理能力成正比。但由于权重是在最初期设置的,且权重不会改变,因此当请求负载变化太大时,容易造成集群负载不平衡,因此不能真正实现集群负载均衡。为了能达到更好的负载均衡的效果,实现动态负载均衡,本课题算法在加权轮转调度算法的基础上增加了权重更新。服务器的负载能力主要取决于CPU和memery,所以要定期(5s)获取服务器的CPU利用率和内存(memery)利用率,利用实时的CPU利用率和内存(memery)利用率来决定权重。这样权重就能实时反映出服务器的处理能力,能动态地实现负载均衡。负载均衡算法组要是用权重来确定服务的请求。具体步骤如下:第一步:把后台的服务器赋予最初权重,各个服务器的权重值相等为L。第二步:当有服务请求是,算法比较各个服务器权重。比较得出最大值,并将请求分配给权重最大的服务器;若有多台服务器权重相等且都为最大,则随机选一台分配请求。第三步:检查更新时间是否到达。若到达,则更新权重;若未到达,继续执行第二步。权重主要取决于CPU利用率和内存(memery)利用率。根据两者的重要性,设CPU利用率的权重系数为R1(0.6),内存利用率的权重系数为R2(0.4)。则动态权重公式为:LOAD(N)=R1*Lcpu(N)+R2*Lmemory(N)最终的权重为:W= L+ (LOAD(N)-L)1/3是否有请求到达更新周期是否到达是否有可用服务器随机分配到一台服务器上更新权重开始结束分配到权重较大的服务器上比较权重是否相同否否否是是是否是负载均衡算法流程图4.2 实时获取服务器负载服务器负载的主要是指标CPU利用率和内存(memery)利用率,而权重的更新也是取决于CPU和memery,这就需要Nginx能够定期(每隔5s)获取Apache服务器上实时的CPU和memery情况。4.2.1 CPU利用率获取对系统CPU利用率的获取是通过对Linux的/proc文件系统下的stat文件的分析实现的。/proc文件是一种内核和内核模块用来向进程发送信息的机制。/proc文件系统是一个虚拟文件系统,用于输出系统运行状态,作为操作系统本身和应用程序之间通信界面,为应用程序获取系统当前的运行状况和内核的内部数据信息提供了便利的接口,此文件系统只存在于内存中,不占用外存空间。/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。这些文件是随系统配置的变化而变化的。例如,/proc/cpuinfo可以提供许多有关CPU的静态信息,/proc/stat文件包含了CPU利用率、磁盘、内存页、内存对换和全部中断等信息,这些信息都是从系统启动开始累计到当前时刻的。 User值表示从系统启动开始到当前时刻,用户态的CPU时间,不包含Nice值为负进程;Nice值表示从系统启动开始到当前时刻,Nice值为负的进程所占用的CPU时间;System值表示从系统启动开始到当前时刻,系统核心时间;Idle值表示从系统启动开始到当前时刻的等待空闲时间;IOwait表示从系统启动开始到当前时刻,硬盘IO等待时间;IR表示从系统启动开始到当前时刻,硬中断时间;SoftIRQ表示从系统启动开始到当前时刻,软中断时间。我们利用以下几个公式来计算CPU的空闲率和利用率。CPU利用时间UserNiceSystemCPU空闲时间IdleIOwaitIRSoftIRQCPU总时间(UserNiceSystem)(IdleIOwaitIRSoftIRQ)CPU空闲率的计算公式为:CPU空闲率(本次CPU空闲时间一上次CPU空闲时间)(这次CPU总时间一上次CPU总时间)100% CPU利用率一CPU空闲率4.2.2 memery获取对内存利用率的获取是通过读取/proc/meminfo文件中对应内存信息,然后利用内存利用率公式计算所得的。MemTotal表示总的内存容量,Menfree表示空闲内存的大小,Buffers和Cache表示内存缓存区的大小。定义如下内存利用率公式:内存利用率一(空闲内存内存总量) 其中,空闲内存Menfree+Buffers+Cache五、实验环境搭建和测试5.1 环境搭建为了验证算法的有效性,用三台服务器组成负载均衡集群系统进行模拟实验,其中两台Apache服务器为客户端提供请求服务,一台Nginx服务器作为反向代理服务器,一台电脑作为客户机模拟请求的发送19。实验集群的体系结构如图所示。(1)反向代理反向代理方式是指对外以代理服务器接受来自Internet上的请求,然后将请求转发给内部服务器组,并将从服务器上得到的结果返回给请求的客户端,此时代理服务器对外就表现为一个服务器。Nginx作为反向代理服务器,接受来自外部网络上的服务请求并将它们转发给内部服务器组。负载均衡就是在此过程中实现的,利用算法将请求尽可能平均地分配到不同的服务器上,服务器处理完请求后又通过Nginx讲处理结果返回给客户端。(2)Nginx服务器Nginx是一款高性能的HTTP和反向代理服务器,同时也是一个负载均衡器。它能够支持高并发的访问连接,并具有很高的稳定性。在高并发的情况下,只占用很小的内存,保证了服务器的稳定运行。负载平衡器用来实现多台服务器或进程共同运行,反向代理服务器用来透明处理到另一台服务器的请求。这使得Nginx可以处理静态请求,也可以处理动态请求,并在多台服务器或进程中实现负载平衡。(3)Apache服务器测试中为请求提供服务的是Apache服务器,它是目前应用最广泛的web服务器。它是一款源代码开放的软件,模块支持非常丰富。Apache的特点是简单、速度快、性能稳定。5.2 性能测试客户端PC利用压力测试工具WAS(Web Application Stress Tool)向服务器发起持续的并发请求,WAS既可以用来加压,也可以用来进行测试操作,可以以有限的客户端模拟大量的虚拟用户,并发的发送请求到任何采用标准HTTP的服务器,并且不需要考虑服器运行的平台。在客户端利用测试工具向服务器发起请求时,利用phpsysinfo20监控系统监控服务器的系统负荷情况,并对比两台Apache服务器的负荷情况。六、预期研究成果1. 熟悉在linux下的C语言开发;2. 实时获取服务器的负载(CPU memory)情况;3. 了解nginx的web服务器,反向代理实现原理;4. 动态实现负载均衡算法;七、研究工作计划计划进度:起止时间内 容2010.10.15-2010.11.30开题报告、文献综述、英文翻译上交2010.12.01-2010.12.25开题报告、文献综述、英文翻译修改,开题报告答辩2010.12.26-2011.1.10服务器的负载(CPU memory)情况获取2011.01.10-2011.02.10通过C语言实现负载均衡器2011.02.11-2011.02.28实验环境搭建并对算法进行测试2011.03.01-2011.03.26撰写论文,修改程序2011.03.27论文初稿上交,指导教师评阅2011.03.28-2011.04.02根据导师意见,再次修改论文和程序 2011.04.03-2011.04.08论文定稿上交,评阅教师评阅2011.04.10论文答辩参考文献1 戴刚. 服务器集群关键技术的研究与实现 D. 长沙: 国防科学技术大学, 2002.2 薛军, 李增智, 王云岚. 负载均衡技术的发展 J. 小型微型计算机系统, 2003, 24(2): 2100-2103.3 王 霜, 修保新, 肖卫东. Web服务器集群的负载均衡算法研究 J.计算机工程与应用.2004, 40(25):78-804 王友良, 叶柏龙. 分布式系统中动态负载平衡的研究 M,科学技术与工程, 2005, 572-575.5 H.ZhuT, Yang, Q.Zheng, D.Watson, O.H.Ibarra, andT.Smith, Adaptive load sharing for clustered digital library servers. Technical Report, CS, UCSB, 1998.6 龚梅, 王鹏, 吴跃. 一种集群系统的透明动态反馈负载均衡算法 J, 计算机应用, 2007, 27(11):2662-2665.7 Haakon Brhin. A Comparison of Load Balancing Techniques for Scalble Servers C. IEEE NETWORK, 2000, 14(4): 58-64.8 王晓川, 叶超群, 金士尧. 一种基于分布式调度机制的集群体系机构 J, 计算机工程, 2002, 28(3): 131-133.9 任彦琦, 彭勤科等. 一种基于内容的Web集群服务器负载均衡算法 J. 计算机工程, 2005, 31(2): 122-124.10 Yang Wu, Li Shuangqing, Cheng Daijie. A Load Balancing Strategy in Web Cluster SystemC/Proc. of the 3rd International Conference on Natural Computation. S. l.: IEEE Press, 200711 Genova Z, Christensen K J. Challenges in URL Switching for Implementing Globally Distributed W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 6044-2025指针式石英手表
- 【正版授权】 ISO 13956:2025 EN Plastics pipes and fittings - Decohesion test of polyethylene (PE) saddle fusion joints - Evaluation of ductility of fusion joint interface by tear test
- DLT 5463-2024 架空输电线路工程施工图设计内容深度规定
- 医疗拒收红包协议书
- 医疗废物转运协议书
- 出海推广协议书范本
- 江苏连云港经济技术开发区事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 江苏射阳县2025事业单位招聘笔试易考易错模拟试题(共500题)试卷后附参考答案
- 武汉供销集团限公司出资企业2025年下半年下半年招聘【28人】易考易错模拟试题(共500题)试卷后附参考答案
- 拉开差距826事业单位联考最后一套卷0元易考易错模拟试题(共500题)试卷后附参考答案
- 2024年“湖北工匠杯”职工技能大赛无人机驾驶员理论考试题库-上(单选题)
- 【企业协同治理探究文献综述6600字】
- 当水墨邂逅油彩智慧树知到期末考试答案2024年
- 水厂股份合作协议书
- 乡村治理课件
- 电子技术应用专业建设项目总结报告(定稿)
- 河北省2023年普通高中学业水平合格性考试政治试题
- 聚酯一部工艺知识培训教学课件
- 大学英语四级强化智慧树知到答案章节测试2023年哈尔滨理工大学
- 骨科专科技术考核评分标准
- GB/T 755-2019旋转电机定额和性能
评论
0/150
提交评论