实现服务器负载平衡的方案毕业论文

上传人:沈*** 文档编号:148922635 上传时间:2022-09-06 格式:DOC 页数:29 大小:327.52KB
返回 下载 相关 举报
实现服务器负载平衡的方案毕业论文_第1页
第1页 / 共29页
实现服务器负载平衡的方案毕业论文_第2页
第2页 / 共29页
实现服务器负载平衡的方案毕业论文_第3页
第3页 / 共29页
点击查看更多>>
资源描述
学生毕业设计(论文)报告系 别 专 业 班 级 姓 名 学 号 设计(论文)题目 实现服务器负载平衡的方案 指导教师 起迄日期 实现服务器负载平衡的方案 【摘要】基于LVS的Linux负载平衡技术的实现。本文是利用LVS技术实现服务器负载平衡为基石,构成一个高可用,高拓展的操作平台。该系统能够提供负载平衡功能,根据合理的算法把用户请求分配到集群中的每一台服务器上执行,以减轻服务器的压力,降低对主服务器的硬件和软件要求,并解决大量访问的高负载。【关键词】Linux集群 LVS 负载平衡 服务器集群 序 言随着网络技术的高速发展,我们的网络应用也进入了一个更加深入的研究。我们学校的校园网络承担的更大的任务,各种自救学,科研和管理方面的任务。学校原来所有的单台服务器具备的处理能力和负载能力越发显的不足,所以提高服务器的性能已经迫在眉睫。我们可以选择购买新的高性能的服务器,虽然这种成本太高的解决方案是可行的,但是我们可以利用我们所学的对那些性能还良好的服务器在次利用,运用Linux集群技术设计方案可以有效的解决这个问题。本文就是利用这一技术完成服务器的负载平衡,这样既利用的原有的资源,也不需要付高额的服务器费用去购买新的服务器。今天我们就是利用我们的网络知识来提高资源利用率并降低成本。目录序 言3第一章 Linux集群(Linux Cluster)51.1集群的定义51.2集群的特点51.3 负载均衡器6第二章 LVS(Linux Virtual Server)系统72.1 LVS系统定义72.2 系统结构7第三章 LVS的负载调度算法93.1实现负载方法93.2 LVS的三层结构11第四章 利用LVS技术对服务器进行负载均衡144.1 安装配置LVS144.2通过IP隧道实现虚拟服务204.3 通过直接路由实现虚拟服务器(VS/DR)234.4 三种方法的优缺点比较25结束语28致谢29参考文献30第一章 Linux集群(Linux Cluster)1.1集群的定义所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。1.2集群的特点(1) 高可靠性(A)利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。(2)高性能计算(HP)即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析、化学分析等。(3)负载均衡(LB)网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。1.3 负载均衡器 (1)Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。(2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线。 集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等(3)Virtual Server via Direct Routing(VS-DR):用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。第二章 LVS(Linux Virtual Server)系统2.1 LVS系统定义Linux Virtual Server:简称LVS。是基于Linux服务器集群解决方案,其实现目标是创建一个具有良好的扩展性、高可靠性、高性能和高可用性的体系。许多商业的集群产品,比如RedHat的Piranha、 Turbo Linux公司的Turbo Cluster等,都是基于LVS的核心代码的。2.2 系统结构使用LVS架设的服务器集群系统从体系结构上看是透明的,最终用户只感觉到一个虚拟服务器。物理服务器之间可以通过高速的 LAN或分布在各地的WAN相连。最前端是负载均衡器,它负责将各种服务请求分发给后面的物理服务器,让整个集群表现得像一个服务于同一IP地址的虚拟服务器。2.3 LVS的三种模式工作原理Linux Virtual Server主要是在负载均衡器上实现的,负载均衡器是一台加了 LVS Patch的22x版内核的Linux系统。LVS Patch可以通过重新编译内核的方法加入内核,也可以当作一个动态的模块插入现在的内核中。负载均衡器可以运行在以下三种模式下:(1)Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。(2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线。 集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等(3)Virtual Server via Direct Routing(VS-DR):用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。第三章 LVS的负载调度算法3.1实现负载方法LVS集群通过IP负载均衡软件IPVS在内核中实现各种连接调度算法。针对请求的服务时间变化很大,给出一个动态反馈负载均衡算法。他结合内核中的加权连接调度算法,根据动态反馈回来的负载信息来调整服务器的权值,进一步避免服务器间的负载不平衡。在内核的连接调度算法上,IPVS已经实现以下8种调度算法:(1)轮叫(Round Robin) 调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。(2)加权轮叫(Weighted Round Robin) 调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。(3)最少链接(Least Connections) 调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。(4)加权最少链接(Weighted Least Connections) 在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。(5)基于局部性的最少链接(Locality-Based Least Connections) “基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用最少链接的原则选出一个可用的服务器,将请求发送到该服务器。(6)带复制的基于局部性最少链接(Locality-Based Least Connections with Replication) “带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。(7)目标地址散列(Destination Hashing) “目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。(8)源地址散列(Source Hashing) “源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。上面的这八种负载均衡算法在实施中,节点的权重越高,在集群中使用的频率就越高。比如说权重为2的节点在每接收两个访问请求之后,权重为1的节点才接收一个访问请求。3.2 LVS的三层结构LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集群采用三层结构,其体系结构如图1所示:图1:LVS三层结构 主要组成部分为:(1) 负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。(2)服务器池(server pool),是一组真正执行客户请求的服务器,服务有WEB、MAIL、FTP和DNS等。(3)共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。3.3 LVS的基本结构基本结构如下图2:图2:LVS基本结构在这种结构中有两台双网卡的Linux服务器被配置为LVS Router,又称为调度器。LVS的主要作用是虚拟出一个公共连接的IP地址和一个专用连接的IP地址(这两个地址不是手工配置生成,而是在服务启动的时候形成),称之为浮动地址。 在同一个时间,只有一个LVS Server处于工作状态,外部用户要访问内部的真实服务器实际上所做的操作是直接访问LVS Server的外部网络浮动地址,在这个例子中是eth0:1。这个公共网络浮动地址就是外部用户要访问的虚拟服务器。只不过是虚拟服务器能够将来自外部的访问按照负载均衡算法发送到内部的真实服务器上面。这种算法通常带有轮询性质。 而内部真实服务器在上面的结构中会将网关指向LVS Server的内部浮动地址,这个结构中是eth1:1。真实服务器在接收到由虚拟服务器转发的服务请求之后会将结果通过eth1:1返回。尽管eth0:1是虚拟服务器IP地址,但是如果在同一个结构中要支持多个不同虚拟地址的服务,比如说HTTP在1.1.1.10,FTP在1.1.1.20这种情况下完全可以建立多个不同的虚拟网卡。不过仍然要注意,这个虚拟网络是在服务启动状态下自动生成的而不是手动建立和配置的。为了保证所有的真实服务器都提供同样的服务内容,通常也会指定一些特定的方式,比如利用rsync或者借助下面的三层结构的共享存储来维护多台真实服务器的数据一致性。 在任何时候只有一台LVS服务器处于工作状态中,而另外一台处于备份状态。他们之间通过心跳频道来相互探知对方的状态。探知的方式是借助一些特定的脚本通过心跳频道相互发送信号。在这个结构中主心跳频道是LVS服务器的公共网络,而备用心跳频道是LVS服务器的内部网络。 当然在上面的图中,并不是一定需要两个LVS Router,只有一台LVS Router的情况下也可以做,只不过少了一些保证而已。第四章 利用LVS技术对服务器进行负载均衡4.1 安装配置LVS1.安装前准备:(1)首先说明,LVS并不要求集群中的服务器规格划一,相反,可以根据服务器的不同配置和负载状况,调整负载分配策略,充分利用集群环境中的每一台服务器。如下表:Srv Eth0 Eth0:0 Eth1 Eth1:0vs1 10.0.0.1 10.0.0.2 192.168.10.1 192.168.10.254vsbak 10.0.0.3 192.168.10.102real1 192.168.10.100real2 192.168.10.101其中,10.0.0.2是允许用户访问的IP。(2)这4台服务器中,vs1作为虚拟服务器(即负载平衡服务器),负责将用户的访问请求转发到集群内部的real1,real2,然后由real1,real2分别处理。 Client为客户端测试机器,可以为任意操作系统。(3)所有OS为redhat6.2,其中vs1 和vsbak 的核心是2.2.19, 而且patch过ipvs的包, 所有real server的Subnet mask 都是24位, vs1和vsbak 的10.0.0. 网段是24 位。2.理解LVS中的相关术语(1) ipvsadm :ipvsadm是LVS的一个用户界面。在负载均衡器上编译、安装ipvsadm。(2) 调度算法: LVS的负载均衡器有以下几种调度规则:Round-robin,简称rr;weighted Round-robin,简称wrr;每个新的连接被轮流指派到每个物理服务器。Least-connected,简称lc;weighted Least-connected,简称wlc,每个新的连接被分配到负担最小的服务器。(3) Persistent client connection,简称pcc,(持续的客户端连接,内核2.2.10版以后才支持)。所有来自同一个IP的客户端将一直连接到同一个物理服务器。超时时间被设置为360秒。Pcc是为https和cookie服务设置的。在这处调度规则下,第一次连接后,所有以后来自相同客户端的连接(包括来自其它端口)将会发送到相同的物理服务器。但这也会带来一个问题,因为大约有25的Internet 可能具有相同的IP地址。(4) Persistent port connection调度算法:在内核2212版以后,pcc功能已从一个调度算法(你可以选择不同的调度算法:rr、wrr、lc、wlc、pcc)演变成为了一个开关选项(你可以让rr、 wrr、lc、wlc具备pcc的属性)。在设置时,如果你没有选择调度算法时,ipvsadm将默认为wlc算法。 在Persistent port connection(ppc)算法下,连接的指派是基于端口的,例如,来自相同终端的80端口与443端口的请求,将被分配到不同的物理服务器上。不幸的是,如果你需要在的网站上采用cookies时将出问题,因为http是使用80端口,然而cookies需要使用443端口,这种方法下,很可能会出现cookies不正常的情况。(5)Load Node Feature of Linux Director:让Load balancer 也可以处理users 请求。(6)IPVS connection synchronization。(7)ARP Problem of LVS/TUN and LVS/DR:这个问题只在LVS/DR,LVS/TUN 时存在。3. 配置实例(1) 需要的软件包和包的安装:I piranha-gui-0412-2*rpm (GUI接口cluster设定工具);II piranha-0412-2*rpm;III ipchains-139-6lp*rpm (架设NAT)。取得套件或mount到光盘,进入RPMS目录进行安装:# rpm -Uvh piranha*# rpm -Uvh ipchains*(2) real server群:真正提供服务的server(如web server),在NAT形式下是以内部虚拟网域的形式,设定如同一般虚拟网域中Client端使用网域:192.168.10.0/24 架设方式同一般使用虚拟IP之局域网络。(a)设网卡IPreal1 :192.168.10.100/24real2 :192.168.10.101/24(b)每台server均将default gateway指向192.168.10.254。 192.168.10.254为该网域唯一对外之信道,设定在virtual server上,使该网域进出均需通过virtual server 。(c)每台server均开启httpd功能供web server服务,可以在各real server上放置不同内容之网页,可由浏览器观察其对各real server读取网页的情形。(d)每台server都开启rstatd、sshd、rwalld、ruser、rsh、rsync,并且从Vserver上面拿到相同的lvs.conf文件。(3) virtual server:作用在导引封包的对外主机,专职负责封包的转送,不提供服务,但因为在NAT型式下必须对进出封包进行改写,所以负担亦重。(a)IP设置:对外eth0:IP:10.0.0.1 eth0:0 :10.0.0.2对内eth1:192.168.10.1 eth1:0 :192.168.10.254NAT形式下仅virtual server有真实IP,real server群则为透过virtual server(b)设定NAT功能# echo 1 ; /proc/sys/net/ipv4/ip_forward# echo 1 ; /proc/sys/net/ipv4/ip_always_defrag# ipchains -P forward MASQ(c)设定piranha 进入X-window中 (也可以直接编辑/etc/lvs.cf )a)执行面板系统piranhab)设定“整体配置”(Global Settings) 主LVS服务器主机IP:10.0.0.2, 选定网络地址翻译(预设) NAT路径名称: 192.168.10.254, NAT 路径装置: eth1:0c)设定虚拟服务器(Virtual Servers) 添加编辑虚拟服务器部分:(Virtual Server)名称:(任意取名);应用:http;协议: tcp;连接:80;地址:10.0.0.2;装置:eth0:0; 重入时间:180 (预设);服务延时:10 (预设);加载监控工具:ruptime (预设);调度策略:Weighted least-connections; 持续性:0 (预设); 持续性屏蔽: 255.255.255.255 (预设); 按下激活:实时服务器部分:(Real Servers); 添加编辑:名字:(任意取名); 地址: 192.168.10.100; 权重:1 (预设) 按下激活另一架real server同上,地址:192.168.10.101。d)控制/监控(Controls/Monitoring) 控制:piranha功能的激活与停止,上述内容设定完成后即可按开始键激活piranha监控器:显示ipvsadm设定之routing table内容 可立即更新或定时更新。(4)备援主机的设定(HA)单一virtual server的cluster架构virtual server 负担较大,提供另一主机担任备援,可避免virtual server的故障而使对外服务工作终止;备份主机随时处于预备状态与virtual server相互侦测(a)备份主机:eth0: IP 10.0.0.3eth1: IP 192.168.10.102 同样需安装piranha,ipvsadm,ipchains等套件(b)开启NAT功能(同上面所述)。(c)在virtual server(10.0.0.2)主机上设定。a)执行piranha冗余度 ;b)按下“激活冗余度”;冗余LVS服务器IP: 10.0.0.3;HEARTBEAT间隔(秒数): 2 (预设)假定在秒后进入DEAD状态: 5 (预设);HEARTBEAT连接埠: 539 (预设)c)按下“套用”;d)至“控制/监控”页,按下“在当前执行层添加PULSE DEAMON” ,按下“开始”;e)在监控器按下“自动更新”,这样可由窗口中看到ipvsadm所设定的routing table,并且动态显示real server联机情形,若real server故障,该主机亦会从监视窗口中消失。(d)激活备份主机之pulse daemon (执行# /etc/rc.d/init.d/pulse start)。至此,HA功能已经激活,备份主机及virtual server由pulse daemon定时相互探询,一但virtual server故障,备份主机立刻激活代替;至virtual server 正常上线后随即将工作交还virtual server。LVS测试经过了上面的配置步骤,现在可以测试LVS了,步骤如下:1. 分别在vs1,real1,real2上运行/etc/lvs/rc.lvs_dr。注意,real1,real2上面的/etc/lvs 目录是vs2输出的。如果您的NFS配置没有成功,也可以把vs1上/etc/lvs/rc.lvs_dr复制到real1,real2上,然后分别运行。确保real1,real2上面的apache已经启动并且允许telnet。2. 测试Telnet:从client运行telnet 10.0.0.2, 如果登录后看到如下输出就说明集群已经开始工作了:(假设以guest用户身份登录)guestreal1 guest$说明已经登录到服务器real1上。再开启一个telnet窗口,登录后会发现系统提示变为:guestreal2 guest$说明已经登录到服务器real2上。3. 测试http:从client运行iexplore http:/10.0.0.2 因为在real1 和real2 上面的测试页不同,所以登录几次之后,显示出的页面也会有所不同,这样说明real server 已经在正常工作了。(4)备援主机的设定(HA)单一virtual server的cluster架构virtual server 负担较大,提供另一主机担任备援,可避免virtual server的故障而使对外服务工作终止;备份主机随时处于预备状态与virtual server相互侦测。a.备份主机:eth0: IP 10.0.0.3eth1: IP 192.168.10.102 同样需安装piranha,ipvsadm,ipchains等套件。b.开启NAT功能(同上面所述)。c.在virtual server(10.0.0.2)主机上设定。那如果LB1 Down掉了, eth1:0也就down掉了, 那么虚拟的网关192.168.10.254 也就无效了。4.2通过IP隧道实现虚拟服务 在VS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的新瓶颈。大多数Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载调度器中只负责调度请求而响应直接返回给客户,将极大地提高整个集群系统的吞吐量。IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。我们利用IP隧道技术将请求报文封装转发给后端服务器,响应报文能从后端服务器直接返回给客户。但在这里,后端服务器有一组而非一个,所以我们不可能静态地建立一一对应的隧道,而是动态地选择一台服务器,将请求报文封装和转发给选出的服务器。这样,我们可以利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务。VS/TUN的体系结构如图4所示,各个服务器将VIP地址配置在自己的IP隧道设备上。 图3:VS/TUN的体系结构VS/TUN的工作流程如图5所示:它的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为VIP 的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。图4:VS/TUN的工作流程在这里需要指出,根据缺省的TCP/IP协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯定也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,而不会知道究竟是哪一台服务器处理的。图5:处理过程4.3 通过直接路由实现虚拟服务器(VS/DR) 跟VS/TUN方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。该方法与IBM的NetDispatcher产品中使用的方法类似(其中服务器上的IP地址配置方法是相似的),但IBM 的NetDispatcher是非常昂贵的商品化产品,我们也不知道它内部所使用的机制,其中有些是IBM的专利。VS/DR的体系结构如图7所示:调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过高速的交换机或者HUB相连。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。图6:VS/DR的体系结构VS/DR的工作流程如图8所示:它的连接调度和管理与VS/NAT和VS/TUN中的一样,它的报文转发方法又有不同,将报文直接路由给目标服务器。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。图7:VS/DR的工作流程在VS/DR中,根据缺省的TCP/IP协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯定也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,而不会知道是哪一台服务器处理的。VS/DR负载调度器跟VS/TUN一样只处于从客户到服务器的半连接中,按照半连接的TCP有限状态机进行状态迁移。4.4 三种方法的优缺点比较三种IP负载均衡技术的优缺点归纳在下表中:_ VS/NATVS/TUNVS/DRServeranyTunnelingNon-arp deviceserver networkprivateLAN/WANLANserver numberlow (1020)High (100)High (100)server gatewayload balancerown routerOwn router注:以上三种方法所能支持最大服务器数目的估计是假设调度器使用100M网卡,调度器的硬件配置与后端服务器的硬件配置相同,而且是对一般Web服务。使用更高的硬件配置(如千兆网卡和更快的处理器)作为调度器,调度器所能调度的服务器数量会相应增加。当应用不同时,服务器的数目也会相应地改变。所以,以上数据估计主要是为三种方法的伸缩性进行量化比较。(1)Virtual Server via NATVS/NAT的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限,当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报文都需要通过负载调度器。我们在Pentium 166 处理器的主机上测得重写报文的平均延时为60us,性能更高的处理器上延时会短一些。假设TCP报文的平均长度为536 Bytes,则调度器的最大吞吐量为8.93 MBytes/s. 我们再假设每台服务器的吞吐量为800KBytes/s,这样一个调度器可以带动10台服务器。(注:这是很早以前测得的数据)基于VS/NAT的的集群系统可以适合许多服务器的性能要求。如果负载调度器成为系统新的瓶颈,可以有三种方法解决这个问题:混合方法、VS/TUN和 VS/DR。在DNS混合集群系统中,有若干个VS/NAT负载调度器,每个负载调度器带自己的服务器集群,同时这些负载调度器又通过RR-DNS组成简单的域名。但VS/TUN和VS/DR是提高系统吞吐量的更好方法。对于那些将IP地址或者端口号在报文数据中传送的网络服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号。这会带来实现的工作量,同时应用模块检查报文的开销会降低系统的吞吐率。(2) Virtual Server via IP Tunneling在VS/TUN的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有100Mbps的全双工网卡,整个系统的最大吞吐量可超过1Gbps。所以,VS/TUN可以极大地增加负载调度器调度的服务器数量。VS/TUN调度器可以调度上百台服务器,而它本身不会成为系统的瓶颈,可以用来构建高性能的超级服务器。VS/TUN技术对服务器有要求,即所有的服务器必须支持“IP Tunneling”或者“IP Encapsulation”协议。目前,VS/TUN的后端服务器主要运行Linux操作系统,我们没对其他操作系统进行测试。因为“IP Tunneling”正成为各个操作系统的标准协议,所以VS/TUN应该会适用运行其他操作系统的后端服务器。(3)Virtual Server via Direct Routing跟VS/TUN方法一样,VS/DR调度器只处理客户到服务器端的连接,响应数据可以直接从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。跟VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不作ARP响应,或者能将报文重定向(Redirect)到本地的Socket端口上。结束语随着计算机网络的快速发展,要求服务器不但处理速度快,I/O吞吐量大,容错性能好,而且要可靠性高,稳定性强。Linux集群技术由多台服务器共同承担一些繁重的计算和I/O任务。从而以降低成本消除网络瓶颈。提高网络的灵活性和可靠性。实践证明该方案是在不增加费用的基础上正真实现高可用性的,为给校园网充分现有的甚至过时的机器设备进行高效的管理提供了可行的方法之一。而在这次写论文的过程中,让我了解专业知识的同时也对本专业的发展前景充满信心,比如在程序上就有很大的不足,这无疑是很让我自身感到遗憾的,可这些不足正是我们去更好的研究更好的创造的最大动力,只有发现问题面对问题才有可能解决问题,不足和遗憾不会给我打击只会更好的鞭策我前行,今后我更会更加的渗透里面的内容,并争取尽快的掌握更多的的知识,更好的为祖国的四化服务。总之,设计是灵活性很大的创造过程,同时也认识了自己的不足,为今后的设计,工作打下了坚实的基础。致谢为期三个月的毕业设计即将接近尾声,在指导老师的亲切指导和同学的帮助下,此次设计才得以完成。 首先,向本设计的指导老师表示最诚挚的谢意。在自己紧张的工作中,仍然尽量抽出时间对我们进行指导,时刻关心我们的进展状况,督促我们抓紧学习。老师给予的帮助贯串于设计的完全过程,从借阅参考资料到现场的实际操作,他都给予了指导,不仅使我们学会逗乐书本中的知识,更学会了学习操作方法。也懂得了如何把握设计重点,如何合理安排时间和论文的编写,同时在毕业设计过程中,他和我们在一起共同解决了软件出现的各种问题。 其次,要向给予此次毕业设计帮助的老师们,以及同学们以诚挚的谢意,在整个设计过程中,他们也给我很多帮助和无私的关怀,更重要的是为我们提供不少程序方面的资料,在此感谢他们,没有这些资料就不是一个完整的论文。 总之,本次设计是在老师的指导下和同学的帮助下共同完成的,在设计的三个月里,我们合作的非常愉快,教会了我许多道理,是我人生的一笔财富,我再次向给予我帮助的老师和同学表示感谢。 在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。 并向本文所参考的文献的作者们表示我最真诚的谢意。参考文献1黄旭东,林鸳 基于Linux集群的并行环境简单架设,计算机应用研究 2004 (11)2屈钢,邓建青 Linux集群技术研究 计算机应用研究 2005 (45)3余海发 用LVS构架负载均衡的Linux集群系统 开发系统世界 2003(26)29
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!