负载均衡( LVS Nginx Haproxy ) 优缺点

LVS:

lvs(linux virtual server):linux虚拟服务器
以下的总结了解来源于官网:http://www.linuxvirtualserver.org/zh/lvs1.html
1.LVS产生的背景
    研究显示Gigabit Ethernet在服务器上很难使得其吞吐速率达到1Gb/s的原因是协议栈TCP/IP和操作系统的低效,以及处理器的低效,
需要对 协议栈 IO 操作系统的调度 更深入的研究,热门的网站会吸引大量的访问流量,网络服务的增长使得用户的请求大量,
低效的服务处理使得交易的金额会大大降低,就像淘宝的双十一,数据的损坏使得商业的损失可能成千上万,这对网络服务的可靠提出了越来越高的要求,
在现在需求方式的不同,web页面的扩展的阶段,实现高可伸缩、高可用的网络需求不断增长,
需求的特点主要是:可伸缩性(可以平滑的扩展,以满足当前的服务性能的要求,客户不受影响)
高可用性(后台的数据或者资源的调度不再是单一的节点,不会因某个节点的软硬件的损坏导致数据的损失,服务的故障,7*24小时的在线服务,客户不受影响)
可管理性(利用统一的接口,或者集群的资源管理器,对集群中的节点当便的管理和配置)
价格的有效性(可理解为单台的节点可能实现的能力是有限的,使用大量的单点节点,统一的结合实现强大的功能,“三个臭皮匠顶一个诸葛亮“的效果
2.服务集群的系统
通过高性能网络或局域互联的服务器集群正成为实现高可用,高可用网络的有效结构,这种耦合的服务器集群系统有以下的优点:
性能:将工作负载通常是大量相互独立的任务,通过一组的服务器分而治之,整体具有很高的性能
性能/价格比:组成的集群的系统的单点计算机是大量的产出,其本身廉价,组合在一起实现了高性能的处理,
可伸缩性:通过平滑的扩展可以使得集群的扩展满足当前的客户的请求,节点的数目可以增长到几千个甚至几万个
高可用性:硬件软件都会实现切换,将故障屏蔽,由在线的节点提供服务,实现高可用
3.Linux Virtual Server项目
针对高可用性,高可伸缩网络服务需求,给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些反复发,
将一组服务器构成一个可伸缩的,高可用的网络服务的虚拟服务器,
一组服务器通过告诉的局域网或者网络实现互联,在前端由一个负载的调度器(Load Balancer) 
负载的调度器将客户的请求转发到真实的服务器上,对客户是透明的,客户不做任何的修改,系统的伸缩性通过在后端加入和删除一个节点(节点在线加入,节点损坏删除)来实现,
由于负载均衡技术是在Linux内核中实现的,我们称之为Linux虚拟服务器(Linux Virtual Server)
3.1 IP虚拟服务器软件IPVS
    在调度器的技术中,IP负载技术效率是最高的,通过网络地址转化(Network Address Translation)将一组服务器构架成一个高性能,高可用的虚拟服务器,
称为VS/NAT技术,
在分析VS/NAT的技术的缺点上,提出了通过IP隧道实现虚拟服务器的方法VA/TUN和通过直接路由实现虚拟服务器的方法VS/DR
  1.virtual Server via Network Address Translation(VS/NAT)
    客户->调度器:请求的数据包经过调度器后,由调度器发出将源地址,目标地址转换为调度器->RS,服务器通过数据回应再次发给调度器转换源,目的IP,再次通过调度器达到客户端,
  2.Virtual Server via IP tuneling(VS/TUN)
    NAT要对请求包的源目的IP进行重写,当客户的请求太多,重写会花费大量的时间,客户请求会延迟,调度器称为瓶颈,
为了解决这个问题,调度器和RS之间搭建IP隧道,客户->调度器(隧道)->RS->直接返回给客户,调度器只处理响应报文,
这样相对NAT而言,TUN的速率明显提高了,集群最大的吞吐量可以提高10倍
  3.Virtual Server via IP Direct Routing(VS/DR)
    DR是通过该写请求报文的MAC地址,将请求发给真实的服务器,而真实的服务器直接将响应返回给客户,
没有IP隧道的开销,要求调度器和真实的服务都有一个网卡在同一个网段上
IPVS的八种调度算法:
    1.轮叫(Round Robin):按顺序分配到集群中RS上,均等对每一个服务器,
优点:无须记录当前的连接状态,是无状态的调度(当服务器的权值为0时表示该服务器不可用),
缺点:不适用处理性能不一的情况,当请求的时间变化较大时,容易导致服务器间负载不均衡
    2.加权轮叫(Weighted Round Robin):根据负载情况分配请求,动态的调整权值
优先:解决服务器间性能不一的情况,权值表示处理能力,比较间单和高效,无须记录状态,无状态连接
缺点:请求的时间变化很大,单纯的加权轮叫依旧会导致服务器间的负载均衡
    3.最少连接(Least Connections):将请求分发到后端的连接最少的服务器上,当系统的性能均差不多的时候,可以较好的均衡负载
优点:能把负载变化大的请求分布平滑到当各个服务器上
缺点:当各个服务器的处理能力不同时,能力强的处理完了请求的连接,能力不好的还在忙于处理各种连接
    4.加权最少连接(Weighted Least Connections):集群中服务器的性能差异比较大,具有较高权值的RS承担比例较大的负载,
    5.基于局部的最少连接(Locality-Based Least Connections):基于IP负载均衡,主要用于Cache集群系统,根据请求的目标IP找到该IP最近使用的服务器,
若存在服务器是可用并没有超载则分配,若不存在或者处于负载教重,则使用连接最少选出一个可用的服务器
优点:LBLC算法主要是针对目标IP地址的负载均衡调度,目前主要用于cache集群系统,在cache集群中客户请求报文的目标IP是变化的,
假设后端的服务器都可以处理任一请求,算法的设计在于服务器的负载基本平衡的情况下,将相同目标ip地址请求调度到同

你可能感兴趣的:(负载均衡( LVS Nginx Haproxy ) 优缺点)