001.LVS简介及算法
Posted itzgr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了001.LVS简介及算法相关的知识,希望对你有一定的参考价值。
一 LVS简介
1.1 LVS介绍
LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能。
使用LVS需要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好的可靠性,可扩展性和可操作性,从而以低廉的成本实现最优的服务性能。
1.2 LVS主要作用
作用:提供一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载带宽、增加吞吐量,加强网络数据处理能力、提高网络的灵活性和可用性。
1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验。
2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
3)7*24小时的服务保证,任意一个或多个设备节点设备宕机,不能影响到业务。在负载均衡集群中,所有计算机节点都应该提供相同的服务,集群负载均衡获取所有对该服务的如站请求。
1.3 LVS体系结构
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等文件系统。
二 LVS工作模式
- VS/NAT模式(Network address translation)
- VS/TUN模式(tunneling)
- DR模式(Direct routing)
2.1 VS/NAT-NAT模式:网络地址转换Virtualserver via Network address translation
通过网络地址转换的方法来实现调度。
首先调度器(LB)接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),则真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
注意:
请求的目的IP为VIP;
NAT模式下我们需要把RS的默认路由设置为LB服务器。
调度过程IP包详细图:
原理图简述:
- 客户端请求数据,目标IP为VIP。
- 请求数据到达LB服务器,LB根据调度算法将目的地址修改为RIP地址及对应端口(此RIP地址根据调度算法得出)并在连接HASH表中记录下这个连接。
- 数据包从LB服务器到达RS服务器webserver,然后webserver进行响应。Webserver的网关必须是LB,然后将数据返回给LB服务器。
- 收到RS的返回后的数据,根据连接HASH表修改源地址VIP,目标地址修改CIP,及对应端口80.然后数据就从LB出发到达客户端。
- 客户端收到的就只能看到VIPDIP信息。
NAT模式优缺点:
- NAT技术请求报文和响应报文都需要经过LB进行地址改写,因此网站访问量比较大的时候LB负载均衡调度器有比较大的瓶颈,一般要求最多只能10-20台节点;
- 只需要在LB上配置一个公网IP地址就可以了;
- 每台内部的节点服务器的网关地址必须是调度器LB的内网地址;
- NAT模式支持对IP地址和端口进行转换,即用户请求的端口和真实服务器的端口可以不一致。
2.2 TUN模式:virtual server via ip tunneling模式
采用NAT模式时,由于请求和响应报文必须通过调度器地址重写,当客户请求过多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文通过IP隧道转发到真实服务器。真实服务器将响应处理后的数据直接返回给客户端。即调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍。
注意:RS节点服务器需要在本地回环接口配置VIP。
VS/TUN调度过程IP包详细图:
原理图过程简述:
- 客户请求数据包,目标地址VIP发送到LB上。
- LB接收到客户请求包,进行IP Tunnel封装,即在原有的包头加上IP Tunnel的包头。
- RS节点服务器根据IP Tunnel包头信息(即逻辑上的隐形隧道,只有LB和RS之间匹配)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。
- 响应处理完毕之后,RS服务器使用RS出公网的线路,将响应数据包发送给客户端,源IP地址依旧为VIP地址。
TUN模式优缺点:
- VS/TUN模式和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址。
- 将客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。
- 响应报文直接通过RS的外网地址发送给客户不用经过LB服务器。
2.3 DR模式:直接路由模式,Virtual server via direct routing
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
DR模式是互联网使用比较多的一种模式。
DR模式调度过程IP包详细图:
DR模式原理过程简述:
- 客户请求数据包,目标地址VIP发送到LB上。
- LB根据各个真实服务器的负载情况,连接数多少等,动态地选择一台服务器,不修改目标IP地址和目标端口,也不封装IP报文,而是将请求报文的数据帧的目标MAC地址改为真实服务器的MAC地址。
- 将修改的数据帧在服务器组的局域网上发送,因为数据帧的MAC地址是真实服务器的MAC地址,并且在同一个局域网。那么根据局域网的通讯原理,RS是一定能够收到由LB发出的数据包。
- 真实服务器接收到请求数据包,其IP包头的目标IP是VIP(RS的lo接口也必须配置此IP),处理之后直接将响应数据包通过自身的网络发送至客户,源IP地址为VIP。
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相同的端口提供服务。
三 调度算法
3.1 算法简介
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,并以它作为下一次分配的首先考虑。
3.2 调度算法常用场景
-
一般的网络服务,如http,mail,mysql等常用的LVS调度算法为:
a.基本轮询调度rr
b.加权最小连接调度wlc
c.加权轮询调度wrc
- 基于局部性的最小连接lblc和带复制的给予局部性最小连接lblcr主要适用于web cache和DB cache
- 源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,可以保证整个系统的出入口唯一。
参考: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 算法调度
以上是关于001.LVS简介及算法的主要内容,如果未能解决你的问题,请参考以下文章