`

使用负载均衡技术建设高负载的网络站点(转)

阅读更多

Internet的快速增长使多媒体网络服务器,特别是Web服务器,面对的访问者数量快速增加,网络服务器需要具备提供大量并发访问服务的能力。 例如Yahoo每天会收到数百万次的访问请求,因此对于提供大负载Web服务的服务器来讲,CPU、I/O处理能力很快会成为瓶颈。

简单的 提高硬件性能并不能真正解决这个问题,因为单台服务器的性能总是有限的,一般来讲,一台PC服务器所能提供的并发访问处理能力大约为1000个,更为高档 的专用服务器能够支持3000-5000个并发访问,这样的能力还是无法满足负载较大的网站的要求。尤其是网络请求具有突发性,当某些重大事件发生时,网 络访问就会急剧上升,从而造成网络瓶颈,例如在网上发布的克林顿弹劾书就是很明显的例子。必须采用多台服务器提供网络服务,并将网络请求分配给这些服务器 分担,才能提供处理大量并发服务的能力。

当使用多台服务器来分担负载的时候,最简单的办法是将不同的服务器用在不同的方面。 按提供的内容进行分割时,可以将一台服务器用于提供新闻页面,而另一台用于提供游戏页面;或者可以按服务器的功能进行分割,将一台服务器用于提供静态页面 访问,而另一些用于提供CGI等需要大量消耗资源的动态页面访问。然而由于网络访问的突发性,使得很难确定那些页面造成的负载太大,如果将服务的页面分割 的过细就会造成很大浪费。事实上造成负载过大的页面常常是在变化中的,如果要经常按照负载变化来调整页面所在的服务器,那么势必对管理和维护造成极大的问 题。因此这种分割方法只能是大方向的调整,对于大负载的网站,根本的解决办法还需要应用负载均衡技术。

负载均衡的思路下多台 服务器为对称方式,每台服务器都具备等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。然后通过某种负载分担技术,将外部发送来的请求均匀分配 到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。由于建立内容完全一致的Web服务器并不复杂,可以使用服务器同步更新或者 共享存储空间等方法来完成,因此负载均衡技术就成为建立一个高负载Web站点的关键性技术。

  1. 基于特定服务器软件的负载均衡

    很 多网络协议都支持“重定向”功能,例如在HTTP协议中支持Location指令,接收到这个指令的浏览器将自动重定向到Location指明的另一个 URL上。由于发送Location指令比起执行服务请求,对Web服务器的负载要小的多,因此可以根据这个功能来设计一种负载均衡的服务器。任何时候 Web服务器认为自己负载较大的时候,它就不再直接发送回浏览器请求的网页,而是送回一个Locaction指令,让浏览器去服务器集群中的其他服务器上 获得所需要的网页。

    在这种方式下,服务器本身必须支持这种功能,然而具体实现起来却有很多困难,例如一台服务器如何能保证它重定向过的服务 器是比较空闲的,并且不会再次发送Location指令?Location指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。因 此这种方式实际应用当中并不多见,使用这种方式实现的服务器集群软件也较少。有些特定情况下可以使用CGI(包括使用FastCGI或mod_perl扩 展来改善性能)来模拟这种方式去分担负载,而Web服务器仍然保持简洁、高效的特性,此时避免Location循环的任务将由用户的CGI程序来承担。

  2. 基于DNS的负载均衡

    由 于基于服务器软件的负载均衡需要改动软件,因此常常是得不偿失,负载均衡最好是在服务器软件之外来完成,这样才能利用现有服务器软件的种种优势。最早的负 载均衡技术是通过DNS服务中的随机名字解析来实现的,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个 名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。

    例如如果希望使用三个Web服务器来回应对www.exampleorg.org.cn的HTTP请求,就可以设置该域的DNS服务器中关于该域的数据包括有与下面例子类似的结果:

    www1		IN		A 		192.168.1.1
    www2		IN		A 		192.168.1.2
    www3		IN		A 		192.168.1.3
    www		IN		CNAME		www1
    www		IN		CNAME		www2
    www		IN		CNAME		www3

    此后外部的客户机就可能随机的得到对应www的不同地址,那么随后的HTTP请求也就发送给不同地址了。

    DNS 负载均衡的优点是简单、易行,并且服务器可以位于互联网的任意位置上,当前使用在包括Yahoo在内的Web站点上。然而它也存在不少缺点,一个缺点是为 了保证DNS数据及时更新,一般都要将DNS的刷新时间设置的较小,但太小就会造成太大的额外网络流量,并且更改了DNS数据之后也不能立即生效;第二点 是DNS负载均衡无法得知服务器之间的差异,它不能做到为性能较好的服务器多分配请求,也不能了解到服务器的当前状态,甚至会出现客户请求集中在某一台服 务器上的偶然情况。

  3. 反向代理负载均衡

    使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速 模式显然可以提升静态网页的访问速度。因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多台内部Web服务器之一上,从而达到负载均衡的目的。 这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因 此也被称为反向代理模式。

    实现这个反向代理能力并不能算是一个特别复杂的任务,但是在负载均衡中要求特别高的效率,这样实现起来就不是十分 简单的了。每针对一次代理,代理服务器就必须打开两个连接,一个为对外的连接,一个为对内的连接,因此对于连接请求数量非常大的时候,代理服务器的负载也 就非常之大了,在最后反向代理服务器会成为服务的瓶颈。例如,使用Apache的mod_rproxy模块来实现负载均衡功能时,提供的并发连接数量受 Apache本身的并发连接数量的限制。一般来讲,可以使用它来对连接数量不是特别大,但每次连接都需要消耗大量处理资源的站点进行负载均衡,例如搜寻。

    使 用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能,具备额外的安全性,外部客户不能直接访问真实的服务器。并且 实现起来可以实现较好的负载均衡策略,将负载可以非常均衡的分给内部服务器,不会出现负载集中到某个服务器的偶然现象。

  4. 基于NAT的负载均衡技术

    网 络地址转换为在内部地址和外部地址之间进行转换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一外部地址 时,地址转换网关能将其转发到一个映射的内部地址上。因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各自与 自己转换得到的地址上服务器进行通信,从而达到负载分担的目的。

    地 址转换可以通过软件方式来实现,也可以通过硬件方式来实现。使用硬件方式进行操作一般称为交换,而当交换必须保存TCP连接信息的时候,这种针对OSI网 络层的操作就被称为第四层交换。支持负载均衡的网络地址转换为第四层交换机的一种重要功能,由于它基于定制的硬件芯片,因此其性能非常优秀,很多交换机声 称具备400MB-800MB的第四层交换能力,然而也有一些资料表明,在如此快的速度下,大部分交换机就不再具备第四层交换能力了,而仅仅支持第三层甚 至第二层交换。

    然而对于大部分站点来讲,当前负载均衡主要是解决Web服务器处理能力瓶颈的,而非网络传输能力,很多站点的互联网连接带宽总共也不过10MB,只有极少的站点能够拥有较高速的网络连接,因此一般没有必要使用这些负载均衡器这样的昂贵设备。

    使 用软件方式来实现基于网络地址转换的负载均衡则要实际的多,除了一些厂商提供的解决方法之外,更有效的方法是使用免费的自由软件来完成这项任务。其中包括 Linux Virtual Server Project中的NAT实现方式,或者本文作者在FreeBSD下对natd的修订版本。一般来讲,使用这种软件方式来实现地址转换,中心负载均衡器存 在带宽限制,在100MB的快速以太网条件下,能得到最快达80MB的带宽,然而在实际应用中,可能只有40MB-60MB的可用带宽。

  5. 扩展的负载均衡技术

上 面使用网络地址转换来实现负载分担,毫无疑问所有的网络连接都必须通过中心负载均衡器,那么如果负载特别大,以至于后台的服务器数量不再在是几台、十几 台,而是上百台甚至更多,即便是使用性能优秀的硬件交换机也回遇到瓶颈。此时问题将转变为,如何将那么多台服务器分布到各个互联网的多个位置,分散网络负 担。当然这可以通过综合使用DNS和NAT两种方法来实现,然而更好的方式是使用一种半中心的负载均衡方式。

在这种半中心的负载均衡方式下,即当客户请求发送给负载均衡器的时候,中心负载均衡器将请求打包并发送给某个服务器,而服务器的回应请求不再返回给中心负载均衡器,而是直接返回给客户,因此中心负载均衡器只负责接受并转发请求,其网络负担就较小了。

上图来自Linux Virtual Server Project,为他们使用IP隧道实现的这种负载分担能力的请求/回应过程,此时每个后台服务器都需要进行特别的地址转换,以欺骗浏览器客户,认为它的回应为正确的回应。

同样,这种方式的硬件实现方式也非常昂贵,但是会根据厂商的不同,具备不同的特殊功能,例如对SSL的支持等。

由于这种方式比较复杂,因此实现起来比较困难,它的起点也很高,当前情况下网站并不需要这么大的处理能力。

 

比 较上面的负载均衡方式,DNS最容易,也最常用,能够满足一般的需求。但如果需要进一步的管理和控制,可以选用反向代理方式或NAT方式,这两种之间进行 选择主要依赖缓冲是不是很重要,最大的并发访问数量是多少等条件。而如果网站上对负载影响很厉害的CGI程序是由网站自己开发的,也可以考虑在程序中自己 使用Locaction来支持负载均衡。半中心化的负载分担方式至少在国内当前的情况下还不需要。

分享到:
评论

相关推荐

    使用负载均衡技术建设高负载的网络站点

    本文将深入探讨“使用负载均衡技术建设高负载的网络站点”这一主题,旨在帮助读者理解负载均衡的基本原理及其在网络架构中的应用,并通过具体的实践案例展示如何有效地利用负载均衡技术提高网站的性能和用户体验。...

    用负载均衡技术建设高负载站点

    【负载均衡技术】是互联网高负载站点建设的关键技术,它旨在解决随着网络访问量增加,单台服务器处理能力不足的问题。随着Internet的迅速发展,像Yahoo这样的大型网站每天都需处理数百万次的访问请求,这使得服务器...

    radware全局负载均衡解决方案中文版

    【Radware全局解决方案的优势】主要体现在三个方面:一是AppDirector-Global同时支持本地和全局的服务器负载均衡,二是其全局三角传输技术确保真实的网络就近性判断,三是全局重定向技术能支持三级重定向,这为复杂...

    一文看懂全局负载均衡与 CDN 内容分发.docx

    CDN 服务模式简单地说,内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理 4 个要件,而内容管理和全局的网络流量管理(Traffic Management)是 CDN 的核心...

    SANGFOR_AD_智能DNS全局负载均衡解决方案.pdf

    深信服AD智能DNS全局负载均衡解决方案是一种针对大型组织和企业设计的高级网络架构策略,旨在确保业务连续性、优化用户访问体验并提高资源利用率。该方案的核心是通过深信服AD系列应用交付产品,利用智能DNS技术实现...

    数字化校园中门户服务负载均衡的分析与实现 (2007年)

    数字化校园是指应用现代信息技术于教学、科研、管理等活动中,...通过采用适当的负载均衡算法和配置,可以有效应对高并发请求,平衡服务器负载,提高系统可用性和用户满意度,为数字化校园的发展提供强大的技术支撑。

    基于MongoDB构建高性能网站技术研究.pdf

    高性能网站的系统架构建设经历了一个长期的演变过程,从最初的单个文件对应一个业务到现在普通使用的多台WEB服务器,前端使用负载均衡器进行负载均衡和会话保持,后台数据库使用集群,上传文件使用分布式文件系统...

    云计算数据中心网络建设研究.pdf

    - 多站点网络访问通常采用GSLB和LISP技术,分别代表全局服务器负载均衡和位置独立交换协议,用于实现自动、灵活的多站点选择机制,优化数据中心的灾备和应用系统的可用性。 通过这些知识点的分析,可以看出在...

    网站架构及高性能并发服务器设计

     用负载均衡技术建设高负载站点 20  大型网站的架构设计问题 25   开源平台的高并发集群思考 26  大型、高负载网站架构和应用初探 时间:30-45分钟 27  说说大型高并发高负载网站的系统架构 28 好的案例...

    高性能高并发服务架构.doc

    #### 负载均衡技术建设高负载站点 - **硬件负载均衡器**:如F5、Citrix等,适用于高可用性和安全性要求高的场景。 - **软件负载均衡器**:如HAProxy、Nginx,成本低,灵活性高,适合大部分应用场景。 - **云服务...

    Web环境下的分布式自治站点数据同步技术研究.pdf

    超级站点作为系统入口和负载均衡调度器,负责将用户的业务请求按照站点的可用性状况重定向至最优站点。自治站点间通过数据同步保持业务数据的一致性,即使用户被重定向到不同的站点,也能够继续之前的业务操作。 ...

    高性能网站建设指南.zip

    3. **构建高性能Web站点(精选版)**:此书可能详细介绍了如何从整体上规划和设计高性能的Web站点,包括选择合适的Web服务器(如Apache、Nginx),配置HTTP缓存,实现动静分离,以及优化网络连接(如使用HTTP/2,...

    架构文章集合,搜索引擎,系统可伸缩性

    3. **使用负载均衡技术建设高负载的网络站点**:负载均衡是保证高可用性和可伸缩性的重要手段。文档可能介绍了各种负载均衡算法,如轮询、最少连接数、IP哈希等,以及硬件和软件负载均衡器的比较,例如Nginx、...

    高性能高并发服务器架构

    负载均衡技术建设高负载站点 - **常用负载均衡方案**: - **硬件负载均衡器**:如F5、Cisco等专业设备。 - **软件负载均衡器**:如HAProxy、Nginx等。 - **云服务提供商提供的负载均衡服务**:如AWS ELB、阿里云...

    (预览版1-5页)2023网络建设与运维/网络搭建与应用/网搭Linux部分题解方法-Part3

    2023网络建设与运维/网络搭建与应用/网搭Linux部分题解方法 原创"极简"与"效率"做题技巧,拒绝硬背死背命令 ... "极简":利用 Nginx 实现镜像站点的负载均衡 3-1. "极简":部署 Tomcat 应用 Web 服务器

    互联网企业网络架构优化实践

    - 负载均衡:负载均衡技术是高可用架构中的核心,它能够合理地分配流量,提高应用处理能力,并减少响应时间。 - 可编程控制:通过内置的可编程接口,可以对网络流量进行精细的控制和管理。 - 应用健康检查:通过...

    基于软件架构的双活数据中心建设方案【最新版】.docx

    - **架构描述**:此类应用无需在两个数据中心之间共享数据,每个数据中心独立运行,通过负载均衡技术将用户请求分配到两个数据中心之一。这种模式适用于业务逻辑简单、数据独立的应用场景。 - **技术要点**: - ...

    北电助中石油天然气门户网站快速发展

    邮件系统建设中,中石油原有的邮件服务由直接提供的服务器承载,通过北电的应用交换机3408,实现了多台邮件服务器的负载均衡,配置为两组双活的高可用状态,分别位于北京的邮件中心站点和集团公司邮件分站点。...

    Linux网站建设技术指南

    1. 负载均衡:使用HAProxy或Nginx的负载均衡功能,提高服务器处理请求的能力。 2. 缓存机制:如使用Redis或Memcached实现数据缓存,减轻数据库压力。 3. 安全防护:安装SSL证书实现HTTPS加密,定期更新系统和软件...

Global site tag (gtag.js) - Google Analytics