web负载均衡整理

参考:http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166350.htmlhtml

 http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166349.htmlweb

http://news.cnblogs.com/n/208124/ 算法

 http://network.51cto.com/art/201108/281452.htm数据库

 

负载均衡的概念 后端

Web集群是由多个同时运行同一个web应用的服务器组成,在外界看来就像一个服务器同样,这多台服务器共同来为客户提供更高性能的服务。集群更标准的定义是:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理,此单一系统为客户工做站提供高可靠性的服务。
    而负载均衡的任务就是负责多个服务器之间(集群内)实现合理的任务分配,使这些服务器(集群)不会出现因某一台超负荷、而其余的服务器却没有充分发挥处理能力的状况。负载均衡有两个方面的含义:首先,把大量的并发访问或数据流量分担到多台节点上分别处理,减小用户等待响应的时间;其次,单个高负载的运算分担到多台节点上作并行处理,每一个节点设备处理结束后,将结果汇总,再返回给用户,使得信息系统处理能力能够获得大幅度提升
    所以能够看出,集群和负载均衡有本质上的不一样,它们是解决两方面问题的不一样方案,不要混淆。
    
    集群技术能够分为三大类:
    一、高性能性集群(HPC Cluster)
    二、高可用性集群(HA Cluster)
    三、高可扩展性集群
    
 1、高性能性集群(HPC Cluster)
     指以提升科学计算能力为目标的集群技术。该集群技术主要用于科学计算,这里不打算介绍,若是感兴趣能够参考相关的资料。
 2、高可用性集群(HA Cluster)
     指为了使群集的总体服务尽量可用,减小服务宕机时间为目的的集群技术。若是高可用性集群中的某节点发生了故障,那么这段时间内将由其余节点代替它的工做。固然对于其余节点来说,负载相应的就增长了。
    为了提升整个系统的可用性,除了提升计算机各个部件的可靠性之外,通常状况下都会采用该集群的方案。
    对于该集群方案,通常会有两种工做方式:
     ①主-主(Active-Active)工做方式
       这是最经常使用的集群模型,它提供了高可用性,而且在只有一个节点时也能提供能够接受的性能,该模型容许最大程度的利用硬件资源。每一个节点都经过网络对客户机提供资源,每一个节点的容量被定义好,使得性能达到最优,而且每一个节点均可以在故障转移时临时接管另外一个节点的工做。全部的服务在故障转移后仍保持可用,可是性能一般都会降低。
     

 

       这是目前运用最为普遍的双节点双应用的Active/Active模式。缓存

        支撑用户业务的应用程序在正常状态下分别在两台节点上运行,各自有本身的资源,好比IP地址、磁盘阵列上的卷或者文件系统。当某一方的系统或者资源出现故障时,就会将应用和相关资源切换到对方的节点上。安全

这种模式的最大优势是不会有服务器的“闲置”,两台服务器在正常状况下都在工做。但若是有故障发生致使切换,应用将放在同一台服务器上运行,因为服务器的处理能力有可能不能同时知足数据库和应用程序的峰值要求,这将会出现处理能力不够的状况,下降业务响应水平。服务器

     
     ②主-从(Active-Standby)工做方式
      为了提供最大的可用性,以及对性能最小的影响,主-从工做方式须要一个在正常工做时处于备用状态的节点,主节点处理客户机的请求,而备用节点处于空闲状态,当主节点出现故障时,备用节点会接管主节点的工做,继续为客户机提供服务,而且不会有任何性能上影响。
          
  

  两节点的Active/Standby模式是HA中最简单的一种,两台服务器经过双心跳线路组成一个集群。应用Application联合各个可选的系统组件如:外置共享的磁盘阵列、文件系统和浮动IP地址等组成业务运行环境。网络

