`
阅读更多

原文章地址:http://www.net130.com/CMS/Pub/special/special_fzjh/special_fzjh_jj/2007_02_05_15031.htm,对排版和内容作了修改。

 

前言

    当前,业务量的发展超出了过去最乐观的估计,即使按照最优配置建设的网络,也会感到吃力。尤其是各个网络的核心部分,其数据流量和计算强度之大, 使得单一设备根本无法承担,而如何在完成同样功能的多个网络设备之间实现合理的业务  量分配,使之不致于出现一台设备过忙、而别的设备却未充分发挥处理能力的情况,就成了一个问题,负载均衡机制也因此应运而生。

    负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要完成以下任务:解决网络拥塞问题,服务就近提供,实现地理位置无关性;为用户提供更好的访问质量;提高服务器响应速度;提高服务器及其他资源的利用效率;避免了网络关键部位出现单点失效。

定义

    其实,负载均衡并非传统意义上的“均衡”,一般来说,它只是把有可能拥塞于一个地方的负载交给多个地方分担。如果将其改称为“负载分担”,也许更好懂一些。说得通俗一点,负载均衡在网络中的作用就像轮流值日制度,把任务分给大家来完成,以免让一个人累死累活。不过,这种意义上的均衡一般是静态的,也就是事先确定的“轮值”策略 。

    与轮流值日制度不同的是,动态负载均衡通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理分配出去。 结构上分为本地负载均衡和地域负载均衡(全局负载均衡),前一种是指对本地的服务器集群做负载均衡,后一种是指对分别放置在不同的地理位置、在不同的网络及服务器群集之间作负载均衡。

    服务器群集中每个服务结点运行一个所需服务器程序的独立拷贝,诸如Web、FTP、Telnet或e-mail服务器程序。对于某些服务(如运行在Web服务器上的那些Web应用)而言,程序的一个拷贝运行在群集内所有的主机上,而网络负载均衡则将工作负载在这些主机间进行分配。对于其他服务(例如e-mail),只有一台主机处理工作负载,针对这些服务,网络负载均衡允许网络通讯量流到一个主机上,并在该主机发生故障时将通讯量移至其他主机。

负载均衡技术实现结构

    在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要完成以下任务:

     ◆解决网络拥塞问题,服务就近提供,实现地理位置无关性
     ◆为用户提供更好的访问质量
     ◆提高服务器响应速度
     ◆提高服务器及其他资源的利用效率
     ◆避免了网络关键部位出现单点失效

    广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。对一个网络的负载均衡应用, 从网络的不同层次入手,根据网络瓶颈所在进行具体分析。从客户端应用为起点纵向分析,参考OSI的分层模型,可以把负载均衡技术的实现分为客户端负载均衡技术、应用服务器技术、高层协议交换、网络接入协议交换等几种方式。


负载均衡的分类


◆基于客户端的负载均衡

    这种模式指的是在网络的客户端运行特定的程序,该程序通过定期或不定期的收集服务器群的运行参数:CPU占用情况、磁盘 IO、内存等动态信息,再根据某种选择策略,找到可以提供服务的最佳服务器,将本地的应用请求发向它。如果负载信息采集程序发现服务器失效,则找到其他可替代的服务器作为服务选择。整个过程对于应用程序来说是完全透明的,所有的工作都在运行时处理。 因此这也是一种动态的负载均衡技术。

    但这种技术存在通用性的问题。因为每一个客户端都要安装这个特殊的采集程序;并且,为了保证应用层的透明运行,需要针对每一个应用程序加以修改,通过动态链接库或者嵌入的方法,将客户端的访问请求能够先经过采集程序再发往服务器,以重定向的过程进行。对于每一个应用几乎要对代码进行重新开发,工作量比较大。

    所以,这种技术仅在特殊的应用场合才使用到,比如在执行某些专有任务的时候,比较需要分布式的计算能力,对应用的开发没有太多要求。另外,在采用JAVA构架模型中,常常使用这种模式实现分布式的负载均衡,因为java应用都基于虚拟机进行,可以在应用层和虚拟机之间设计一个中间层,处理负载均衡的工作。



◆应用服务器的负载均衡技术

    如果将客户端的负载均衡层移植到某一个中间平台,形成三层结构,则客户端应用可以不需要做特殊的修改,透明的通过中间层应用服务器将请求均衡到相应的服务结点。比较常见的实现手段就是反向代理技术。

 

    普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术就是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

 

   反向代理负载均衡能以软件方式来实现,如apache mod_proxy、netscape proxy等,也可以在高速缓存器、负载均衡器等硬件设备上实现。反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起,提升静态网页的访问速度,提供有益的性能;由于网络外部用户不能直接访问真实的服务器,因此还具备额外的安全性。


     反向代理服务器本身虽然可以达到很高效率,但是针对每一次代理,代理服务器就必须维护两个连接,一个对外的连接,一个对内的连接,因此对于特别高的连接请求,代理服务器的负载也就非常之大。反向代理能够执行针对应用协议而优化的负载均衡策略, 每次仅访问最空闲的内部服务器来提供服务。但是随着并发连接数量的增加,代理服务器本身的负载也变得非常大,最后反向代理服务器本身会成为整个架构体系的瓶颈。



◆基于域名系统的负载均衡

    NCSA的可扩展Web是最早使用动态DNS轮询技术的web系统。在DNS中为多个IP地址配置同一个域名,因而查询这个域名的客户机将得到这多个IP地址中的某一个,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。在很多知名的web站点都使用了这个技术:包括早期的yahoo站点、163等。动态DNS轮询实现起来简单,无需复杂的配置和管理,一般支持bind8.2以上的类unix系统都能够运行,因此广为使用。

    DNS负载均衡是一种简单而有效的方法,但是存在不少问题。

    首先域名服务器无法知道服务结点是否有效,如果服务结点失效,域名系统依然会将域名解析到该节点上,造成用户访问失效。

    其次,在于DNS的数据刷新时间TTL(Time to LIVE)标志,一旦超过设定的TTL,其他DNS服务器就需要和这个服务器交互,以重新获得地址数据,就有可能获得不同IP地址。因此为了使地址能随机分配,就应使TTL尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址。然而将TTL设置得过短,将使DNS流量大增,而造成额外的网络问题。

    最后,它不能区分服务器的差异,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽量保证不同的客户计算机能均匀获得不同的地址。例如,用户A可能只是浏览几个网页,而用户B可能进行着大量的下载,由于域名系统没有合适的负载策略,仅仅是简单的轮流均衡,很容易将用户A的请求发往负载轻的站点,而将B的请求发往负载已经很重的站点。因此,在动态平衡特性上,动态DNS轮询的效果并不理想。

 


◆高层协议内容交换技术

     除了上述的几种负载均衡方式之外,还有在协议内部支持负载均衡能力的技术,即URL交换或七层交换,提供了一种对访问流量的高层控制方式。Web内容交换技术检查所有的HTTP报头,根据报头内的信息来执行负载均衡的决策。例如可以根据这些信息来确定如何为个人主页和图像数据等内容提供服务,常见的有HTTP协议中的重定向能力等。

     HTTP运行于TCP连接的最高层。客户端通过恒定的端口号80的TCP服务直接连接到服务器,然后通过TCP连接向服务器端发送一个HTTP请求。协议交换根据内容策略来控制负载,而不是根据TCP端口号,所以不会造成访问流量的滞留。

     由于负载均衡设备要把进入的请求分配给多个服务器,因此,它只能在TCP连接时建立,且HTTP请求通过后才能确定如何进行负载的平衡。当一个网站的点击率达到每秒上百甚至上千次时,TCP连接、HTTP报头信息的分析以及进程的延时将会变得很大,有可能成为系统的性能瓶颈,因此要尽可能提高这几个部份的性能。

     在HTTP请求和报头中有很多对负载均衡有用的信息,可以从这些信息中获知客户端所请求的URL和网页,利用这个信息,负载均衡设备就可以将所有的图像请求引导到一个图像服务器,或者根据URL的数据库查询内容调用CGI程序,将请求引导到一个专用的高性能数据库服务器。

     如果网络管理员熟悉内容交换技术,他可以根据HTTP报头的cookie字段来使用Web内容交换技术改善对特定客户的服务,如果能从HTTP请求中找到一些规律,还可以充分利用它作出各种决策。除了TCP连接表的问题外,如何查找合适的HTTP报头信息以及作出负载平衡决策的过程,是影响Web内容交换技术性能的重要问题。如果Web服务器已经为图像服务、SSL对话、数据库事务服务之类的特殊功能进行了优化,那么,采用这个层次的流量控制将可以提高网络的性能。



◆网络地址转换(Network Address Translation,NAT)


     大型的网络一般都是由大量专用技术设备组成的,如包括防火墙、路由器、第3、4层交换机、负载均衡设备、缓冲服务器和Web 服务器等。如何将这些技术设备有机地组合在一起,是一个直接影响到网络性能的关键性问题。现在许多交换机提供第四层交换功能,对外提供一个一致的IP地址,并映射为多个内部IP地址,对每次TCP和UDP连接请求,根据其端口号,按照即定的策略动态选择一个内部地址,将数据包转发到该地址上,达到负载均衡的目的。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。由于地址转换相对来讲比较接近网络的低层,因此就有可能将它集成在硬件设备中,通常这样的硬件设备是局域网交换机。

     当前局域网交换机所谓的第四层交换技术,就是按照IP地址和TCP端口进行虚拟连接的交换,直接将数据包发送到目的计算机的相应端口。通过交换机将来自外部的初始连接请求,分别与内部的多个地址相联系,此后就能对这些已经建立的虚拟连接进行交换。 因此,一些具备第四层交换能力的局域网交换机,就能作为一个硬件负载均衡器,完成服务器的负载均衡。

     由于第四层交换基于硬件芯片,因此其性能非常优秀,尤其是对于网络传输速度和交换速度远远超过普通的数据包转发。然而, 正因为它是使用硬件实现的,因此也不够灵活,仅仅能够处理几种最标准的应用协议的负载均衡,如HTTP。当前负载均衡主要用于解决服务器的处理能力不足的问题,因此并不能充分发挥交换机带来的高网络带宽的优点。

     使用基于操作系统的第四层交换技术因此孕育而生。通过开放源码的Linux,将第四层交换的核心功能做在系统的核心层,能够在相对高效稳定的核心空间进行IP包的数据处理工作,其效率不比采用专有OS的硬件交换机差多少。同时又可以在核心层或者用户层增加基于交换核心的负载均衡策略支持,因此在灵活性上远远高于硬件系统,而且造价方面有更好的优势。

 

混合型负载均衡

 


  在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能,这种方式称之为混合型负载均衡。这种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。

  下图展示了一个应用示例,三个服务器群针对各自的特点,分别采用了不同的负载均衡方式。当客户端发出域名解析请求时,DNS服务器依次把它解析成三个服务器集群的VIP,如此把客户端的连接请求分别引向三个服务器群,从而达到了再一次负载均衡的目的。

  在图中,负载均衡设备在网络拓朴上,可以处于外部网和内部网络间网关的位置,也可以和内部服务器群处于并行的位置,甚至可以处于内部网络或internet上的任意位置,特别是在采用群集负载均衡时,根本就没有单独的负载均衡设备。

  服务器群内各服务器只有提供相同内容的服务才有负载均衡的意义,特别是在DNS负载均衡时。要不然,这样会造成大量连接请求的丢失或由于多次返回内容的不同给客户造成混乱。 

分享到:
评论

相关推荐

    实用负载均衡技术网站性能优化攻略.pdf

    实用负载均衡技术网站性能优化攻略 负载均衡技术是指通过在多个服务器上分配访问负载,以提高网站的可用性、可靠性和性能的一种技术。负载均衡技术可以应用于各种类型的网站,包括静态网站、动态网站、门户网站、...

    负载均衡技术的发展.

    负载均衡技术的发展与挑战 随着互联网的飞速发展,网络技术的进步催生了大批网站的诞生,尤其是电子商务领域的兴起,使得网站访问量激增。然而,迅猛增长的访问量对网站的承载能力提出了严峻考验,一些网站因无法...

    负载均衡技术文档

    负载均衡技术是网络服务中的关键组成部分,它在大型分布式系统中扮演着至关重要的角色,确保了高可用性和可扩展性。本技术文档集合涵盖了多个负载均衡的方面,旨在帮助学习者深入理解其原理、实现方式以及应用实践。...

    实用的负载均衡技术

    负载均衡技术是一种广泛应用的技术,目的在于将服务的并发请求平均分配到后端多个具有相同处理能力的服务节点上进行处理,从而以一种廉价且有效透明的方式扩展网络设备或服务的带宽,增加吞吐量,增强服务的整体处理...

    实用负载均衡技术:网站性能优化攻略

    负载均衡技术是现代网络架构中用于提高网站性能和可靠性的关键技术之一。通过分散单个服务器的请求负载,负载均衡能够优化资源使用、最大化吞吐量、减少响应时间,并确保重要的应用不会因为过载而崩溃。在本文中,...

    《实用负载均衡技术:网站性能优化攻略》.rar

    《实用负载均衡技术:网站性能优化攻略》这本书深入探讨了如何通过负载均衡技术提升网站的性能和稳定性。负载均衡是现代互联网架构中的关键组件,它能够有效地分散服务器压力,提高服务可用性,确保用户访问体验。...

    低开销的分布式数据库负载均衡技术.pdf

    《低开销的分布式数据库负载均衡技术.pdf》一文提出了针对分布式数据库服务器间负载不均衡问题的两层负载均衡策略,该策略基于数据局部性原理,旨在降低负载均衡带来的开销,确保系统的高效运行。 首先,文章介绍了...

    实用负载均衡技术(高清扫描)

    【实用负载均衡技术】是关于网络服务优化与高可用性构建的重要主题,主要涉及如何有效地分发网络流量,确保服务的稳定性和效率。在互联网应用日益复杂和庞大的今天,负载均衡已经成为不可或缺的技术手段。本资料重点...

    云计算负载均衡技术

    讨论了云计算下负载均衡技术,讨论了云计算下负载均衡技术,讨论了云计算下负载均衡技术,讨论了云计算下负载均衡技术,讨论了云计算下负载均衡技术,讨论了云计算下负载均衡技术

    基于Linux的负载均衡技术.pdf

    【基于Linux的负载均衡技术】 负载均衡是一种网络技术,它旨在优化网络资源的分配,确保在高流量或复杂网络环境中,服务的响应时间和整体性能得以提高。Linux虚拟服务器(Linux Virtual Server, LVS)是实现这种...

    负载均衡技术基础知识

    负载均衡技术是一种网络架构策略,旨在优化系统性能和可用性,通过分散网络流量,确保没有单一设备承受过重的工作负载。该技术广泛应用于Web服务器、FTP服务器和其他关键任务服务器,以提高Internet服务器程序的可...

    负载均衡技术和实现负载均衡的各种工具介绍

    负载均衡技术是一种用于优化网络性能、提高可用性和扩展性的关键技术。随着企业业务量的增加,IT系统处理的数据流量和请求量也会显著增长,单个服务器往往难以承担这种增长带来的高负荷。此时,负载均衡技术就显得尤...

    实用负载均衡技术:

    负载均衡技术是现代软件工程和架构设计中的关键组成部分,尤其对于构建高可用、高性能的网站系统至关重要。在本文中,我们将深入探讨负载均衡的基本概念、重要性以及如何通过实际应用来优化网站性能。 首先,我们...

Global site tag (gtag.js) - Google Analytics