[转载]负载均衡技术分类

负载均衡技术有如下几种方式

1. 基于客户端

即有客户端自身选择集群中能为其提供服务的服务器,每个客户程序都具有一定的服务器集群的相关知识,进而以负载均衡的方式将请求发送到不同的服务器。客户成寻负载均衡的策略主要有两大种。(1)客户程序定期或不定期的收集集群中各服务器的运行参数:CPU 占用情况、磁盘 IO、内存等动态信息,基于参数根据特定的策略选择服务器。(2)客户程序简单的使用Round-Robin实现负载均衡。第(1)种方式要求客户程序收 集服务器集群的运行参数,客户程序和各服务器间的通信加重了网络负担,以及客户端的工作负担。第(2)种负载均衡的策略简单,其所做策略纯粹是轮询方式, 可靠性较低。


总结:基于客户端的负载均衡要求客户端都运行相同的负载均衡程序,可维护性低,也加重了客户端开发的难度。

2.基于中间层

将客户端的负载均衡程序移植到一个中间层,通过中间层选择集群中的服务器,比较常见的是反向代理服务器。反向代理服务器可以将请求均衡的转发给集群中的服务器,还能将缓存的数据直接返回给客户端,这样的加速模式在一定层度上加快了静态页面的访问速度。

反向代理服务器能够将负载均衡技术与缓存技术结合在一起,提供很高的性能。但要为每种服务开发一个反向代理,这个工作量不轻松。且反向代理要维持两种连接:对客户端的连接,对服务器集群的连接,随着并发连接数的增加,反向代理服务器本身会成为系统的瓶颈。


3.基于DNS

为多个ip地址配置相同的域名,客户端请求某个域名服务时,域名服务器采用轮询的方式为客户端选择一个ip地址。为不同的客户端选择不同的服务器,从而实现负载均衡的目的。

DNS做负载均衡简单方便,但存在不少问题。

a.DNS无法知道解析的服务节点是否有效,若服务节点无效,DNS服务器依然会将域名解析到该节点上,造成访问服务节点无效。

b.DNS的缓存时间较长,一旦出现问题,更新DNS信息需要等待客户数分钟甚至数十分钟,可靠性不高。

c.DNS无法知晓服务器间的差异,也不能反映服务器当前的运行状态。其有可能将轻量级的访问发给空闲的服务器,将重量级的访问发给负载已经很重的服务器。


4.基于协议内容的负载均衡——http重定向

web内容交换技术检查http协议报头,根据报头的内容来执行负载均衡决策,例如可以根据报头中所请求的内容类型(图片、文字、视频等)决定将请求重定向到哪些服务器。

5.基于数据链路层

这是个很底层的负载均衡,一般实现于网络设备硬件中。如交换机或路由器,其统计各个端口的负载做适当的转发。

6.基于传输层

客户端的请求先到达负载均衡服务器,负载均衡服务器再根据特定的策略将请求转发到真实的服务器,如LVS.

LVS有三种IP负载均衡技术:VS/NAT,VS/DR,VS/TUN。

VS/NAT:通过网络地址转换将内部地址转化为网络上的可用的外部地址。

VS/DR:利用大多数网络服务的非对称特点,负载均衡器只负责将请求调度到不同的服务器,服务器将应答直接返回给客户端,而不需要经过负载均衡器,其极大的提高整个集群系统的吞吐量。

VS/TUN:通过IP隧道实现虚拟服务器,将请求报文封装动态地转发给后端服务器,响应报文从后端服务器直接返回给客户。因请求报文较短而响应报文包含大量的数据,可以大大降低负载均衡器的压力。

posted @ 2015-10-28 14:21  Jingle Guo  阅读(410)  评论(0编辑  收藏  举报