PCL为此环境提供了彻底冗余的服务器配置。这种模式的优缺点:架构

  • 缺点:Node2在Node1正常工做时是处于“闲置”状态,形成服务器资源的浪费。
  • 优势:当Node1发生故障时,Node2能彻底接管应用,而且能保证应用运行时的对处理能力要求。
 3、高可扩展性集群
     这里指带有负载均衡策略(算法)的服务器群集技术。带负载均衡集群为企业需求提供了更实用的方案,它使负载能够在计算机集群中尽量平均地分摊处理。而须要均衡的多是应用程序处理负载或是网络流量负载。该方案很是适合于运行同一组应用程序的节点。每一个节点均可以处理一部分负载,而且能够在节点之间动态分配负载, 以实现平衡。对于网络流量也是如此。一般,单个节点对于太大的网络流量没法迅速处理,这就须要将流量发送给在其它节点。还能够根据每一个节点上不一样的可用资源或网络的特殊环境来进行优化。
  负载均衡集群在多节点之间按照必定的策略(算法)分发网络或计算处理负载。负载均衡创建在现有网络结构之上,它提供了一种廉价有效的方法来扩展服务器带宽,增长吞吐量,提升数据处理能力,同时又能够避免单点故障。

 前面已经说过负载均衡的做用是在多个节点之间按照必定的策略(算法)分发网络或计算处理负载。负载均衡能够采用软件和硬件来实现。通常的框架结构能够参考下图。

   

 后台的多个Web节点上面有相同的Web应用,用户的访问请求首先进入负载均衡分配节点(多是软件或者硬件),由它根据负载均衡策略(算法)合理地分配给某个Web应用节点。每一个Web节点相同的内容作起来不难,因此选择负载均衡策略(算法)是个关键问题。下面会专门介绍均衡算法。
