LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能。
使用LVS需要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好的可靠性,可扩展性和可操作性,从而以低廉的成本实现最优的服务性能。
作用:提供一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载带宽、增加吞吐量,加强网络数据处理能力、提高网络的灵活性和可用性。
1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验。
2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
3)7*24小时的服务保证,任意一个或多个设备节点设备宕机,不能影响到业务。在负载均衡集群中,所有计算机节点都应该提供相同的服务,集群负载均衡获取所有对该服务的如站请求。
LVS集群系统由三部分组成:最前端的负载均衡层(Load Balancer)、中间的服务器群组层(Server Array)、最底层的数据存储共享层(Shared Storage)。
负载均衡层:位于整个集群最前端,由一台或多台负载调度器(Director Server)组成,LVS模块就安装在负载调度器上,其主要作用类似于路由器,具有完成LVS功能所设定的路由表,从而把用户的请求发送到服务器群组层的 应用服务器(Real Server)上。
服务器群组层:由一组实际运行应用服务的机器组成,Real Server可以是Web服务器、Mail服务器、FTP服务器、DNS服务器的一个或多个,每个Real Server之间通过高速LAN或分部不同区域的WAN连接起来。实际环境中,Director Server也可以同时兼任Real Server角色。
共享存储层:为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上一般由磁盘阵列设备组成。为了内容的一致性,一般可通过NFS共享存储,也支持GFS、OCFS2等文件系统。
通过网络地址转换的方法来实现调度。
首先调度器(LB)接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),则真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
注意:
请求的目的IP为VIP;
NAT模式下我们需要把RS的默认路由设置为LB服务器。
调度过程IP包详细图:
原理图简述:
NAT模式优缺点:
采用NAT模式时,由于请求和响应报文必须通过调度器地址重写,当客户请求过多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文通过IP隧道转发到真实服务器。真实服务器将响应处理后的数据直接返回给客户端。即调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍。
注意:RS节点服务器需要在本地回环接口配置VIP。
VS/TUN调度过程IP包详细图:
原理图过程简述:
TUN模式优缺点:
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
DR模式是互联网使用比较多的一种模式。
DR模式调度过程IP包详细图:
DR模式原理过程简述:
DR模式优缺点:
1、通过在调度器LB上修改数据包的目的MAC地址实现转发,源地址仍然是CIP,目的地址仍然是VIP地址。
2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此并发访问量大时使用效率很高(和NAT模式比)。
3、DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里面。
4、RS主机需要绑定VIP地址在LO接口上,并且需要配置ARP抑制。
5、RS节点的默认网关不需要配置成LB,而是直接配置为上级路由的网关,能让RS直接和用户网络互通即可。
6、由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。
Lvs的调度算法决定了如何在集群节点之间分布工作负荷。当director调度器收到来自客户端访问VIP的集群服务的入站请求时,director调度器必须决定哪个集群节点应该处理请求。
Director调度器用的调度方法基本分为两类:
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr
rr:轮询算法,它将请求依次分配给不同的rs节点,也就是RS节点中均摊分配。这种算法简单,但只适合于RS所有节点处理性能接近的情况。
wrr:加权轮训调度,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
dh:目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得所需RS。
sh:源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。
wlc:加权最小连接数调度,假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS
lc:最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。
lblc:基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。
a.基本轮询调度rr
b.加权最小连接调度wlc
c.加权轮询调度wrc
参考:http://www.it165.net/admin/html/201401/2248.html
更多LVS知识参考官网:
http://www.linuxvirtualserver.org/zh/lvs1.html 项目介绍
http://www.linuxvirtualserver.org/zh/lvs2.html 体系结构
http://www.linuxvirtualserver.org/zh/lvs3.html 工作模式
http://www.linuxvirtualserver.org/zh/lvs4.html 算法调度