LVS:Linux Virtual Server
LVS是一个虚拟的服务器集群系统,工作在内核的TCP/IP协议栈上,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
一般来说,LVS集群采用三层结构,其主要组成部分为:
1、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户端认为服务是来自一个IP地址上的;
2、服务器池(server pool),是一组真正执行客户端请求的服务器;
3、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
LVS模型及各模型特性:
三种模型:
Network address translation (LVS-NAT):网络地址转换
Direct routing (LVS-DR):直接路由
IP tunneling (LVS-TUN):IP隧道
NAT模型的特性(遵循的基本法则):
1、集群节点必须跟director在同一个IP网络中;
2、RIP通常是私有地址,仅用于各集群节点间的通信;
3、director位于client和real server之间,并负责处理进出的所有通信;
4、real server必须将网关指向DIP;
5、支持端口映射;
6、real server可以使用任意操作系统(OS);
7、较大规模应用场景中,director容易成为系统瓶颈。
DR模型的特性:
1、集群节点必须要跟director在同一个物理网络中;
2、real server可以使用公网地址,实现便捷的远程管理和监控;
3、director仅负责处理入站请求,响应报文则由real server直接发往客户端;
4、real server不能将网关指向DIP;
5、不支持端口映射;
6、大多数的操作系统(OS)都可以用在real server上(需能隐藏VIP);
7、一个LVS-DR director可以比LVS-NAT处理更多的real server。
TUN模型的特性:
1、集群节点可以跨越Internet;
2、real server的RIP必须是公网地址;
3、director仅负责处理入站请求,响应报文则由real server直接发往客户端;
4、real server不能将网关指向DIP;
5、只有支持隧道功能的操作系统(OS)才能用于real server;
6、不支持端口映射。
LVS的十种调度算法:
静态调度方法:
RR:Round Robin,轮询
WRR:Weighted Round Robin,加权轮询
SH:Source Hashing,源地址Hash;实现会话绑定(session affinity)
根据客户端的来源,同一个客户端IP的请求一定会发往跟第一次请求相同的real server上;
如果可以实现会话共享(session sharing)就不需要使用SH调度机制。
DH:Destination Hashing,目标地址Hash;
将同一个客户端IP地址的请求发送给同一个real server;
类似于SH,应用场景不同,常用于缓存服务器的场景中;
不考虑cache连接数。
动态调度方法:
LC:Least Connection,最少连接
计算方法:active*256+inactive,计算real server大小进行选择;
充分考虑每个服务器当前连接数的状况,并挑选一个最空闲(最少连接)的real server进行传送。
WLC:Weighted Least Connection,加权最少连接
计算方法:(active*256+inactive)/weight;选择跟LC一样。
SED:Shortest Expected Delay,最短期望延迟
计算方法:(active+1)*256/weight;改进的WLC。
NQ:Never Queue,永不排队
先每台real server发送一个请求(按权重发送),再进行计算;改进的SED。
LBLC:Locality Based Least Connection,基于本地的最少连接
实现目标跟DH调度方法一样(动态DH),但需要考虑cache连接数,主要用于cache 集群系统。
LBLCR:Locality Based Least Connection with Replication Scheduling,基于本地带复制功能的最少连接(缓存复制机制),主要用于cache 集群系统。