负载均衡的策略
  web负载均衡的做用就是把请求均匀的分配给各个节点,它是一种动态均衡,经过一些工具实时地分析数据包,掌握网络中的数据流量情况,把请求理分配出去。对于不一样的应用环境(如电子商务网站,它的计 算负荷大;再如网络数据库应用,读写频繁,服务器的存储子系统系统面临很大压力;再如视频服务应用,数据传输量大,网络接口负担重压。),使用的均衡策略(算法)是不一样的。 因此均衡策略(算法)也就有了多种多样的形式,广义上的负载均衡既能够设置专门的网关、负载均衡器,也能够经过一些专用软件与协议来实现。在OSI七层协议模型中的第二(数据链路层)、第三(网络层)、第四(传输层)、第七层(应用层)都有相应的负载均衡策略(算法),在数据链路层上实现负载均衡的原理是根据数据包的目的MAC地址选择不一样的路径;在网络层上可利用基于IP地址的分配方式将数据流疏通到多个节点;而传输层和应用层的交换(Switch),自己即是一种基于访问流量的控制方式,可以实现负载均衡。
   目前,基于负载均衡的算法主要有三种:轮循(Round-Robin)、最小链接数(Least Connections First),和快速响应优先(Faster Response Precedence)。
  ①轮循算法,就是未来自网络的请求依次分配给集群中的节点进行处理。
  ②最小链接数算法,就是为集群中的每台服务器设置一个记数器,记录每一个服务器当前的链接数,负载均衡系统老是选择当前链接数最少的服务器分配任务。 这要比"轮循算法"好不少,由于在有些场合中,简单的轮循不能判断哪一个节点的负载更低,也许新的工做又被分配给了一个已经很忙的服务器了。
  ③快速响应优先算法,是根据群集中的节点的状态(CPU、内存等主要处理部分)来分配任务。 这一点很难作到,事实上到目前为止,采用这个算法的负载均衡系统还不多。尤为对于硬件负载均衡设备来讲,只能在TCP/IP协议方面作工做,几乎不可能深刻到服务器的处理系统中进行监测。可是它是将来发展的方向。

 上面是负载均衡经常使用的算法,基于以上负载均衡算法的使用方式上,又分为以下几种:
  一、DNS轮询
   最先的负载均衡技术是经过DNS来实现的,在DNS中为多个地址配置同一个名字,于是查询这个名字的客户机将获得其中一个地址,从而使得不一样的客户访问不一样的服务器,达到负载均衡的目的。 
   DNS负载均衡是一种简单而有效的方法,可是它不能区分服务器的差别,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽可能保证不一样的 客户计算机能均匀得到不一样的地址。因为DNS数据具有刷新时间标志,一旦超过这个时间限制,其余DNS服务器就须要和这个服务器交互,以从新得到地址数 据,就有可能得到不一样IP地址。所以为了使地址能随机分配,就应使刷新时间尽可能短,不一样地方的DNS服务器能更新对应的地址,达到随机得到地址,然而将过 期时间设置得太短,将使DNS流量大增,而形成额外的网络问题。DNS负载均衡的另外一个问题是,一旦某个服务器出现故障,即便及时修改了DNS设置,仍是 要等待足够的时间(刷新时间)才能发挥做用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器
  二、反向代理服务器
    使用代理服务器,能够将请求转发给内部的服务器,使用这种加速模式显然能够提高静态网页的访问速度。然而,也能够考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。 
   这种代理方式与普通的代理方式有所不一样,标准代理方式是客户使用代理访问多个外部服务器,而这种代理方式是代理多个客户访问内部服务器,所以也被称为反向代理模式。虽然实现这个任务并不算是特别复杂,然而因为要求特别高的效率,实现起来并不简单。 
   使用反向代理的好处是,能够将负载均衡和代理服务器的高速缓存技术结合在一块儿,提供有益的性能。然而它自己也存在一些问题,首先就是必须为每一种服务都专门开发一个反向代理服务器,这就不是一个轻松的任务。 
   代理服务器自己虽然能够达到很高效率,可是针对每一次代理,代理服务器就必须维护两个链接,一个对外的链接,一个对内的链接,所以对于特别高的链接请求, 代理服务器的负载也就很是之大。反向代理方式下能应用优化的负载均衡策略,每次访问最空闲的内部服务器来提供服务。可是随着并发链接数量的增长,代理服务 器自己的负载也变得很是大,最后反向代理服务器自己会成为服务的瓶颈。  
  三、地址转换网关

    支持负载均衡的地址转换网关,能够将一个外部IP地址映射为多个内部IP地址,对每次TCP链接请求动态使用其中一个内部地址,达到负载均衡的目的。不少 硬件厂商将这种技术集成在他们的交换机中,做为他们第四层交换的一种功能来实现,通常采用随机选择、根据服务器的链接数量或者响应时间进行选择的负载均衡 策略来分配负载。因为地址转换相对来说比较接近网络的低层,所以就有可能将它集成在硬件设备中,一般这样的硬件设备是局域网交换机。

 负载均衡软实现

目前比较流行的就三类软件负载均衡,LVS、Nginx和HAProxy。用的最多的仍是LVS和Nginx这两种。

◆LVS

平时咱们说的LVS是Linux Virtual Server。这固然是基于Linux的开源软件了,这就意味着它是免费的。它基本上能支持全部应用,由于lvs工做在4层,因此它能够对几乎全部应用作负载均衡,包括http、数据库、聊天室等等。同时,若跟硬件负载均衡相比它的缺点也不容忽视,LVS要求技术水平很高,操做上也比较复杂,配置也很繁琐,没有赖以保障的服务支持,稳定性来讲也相对较低(人为和网络环境因素更多一些)。

◆Nginx

在这里,咱们介绍Nginx就须要跟LVS来对比了。LVS是工做在第四层,对网络的依赖性相对较大。然而Nginx是工做在第七层,对于网络的依赖性就小的多。与LVS相比,Nginx的安装和配置也相对简单一些,另外测试方面也更简单,主要仍是由于对网络依赖性小的缘故。Nginx有一点很差的就是应用要比LVS少。通常咱们作软件负载均衡的时候,一般会先考虑LVS,可是遇到比较复杂的网络环境时,用LVS可能会遇到不少麻烦,不妨就考虑尝试一下Nginx。

◆HAProxy

使用HAProxy的人很是少,对其了解的也很少。经过官方的了解,HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速而且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点一般又须要会话保持或七层处理。(听说是能够工做在4-7层的。)而且它的运行模式使得它能够很简单安全的整合进您当前的架构中,同时能够保护你的web服务器不被暴露到网络上。

 

