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

负载均衡的思路下多台服务器为对称方式,每台服务器都具备等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。然后通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。由于建立内容完全一致的Web服务器并不复杂,可以使用服务器同步更新或者共享存储空间等方法来完成,因此负载均衡技术就成为建立一个高负载Web站点的关键性技术。下图为负载均衡原理图。
网站负载均衡策略
1、基于特定服务器软件的负载均衡
很多网络协议都支持“重定向”功能,例如在HTTP协议中支持Location指令,接收到这个指令的浏览器将自动重定向到Location指明的另一个URL上。由于发送Location指令比起执行服务请求,对Web服务器的负载要小的多,因此可以根据这个功能来设计一种负载均衡的服务器。
任何时候Web服务器认为自己负载较大的时候,它就不再直接发送回浏览器请求的网页,而是送回一个Location指令,让浏览器去服务器集群中的其他服务器上获得所需要的网页。
在这种方式下,服务器本身必须支持这种功能,然而具体实现起来却有很多困难,例如一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送Location指令,Location指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。
因此这种方式实际应用当中并不多见,使用这种方式实现的服务器集群软件也较少。有些特定情况下可以使用CGI(包括使用FastCGI或mod_perl扩展来改善性能)来模拟这种方式去分担负载,而Web服务器仍然保持简洁、高效的特性,此时避免Location循环的任务将由用户的CGI程序来承担。
2、基于DNS的负载均衡
由于基于服务器软件的负载均衡需要改动软件,因此常常是得不偿失,负载均衡最好是在服务器软件之外来完成,这样才能利用现有服务器软件的种种优势。最早的负载均衡技术是通过DNS服务中的随机名字解析来实现的,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。
例如如果希望使用三个Web服务器来回应对[url]www.ghq.net[/url]的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的第四层交换能力。
使用软件方式来实现基于网络地址转换的负载均衡则要实际的多,除了一些厂商提供的解决方法之外,更有效的方法是使用免费的自由软件来完成这项任务。其中包括Linux Virtual Server Project中的NAT实现方式,或者本文作者在FreeBSD下对natd的修订版本。一般来讲,使用这种软件方式来实现地址转换,中心负载均衡器存在带宽限制,在100MB的快速以太网条件下,能得到最快达80MB的带宽,然而在实际应用中,可能只有40MB-60MB的可用带宽。
5、扩展的负载均衡技术
上面使用网络地址转换来实现负载分担,毫无疑问所有的网络连接都必须通过中心负载均衡器,那么如果负载特别大,以至于后台的服务器数量不再在是几台、十几台,而是上百台甚至更多,即便是使用性能优秀的硬件交换机也会遇到瓶颈。此时问题将转变为,如何将那么多台服务器分布到各个互联网的多个位置,分散网络负担。当然这可以通过综合使用DNS和NAT两种方法来实现,然而更好的方式是使用一种半中心的负载均衡方式。
在这种半中心的负载均衡方式下,即当客户请求发送给负载均衡器的时候,中心负载均衡器将请求打包并发送给某个服务器,而服务器的回应请求不再返回给中心负载均衡器,而是直接返回给客户,因此中心负载均衡器只负责接受并转发请求,其网络负担就较小了。
同样,这种方式的硬件实现方式也非常昂贵,但是会根据厂商的不同,具备不同的特殊功能,例如对SSL的支持等。
由于这种方式比较复杂,因此实现起来比较困难,它的起点也很高,当前情况下网站并不需要这么大的处理能力。
总之,我们比较上面的五种负载均衡方式,DNS最容易,也最常用,能够满足一般的需求。但如果需要进一步的管理和控制,可以选用反向代理方式或NAT方式,这两种之间进行选择主要依赖缓冲是不是很重要,最大的并发访问数量是多少等条件。而如果网站上对负载影响很厉害的CGI程序是由网站自己开发的,也可以考虑在程序中自己使用Location来支持负载均衡。半中心化的负载分担方式至少在国内当前的情况下还不需要。

转载于:https://blog.51cto.com/cl17467629/36919

