必威体育Betway必威体育官网
当前位置:首页 > IT技术

LVS

时间:2019-06-21 01:45:16来源:IT技术作者:seo实验室小编阅读:76次「手机版」
 

lvs

简述

linux虚拟服务器linux virtual Server,LVS)是一个虚拟的服务器集群系统,用于实现负载平衡。项目在1998年5月由章文嵩成立,是国内最早出现的自由软件项目之一,目前已经是Linux内核的一部分。

工作原理

IP负载

LVS采用了IP负载均衡技术(效率最高)来实现虚拟网络服务,而在IP负载均衡技术中,主要有三种实现方式:

NAT

网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术,最初是作为一种解决IPv4地址短缺而提出的解决方案

NAPT(网络地址端口转换)是最常用的NAT,现在几乎每一个家庭的路由器都是采用这一方案,所有设备共享同一个公网IP。NAT还可以用来实现负载均衡,重定向数据包到其他服务器。

image.png | center | 389x332

NAT的配置如下表所示,所有到IP地址为202.103.106.5和端口为80的流量都被负载均衡地调度的真实服务器172.16.0.2:80和 172.16.0.3:8000上。

代理ip地址 Port 真实地址 Port
202.103.106.5 80 172.16.0.2 80
172.16.0.3 8000

访问Web服务的报文可能包含如下信息:

SOURCE 202.100.1.2:3456 DEST 202.103.106.5:80

负载均衡器从调度列表中选出一台服务器,例如是172.16.0.3:8000。该报文会被改写为如下地址,并将它发送给选出的服务器。

SOURCE 202.100.1.2:3456 DEST 172.16.0.3:8000

从服务器返回到调度器的响应报文如下:

SOURCE 172.16.0.3:8000 DEST 202.100.1.2:3456

响应报文的源地址会被改写为虚拟服务的地址,再将报文发送给客户:

SOURCE 202.103.106.5:80 DEST 202.100.1.2:3456

这样,无论是172.16.0.2还是172.16.0.3,其真实IP对用户都是透明的,从而实现反向代理的目的。

优点:

  • 真实服务器可以运行任何支持TCP/IP协议操作系统
  • 真实服务器可以使用私有网络地址(如192.168.1.1),只有负载均衡器需要一个公网IP供用户访问

缺点:

  • 可伸缩性容易受限,真实服务器节点增多时,负载均衡器可能会成为系统瓶颈,因为所有数据包都要通过负载均衡器修改

TUN

IP隧道(IP tunneling,缩写为IP TUN)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技 术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。

负载均衡器收到用户请求后,对报文进行封装,转发给真实服务器;真实服务器收到报文后,进行解封,并处理请求,根据路由表将响应报文直接返回用户,而无需经过负载均衡器中转处理。

image.png | center | 691x659

这里需要注意的是,根据默认的TCP/ip协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯定也为VIP,所以响应报文的源地址仍为负载均衡器的IP地址,而非真实服务器地址。

优点:

  • 因为负载均衡器只负责将用户请求调度到不同的后端服务器,后端服务器会将响应数据直接返回到用户,所以TUN的方式可以处理更多的请求,有更高的吞吐量。

缺点:

  • 所有服务器均需要支持IP隧道协议。

DR

直接路由(Direct Route,缩写为DR),与IP隧道的方式类似,负载均衡器只负责请求调度,而后端服务器直接将响应返回给客户,但具体实现有所不同。负载均衡器和后端服务器需要在同一局域网中,属于同一物理段。

image.png | center | 691x661

负载均衡器收到用户请求后,根据负载情况动态选择一台服务器,不修改也不封装IP数据报,而是将数据帧的MAC地址修改为所选服务器的MAC地址。因为是直接通过数据链路层进行转发,而未经网络层处理,响应报文的源地址仍然为VIP,所以响应报文的源地址仍为负载均衡器的IP地址,而非真实服务器地址。

优点:

  • 同TUN的方式一样,DR可以处理更多的请求,有更高的吞吐量。

缺点:

  • 要求负载均衡器和后端服务器处于同一物理网段,不做ARP(地址解析协议)响应,直接在数据链路层寻址,也就是说必须要在同一局域网内。

调度算法

IP负载技术解决了负载均衡服务器与后端服务器之间的连接问题,而调度算法则解决了如何选择后端服务器的问题。LVS已经实现了以下八种调度算法:

  • 轮询(Round-Robin):依次调度不同的服务器,算法实现简洁,无需记录当前所有连接状态,是一种无状态调度。

  • 加权轮询(Weighted Round-Robin):在轮询的基础上为各个服务器设置权值,可以解决服务器性能不一致的问题,性能好的服务器权值较大,处理更多的请求。

  • 最小连接least-Connection):把新的连接请求分配到当前连接数最小的服务器,需要记录当前所有连接状态,是一种动态调度算法。

  • 加权最小连接(Weighted Least-Connection):在最小连接的基础上为各个服务器设置权值,不同的权值代表服务器相应的处理性能。

  • 基于局部性最小连接locality-based Least Connections,LBLC):根据请求报文的目的IP地址找出最近使用过的服务器,如果该服务器可用并且没有超出负载,就将请求发送到该服务器,从而提高各台服务器的访问局部性和主存命中率;如果该服务器已经超出负载,则使用“最小连接”的方式重新选择一个可用的服务器。

  • 带复制的基于局部性最小连接(Locality-Based Least Connections with Replication,LBLCR):基于LBLC调度算法,所不同的是,LBLCR维护从一个目的IP地址到一组服务器的映射,按照“最小连接”原则从服务器组中选出一台服务器。

  • 目的地址散列(Destination Hashing):通过一个散列(Hash)函数将一个目的IP地址映射到一台服务器,是一种静态映射算法。

  • 源地址散列(Source Hashing):与目的地址散列相反,它根据源IP地址映射到一台服务器。

参考资料

  1. Linux虚拟服务器
  2. 网络地址转换
  3. The Linux Virtual Server Project

相关阅读

LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

一、LVS简介LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块

分享到:

栏目导航

推荐阅读

热门阅读