3、软负载——LVS

  LVS 是四层负载均衡,也就是说创建在 OSI 模型的第四层——传输层之上,传输层上有咱们熟悉的 TCP/UDP,LVS 支持 TCP/UDP 的负载均衡。

  LVS 的转发主要经过修改 IP 地址(NAT 模式,分为源地址修改 SNAT 和目标地址修改 DNAT)、修改目标 MAC(DR 模式)来实现。

  那么为何 LVS 是在第四层作负载均衡?

  首先 LVS 不像 HAProxy 等七层软负载面向的是 HTTP 包,因此七层负载能够作的 URL 解析等工做,LVS 没法完成。其次,某次用户访问是与服务端创建链接后交换数据包实现的,若是在第三层网络层作负载均衡,那么将失去「链接」的语义。软负载面向的对象应该是一个已经创建链接的用户,而不是一个孤零零的 IP 包。后面会看到,实际上 LVS 的机器代替真实的服务器与用户经过 TCP 三次握手创建了链接,因此 LVS 是须要关心「链接」级别的状态的。

  LVS 的工做模式主要有 4 种:

  DR

  NAT

  TUNNEL

  Full-NAT

  这里挑选经常使用的 DR、NAT、Full-NAT 来简单介绍一下。

  一、DR

  请求由 LVS 接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不通过 LVS。

  DR 模式下须要 LVS 和绑定同一个 VIP(RS 经过将 VIP 绑定在 loopback 实现)。

  一个请求过来时,LVS 只须要将网络帧的 MAC 地址修改成某一台 RS 的 MAC,该包就会被转发到相应的 RS 处理,注意此时的源 IP 和目标 IP 都没变,LVS 只是作了一下移花接木。

  RS 收到 LVS 转发来的包,链路层发现 MAC 是本身的,到上面的网络层,发现 IP 也是本身的,因而这个包被合法地接受,RS 感知不到前面有 LVS 的存在。

  而当 RS 返回响应时,只要直接向源 IP(即用户的 IP)返回便可,再也不通过 LVS。

  DR 模式是性能最好的一种模式。

  二、NAT

  NAT(Network Address Translation)是一种外网和内网地址映射的技术。

  NAT 模式下,网络报的进出都要通过 LVS 的处理。LVS 须要做为 RS 的网关。

  当包到达 LVS 时,LVS 作目标地址转换(DNAT),将目标 IP 改成 RS 的 IP。RS 接收到包之后,仿佛是客户端直接发给它的同样。

  RS 处理完,返回响应时,源 IP 是 RS IP,目标 IP 是客户端的 IP。

  这时 RS 的包经过网关(LVS)中转,LVS 会作源地址转换(SNAT),将包的源地址改成 VIP,这样,这个包对客户端看起来就仿佛是 LVS 直接返回给它的。客户端没法感知到后端 RS 的存在。

  三、Full-NAT

  不管是 DR 仍是 NAT 模式,不可避免的都有一个问题:LVS 和 RS 必须在同一个 VLAN 下,不然 LVS 没法做为 RS 的网关。

  这引起的两个问题是:

  一、同一个 VLAN 的限制致使运维不方便,跨 VLAN 的 RS 没法接入。

  二、LVS 的水平扩展受到制约。当 RS 水平扩容时,总有一天其上的单点 LVS 会成为瓶颈。

  Full-NAT 由此而生,解决的是 LVS 和 RS 跨 VLAN 的问题,而跨 VLAN 问题解决后,LVS 和 RS 再也不存在 VLAN 上的从属关系,能够作到多个 LVS 对应多个 RS,解决水平扩容的问题。

  Full-NAT 相比 NAT 的主要改进是,在 SNAT/DNAT 的基础上,加上另外一种转换,转换过程以下:

  在包从 LVS 转到 RS 的过程当中,源地址从客户端 IP 被替换成了 LVS 的内网 IP。

  内网 IP 之间能够经过多个交换机跨 VLAN 通讯。

  当 RS 处理完接受到的包,返回时,会将这个包返回给 LVS 的内网 IP,这一步也不受限于 VLAN。

  LVS 收到包后,在 NAT 模式修改源地址的基础上,再把 RS 发来的包中的目标地址从 LVS 内网 IP 改成客户端的 IP。

  Full-NAT 主要的思想是把网关和其下机器的通讯,改成了普通的网络通讯,从而解决了跨 VLAN 的问题。采用这种方式,LVS 和 RS 的部署在 VLAN 上将再也不有任何限制,大大提升了运维部署的便利性。

  四、Session

  客户端与服务端的通讯,一次请求可能包含多个 TCP 包,LVS 必须保证同一链接的 TCP 包,必须被转发到同一台 RS,不然就乱套了。为了确保这一点,LVS 内部维护着一个 Session 的 Hash 表,经过客户端的某些信息能够找到应该转发到哪一台 RS 上。

  五、LVS 集群化

  采用 Full-NAT 模式后,能够搭建 LVS 的集群,拓扑结构以下图:

  六、容灾

  容灾分为 RS 的容灾和 LVS 的容灾。

  RS 的容灾能够经过 LVS 按期健康检测实现,若是某台 RS 失去心跳,则认为其已经下线,不会在转发到该 RS 上。

  LVS 的容灾能够经过主备+心跳的方式实现。主 LVS 失去心跳后,备 LVS 能够做为热备当即替换。

  容灾主要是靠 KeepAlived 来作的。

 

 