企业网站服务器负载均衡技术相关推荐

  1. 域名与服务器负载均衡技术学习总结

    域名到站点的负载均衡技术学习总结 目录 域名到站点的负载均衡技术一览 一.问题域 二.上面那些名词都是什么概念 三.接入层技术演进 [裸奔时代单机架构] [DNS轮询] [nginx] [高可用方案k ...

  2. 100集华为HCIE安全培训视频教材整理 | 目的NAT及服务器负载均衡技术

    学习视频来源:<乾颐堂HCIP-HCIE-security安全 2019年录制> 针对内部到外部目的地址转换 放行的地址是NAT转换以后的地址,原因是先执行目的NAT,再执行安全策略 针对 ...

  3. F5负载均衡技术的学习

    概述 负载均衡(Load Balance) 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担.在此情况下, ...

  4. 全局服务器负载均衡(GSLB)简介

    引言 在过去的几年中,随着互联网的快速发展和企业应用WEB化,服务器负载均衡(SLB)技术已经不再陌生. 服务器负载均衡根据用户数据请求中的4-7层信息将其智能转发到后端少则数台多则成百上千台应用服务 ...

  5. 负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础

    负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负 ...

  6. 防火墙——服务器负载均衡

    目录 基本概念 技术出现背景 技术简介 相关术语 负载均衡算法类型 会话保持 适用场景 会话保持方式 源IP会话保持-老化时间默认180s SSL 会话ID会话保持-老化时间默认300s HTTP C ...

  7. 实现服务器负载均衡常见的四种技术

    为了提高服务器的性能和工作负载能力,企业通常会使用DNS服务器.网络地址转换等技术来实现多服务器负载均衡,特别是目前企业对外的互联网Web网站,许多都是通过几台服务器来完成服务器访问的负载均衡. 目前 ...

  8. 服务器负载均衡 链路负载均衡 《CDN技术详解》

    1. 服务器负载均衡 服务器负载均衡是将客户端请求在集群中的服务器上实现均衡分发的技术.按照位于七层网络协议栈的不同层的划分,服务器负载均衡可以分为四层(L4)负载均衡和七层(L7)负载均衡两种. 1 ...

  9. 服务器集群负载均衡技术

    负载均衡 (Load Balancing) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. CD ...

最新文章

  1. 学会python编程容易吗-老男孩学Python编程后薪资待遇高吗?
  2. Button的使用(十四):控制音乐播放
  3. 检测 SAP Spartacus 服务器端渲染页面响应时间的两种办法
  4. 二进制文件安装mysql_CentOS7下二进制文件安装MySQL5.6
  5. matplotlib的默认字体_浅谈matplotlib默认字体设置探索
  6. Quick BI产品核心功能大图(六)开放集成
  7. 制作 macOS High Sierra U盘USB启动安装盘方法教程 (全新安装 Mac 系统)
  8. 编程猫获新一轮 3 亿融资:做好少儿编程教育基础设施!
  9. Echarts.js下载及简易Demo
  10. 游戏毕业设计参考文献合集
  11. TTL和RS232之间的详细对比转
  12. 408数据结构考研笔记!超级详细!23最新考纲
  13. [生存志] 第71节 阖闾五战入郢
  14. 机器人擂台的利剑_格斗机器人史上攻击力大排行,排名第一的果然是TA!
  15. R语言统计分析之方差分析
  16. Linux 命令 —— tree
  17. 数字图像处理与应用——半色调技术
  18. VC操作excel表格
  19. SQL Server 2012 离线安装包
  20. 元宇宙The Sandbox(一)|边玩边赚的区块链游戏

热门文章

  1. update 和 left join 合并_Python数据预处理——连接、合并、重塑样本
  2. 华为手机助手解析包时出现问题_iOS12.0-12.1.2设备降级/平刷iOS12.0-12.1.2教程(付问题解决)...
  3. 谁是最强的女汉子_JAVA
  4. 【c++】1.const和constexpr相关知识
  5. 基于R-CNN的物体检测-CVPR 2014
  6. JAVA程序员看C#的精华与糟粕
  7. Apache下的ArrayUtils工具类总结
  8. 大数据哈希学习: 现状与趋势
  9. Oracle编程入门经典 第7章 表
  10. OpenCV Harris 角点检测子