负载均衡实现代码 负载均衡ltm_服务器

1.硬件负载均衡

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

    由于硬件负载均衡技术需要额外的增加负载均衡器,成本比较高,所以适用于流量高的大型网站系统。不过在现在较有规模的企业网、政府网站,一般来说都会部署有硬件负载均衡设备(原因1.硬件设备更稳定,2.也是合规性达标的目的)硬件负载均衡技术是在多台服务器间安装相应的负载均衡设备,也就是负载均衡器来完成均衡负载技术,与软件负载均衡技术相比,能达到更好的负载均衡效果。

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

       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界面操作的,全局负载以及内容缓存也是它的显著特点。


2.软件负载均衡

软件负载均衡技术是在一个或多个交互的网络系统中的多台服务器上安装一个或多个相应的负载均衡软件来实现的一种均衡负载技术。软件可以很方便的安装在服务器上,并且实现一定的均衡负载功能。软件负载均衡技术配置简单、操作也方便,最重要的是成本很低。目前比较流行的就三类软件负载均衡,LVS、Nginx和HAProxy。

  • LVS

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

  • Nginx

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

  • HAProxy

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


3.全局负载均衡

为多个数据中心之间的应用服务器提供负载均衡服务,从而保证用户在不同的地域访问都可以实现同样的快速访问体验,并且可以避免因单个数据中心故障造成的服务中断。全局负载均衡有以下的特点:


  1. 实现地理位置无关性,能够远距离为用户提供完全的透明服务。
  2. 除了能避免服务器、数据中心等的单点失效,也能避免由于ISP专线故障引起的单点失效。
  3. 解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量。全局负载均衡技术适用于拥有多个低于的服务器集群的大型网站系统。全局负载均衡技术是对分布在全国各个地区的多个服务器进行负载均衡处理,该技术可以通过对访问用户的IP地理位置判定,自动转向地域最近点。很多大型网站都使用的这种技术。


      全局负载均衡的主要应用有如下几种:


3.1基于http重定向

       当用户请求的服务使用的是http的协议时,可以通过对用户真实的IP地址位置进行就近性计算,发送“HTTP 302”的重定向命令,指引用户访问最佳站点。


3.2基于DNS负载均衡

       DNS负责提供域名解析服务,当访问某个站点时,实际上首先需要通过该站点域名的DNS服务器来获取域名指向的IP地址,在这一过程中,DNS服务器完成了域名到IP地址的映射,同样,这样映射也可以是一对多的,这时候,DNS服务器便充当了负载均衡调度器,它就像http重定向转换策略一样,将用户的请求分散到多台服务器上。相比http重定向,基于DNS的负载均衡完全节省了所谓的主站点,或者说DNS服务器已经充当了主站点的职能。但不同的是,作为调度器,DNS服务器本身的性能几乎不用担心。因为DNS记录可以被用户浏览器或者互联网接入服务商的各级DNS服务器缓存,只有当缓存过期后才会重新向域名的DNS服务器请求解 析。也说是DNS不存在http的吞吐率限制,理论上可以无限增加实际服务器的数量。

特性:

  1. 可以根据用户IP来进行智能解析。DNS服务器可以在所有可用的A记录中寻找离用记最近的一台服务器。
  2. 动态DNS:在每次IP地址变更时,及时更新DNS服务器。当然,因为缓存,一定的延迟不可避免。

不足:

  1. 没有用户能直接看到DNS解析到了哪一台实际服务器,加服务器运维人员的调试带来了不便。
  2. 策略的局限性。例如你无法将HTTP请求的上下文引入到调度策略中,而在前面介绍的基于HTTP重定向的负载均衡系统中,调度器工作在HTTP层面,它可以充分理解HTTP请求后根据站点的应用逻辑来设计调度策略,比如根据请求不同的URL来进行合理的过滤和转移。
  3. 如果要根据实际服务器的实时负载差异来调整调度策略,这需要DNS服务器在每次解析操作时分析各服务器的健康状态,对于DNS服务器来说,这种自定义开发存在较高的门槛,更何况大多数站点只是使用第三方DNS服务。
  4. DNS记录缓存,各级节点的DNS服务器不同程序的缓存会让你晕头转向。
  5. 基于以上几点,DNS服务器并不能很好地完成工作量均衡分配,最后,是否选择基于DNS的负载均衡方式完全取决于你的需要。


3.3基于网络就近性判断和广域三角重定向

      根据用户真实IP 地址来进行最优站点计算和判断,最终将用户流量重定向相应的服务节点上。


3.4基于rtsp重定向

      当用户请求的服务使用的是rtsp的协议时,可以通过就近性计算,重定向到用户访问的最佳站点。


3.5链路集合负载均衡技术

    链路集合负载均衡技术是将网络系统中的多条物理链路,当作单一的聚合逻辑链路来使用,使网站系统中的数据流量由聚合逻辑链路中所有的物理链路共同承担。这种技术可以在不改变现有的线路结构,不增加现有带宽的基础上大大提高网络数据吞吐量,节约成本。


4.服务器(本地)负载均衡

    本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越服务器, 充分利用现有设备,避免服务器单点故障造成数据流量的损失。 其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。


4.1防火墙负载均衡

防火墙负载均衡将请求负载分发到多台防火墙,用来提高安全性能以便超出一台防火墙的处理能力。


4.2NAT负载均衡

       简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。


4.3地址转换网关负载均衡 

       支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。

4.4反向代理负载均衡

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

特性:

  1. 调度策略丰富。例如可以为不同的实际服务器设置不同的权重,以达到能者多劳的效果。
  2. 对反向代理服务器的并发处理能力要求高,因为它工作在HTTP层面。
  3. 反向代理服务器进行转发操作本身是需要一定开销的,比如创建线程、与后端服务器建立TCP连接、接收后端服务器返回的处理结果、分析HTTP头部信息、用 户空间和内核空间的频繁切换等,虽然这部分时间并不长,但是当后端服务器处理请求的时间非常短时,转发的开销就显得尤为突出。例如请求静态文件,更适合使 用前面介绍的基于DNS的负载均衡方式。
  4. 反向代理服务器可以监控后端服务器,比如系统负载、响应时间、是否可用、TCP连接数、流量等,从而根据这些数据调整负载均衡的策略。
  5. 反射代理服务器可以让用户在一次会话周期内的所有请求始终转发到一台特定的后端服务器上(粘滞会话),这样的好处一是保持session的本地访问,二是防止后端服务器的动态内存缓存的资源浪费。


5.混合型负载均衡

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