硬件负载均衡

 

硬件负载均衡在国外比较流行。硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备咱们一般称之为负载均衡器,因为专门的设备完成专门的任务,独立于操做系统,总体性能获得大量提升,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。

下面就来了解一下市场中,比较主流的几类产品。

◆F5 BIG-IP负载均衡器(LTM)

BIG-IP系列产品受到了用户的普遍承认,使用的人也不少。它的强大之处是基于简单的Web管理界面,包括其余F5设备也是如此。同时,这个负载均衡器还能够处理SSL证书。F5的主要特色之一是其广域网优化管理器,具有高可用的加密通道,同时具备广域网传输速度,优化与数据中心的传输道路。根据这一优点,几乎是自动地就产生了一个简单的基于广域网的灾难恢复解决方案。

F5 BIG-IP LTM的官方名称叫作本地流量管理器,能够作4-7层负载均衡,具备负载均衡、应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、链接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙-包过滤、包消毒等功能。

◆思科

思科几乎每一个IOS路由器都具备负载均衡功能。这是很是使人激动的,由于咱们没必要去添加额外的硬件产品,基于现有设备,只须要添加负载均衡规则就能够了。思科是路由器领域的老大,固然负载均衡功能只是其缘由中的一个。

思科的IOS包括不少负载均衡功能,好比端口绑定,会话交换,TCP优化,NAT和服务器负载均衡器算法,等等。

思科的服务很是到位,在国外,很多技术人员都说,若是你购买了思科的产品就永远不会被公司解雇。

◆Radware的AppDirector系列

Radware的AppDirector (AD)在服务器负载均衡应用方面能够作到本地的服务器负载均衡(AD)和广域的全局服务器负载均衡(AD -Global)。它的单价比较便宜,并具备高扩展性和智能化服务。同时也拥有网络监控和检测功能,全局负载均衡和缓解必定的DDoS攻击等。

另外,Radware设备还有一些特色是比较容易更新和升级,可以感知应用服务,智能化是其宣传的理念之一,也是这个产品的一大特点。

◆梭子鱼负载均衡

梭子鱼的负载均衡器的最大特色是包含了网络安全功能。它具备入侵防护功能,而不是单单检测入侵。这可以更全面地保护你的网络,即便你错过了一个关键的更新和漏洞的修补,梭子鱼的更新服务也能让你的系统自动地更新起来。

此外,梭子鱼的负载均衡也是Web界面操做的,全局负载以及内容缓存也是它的显著特色。

相关文章
相关标签/搜索