负载均衡

负载均衡故名思议,是把服务的并发请求均衡负载到后端多个具有相同能力的服务进行处理分担.以廉价有效透明的方式扩展网络设备或服务的带宽,增加吞吐量,增强服务的整体处理能力,提供服务的灵活性和可用性。

两个含义:

1.大量的并发访问或者数据流量分担到多台节点设备上分别处理,减少用户等待响应时间.如:WEB集群。

2.单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高.


 

 负载均衡调度算法:负载均衡设备(包括虚拟设备或者相关软件)在执行负载均衡调度,选择具体处理的后端服务的时候使用调度和分发逻辑。
流行和常用的负载均衡算法包括:
1.轮询算法;以依次轮叫的方式依次将请求调度不同的后端服务(Real Server)。算法的优点是其简洁性,无状态。算法简单表示为:i=(i+1) mod n

 
2.Hash算法;一般是对请求报文中的某项数据(key,一般常用客户端来源IP)计算Hash值,然后按机器数量(n)取模。idx=Hash(key)%n
key选择常用实践用法:
1.请求时间或者随时数:简单,具有一定分散性,但不稳定,一般用于要求不高的负载均衡场景。
2.来源IP:简单。如果客户的分布比较广,这种方式分散性较好。但如果较多的客户请求来源于同一IP(公司网络通过路由器上网),分散效果较差。大多数负载均衡设备都支持这种算法,nginx和LVS等软件也支持。

 
3.一致性Hash算法;常用于分布式缓存定位,但同时也可以在系统或者程序中用于负载均衡,该算法的意义在于分散负载和快速定位。
算法逻辑:首先求出服务器(节点)的哈希值,并将其配置到0~2^32的圆上。然后用同样的方法求出存储数的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查找到数据保存到找到的第一个服务器上。如果超过0~2^32仍然找不到服务器,就会保存到第一台服务器上。(1个实体节点可以虚拟N个虚拟节点如(160,200)让节点更加均匀分布在环上,并非负载均衡设备和系统软件可以使用这些算法,实践开发中如分表,缓存定位都有较多的应用场景)。

 
4.Session(一般用户Web):也叫粘性模式,严格的说这不是负载均衡算法,只能是负载均衡算法扩展补充,转用于基于会话的请求。一般是结合轮询等其他算法一起使用。
特点:解决web集群会话问题最多简单实用的方案,采用多播复制Session或采用分布式缓存。
5.最少连接或者连接数:调度设备或者服务记录后端服务器接受请求的计数,每次请求总是发给计数最小的服务器处理。
问题:客户端每次请求连接持续时间不均,部分后端服务器压力大。轮询或者Hash等静态调度算法无法解决该问题。
适用场景:适合长时处理的请求服务如FTP,云存储服务等。
最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务的负载情况。

 
6.最大空闲;
7.平均最快响应;
8.最少流量。
二。负载均衡应用模式
负载均衡模式主要是在整体方案中选择从服务网络的那个层次或者那个产品来实现负载均衡方案。
1.RP-DNS:利用DNS服务器支持同一域名配置多个独立IP指向,然后轮询解析指向IP实现多次访问的调度和分发,实现负载均衡。
特点:
    i.负载均衡实现与后端服务完全没有关系,有DNS在本地解析指向实现轮询调度。
   ii.DNS服务无法检测到后端服务是否正常,在TTL失效前,会一直指向失效的服务器,这就要求在实践生成中,必须解决后端服务器的高可用问题。
  iii.一般第三方DNS服务提供商都支持该功能。但如果更新频率高或附带更新逻辑,一般会在系统内自建DNS服务,然后在注册为公用DNS服务。
2.反向代理:是接受internet上用户的请求,转发给内部的多台服务器处理,完成后转发后端服务的返回给对应的用户。
 优点:网络,设备和程序都是透明,建设简单,能力较强,成本低廉,效率较好。
 缺点:完全软实现,性能依赖代理软件节点。当并发量达到一定程度,代理服务节点是系统的瓶颈。
适用场景:中小型Web应用的负载均衡和高可用。
3.IP转换:一般是在网络的IP层实现,通过报文改写的方式实现VIP到多个内部IP的转发调度,以达到负载均衡的效果。
特点:网络层方案,效率较高稳定性较好,可与操作系统内核结合;工业级模式和方案;大部分商业设备和产品都是以该方式为主;LVS的基本原理也类同。

4.IP转换-LVS:是工业级的负载平衡调度解决方案,也是目前业界最流行的软件方式实现负载均衡的模式之一,利用IP转发的原理实现大多数有商业产品实现的能力,并做了部分优化,主要有三个模式应用。

LVS性能:LVS服务器集群系统具有良好的伸缩性,可支持几百万上并发连接,配置100M网卡,采用VS/TUN或VS/DR调度技术,集群系统的吞吐量可高达1Gbits/s,如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s.
 4.1 通过NAT实现虚拟服务器(VS/NAT):
   优点:可以运行任何支持TCP/IP的操作系统,只需要配置LVS服务VIP,无需配置Real Server,配置简单;
   缺点:LVS对请求和回复报文修改报文头,所有请求和回复都通过LVS服务,很容易成为瓶颈。

 
 4.2 通过IP隧道实现虚拟服务器(VS/TUN)
     VS/TUN技术对服务器要求:LVS服务器需要与所有Real Server建立VPN网络;可以实现端口转发;请求报文通过LVS,由LVS对原始报文进行再次封装后转发给后端服务器;响应报文直接返回客户端,无需通过LVS封装。

 
 4.3 通过直接路由实现虚拟服务器(VS/DR):利用大多数Internet服务的非对称特点,负载调度中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。

相关推荐