LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统。通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
4种模型概要总结:
1、NAT的特性:
1)RS应该使用私有地址; 2)RS的网关的必须指向DIP; 3)RIP和DIP必须在同一网段内; 4)请求和响应的报文都得经过Director;在高负载场景中,Director很可能成为系统性能瓶颈; 5)支持端口映射; 6)RS可以使用任意支持集群服务的OS;
## 2、DR类型的特性:
1)RS可以使用私有地址;但也可以使用公网地址,此时可以直接通过互联网连入RS以实现配置、监控等;
2)RS的网关一定不能指向DIP;
3)RS跟DR要在同一物理网络内(不能由路由器分隔);
4)请求报文经过DR,但响应报文一定不经过DR
5)不支持端口映射;
6)RS可以使用大多数的操作系统;
3、 TUN类型:IP隧道
1)RIP、DIP、VIP都得是公网地址;
2)RS的网关不会指向也不可能指向DIP;
3)请求报文经过DR,但响应报文一定不经过DR;
4)不支持端口映射;
5)RS的OS必须得支持隧道功能;
4、 FullNat:
1)DR,RS可以不在同一网络内,但它与TUN不同,所有IP报文头部信息变更都在DR上进行,所以性能方面比LVS_NAT更差一些;
2)需要注意配置路由,保证能正常通信;
常用调度算法
静态调度算法:基于算法本身
1)RR 轮询
Round Robin :新的连接请求被轮流分配至各RealServer,优点是该算法无需记录当前所有连接的状态,效率高;但缺点是在RealServer当中如果有性能不均等的情况下,性能差的主机将负载比较大。该算法容易倒致服务器之间负载不均衡;
2)WRR 加权轮询
Weighted RR :优点与RR一样,无需记录所有连接状态;通过设定一定的权重值来分配连接请求;
3)SH 源地址哈希
Source Hashing :通过一个散列函数将去往同一个目的IP的请求映射到一台服务器或链路上。
4)DH 目标地址哈希
Destination Hashing : 通过一个散列函数将来自同一个源IP的请求映射到一台服务器或链路上
动态调度算法:基于算法本身与RS本身的负载情况:
1)LC 最少连接数
Least Connection :根据当前各服务器的连接数来估计服务器的负载情况,把新的连接分配给连接数最小的服务器;负载率=active*256+inactive,值小的优先分配请求;
2)WLC 加权最少连接数
Weighted LC :与LC类似,根据当前各服务器的连接数来估计服务器的负载情况,把新的连接分配给连接数最小的服务器;负载率=(active*256+inactive)/weight,值小的优先分配请求;
3)SED 最短期望延迟
Shortest Expect Delay : 这个算法主要是优化LC的,在服务均在请求少的时候避免负载到一台服务器上做的优化;负载率=(active+1)*256/weight,值小的优先分配请求;
4)NQ 永不排队
Nerver Queue :在负载低时,请求直接分配到空闲服务器上,不会产生请求等待;当服务器都很忙时,将轮询;
5)LBLC 基于本地最少连接
Locality-Based Least Connection :根据请求的目标IP地址找出该目标IP地址最近使用的RealServer,若该Real Server是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。
6)LBLCR 带复制的基于本地最少连接
Replicated and Locality-Based Least Connection :该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。