LVS负载均衡详解(LVS简介、四种工作模式、十种调度算法)以及流量转发过程
时间:2023-01-21 09:30:01
LVS负载平衡详细说明和流量转发过程
- 一、LVS简介及相关术语
-
- 1.LVS简介
- 2.LVS体系结构
- 3.IP负载平衡技术
- 4.LVS常见术语以及下文图中术语
- 二、四种工作模式
-
- 1.DR模式(直接路由模式:Virtual Server via Direct Routing)
- 2.NAT(Network Address Translation)模型
- 3.Full NAT模型
- 4. TUN(IP Tunneling)IP隧道模型
- 三、LVS的基本原理
- 四、网页访问过程
-
- 1.网页打开链路的过程
- 2.服务器架构
- 3.流量转发过程
- 五、十种调度算法
一、LVS简介及相关术语
1.LVS简介
??LVS(Linux Virtual Server)即Linux虚拟服务器是由张文松博士主导的开源负载平衡项目LVS负载的负载平衡技术和Linux操作系统实现高性能、高可用性的服务器集群,具有良好的可靠性、可扩展性和可操作性,以低成本实现最佳服务性能。目前LVS已集成Linux在核心模块中。该项目在Linux基于内核的实现IP系统结构如图1所示,终端互联网用户从外部访问公司的外部负载平衡服务器和终端用户Web将发送请求LVS调度器,调度器决定根据自己的预设算法向后端发送请求Web例如,服务器,轮询算法可以将外部请求平均分发给后端的所有服务器,终端用户可以访问LVS虽然调度器将转发到后端真实服务器,但如果真实服务器连接到相同的存储,提供相同的服务,无论用户访问哪个真实服务器,服务内容都是相同的,整个集群对用户是透明的。最后根据LVS不同的工作模式,真实的服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。
>LVS中文站点:http://zh.linuxvirtualserver.org/
LVS官网:http://www.linuxvirtualserver.org/
2.LVS体系结构
使用LVS安装的服务器集群系统由三部分组成:前端负载平衡层Load Balancer使用中间的服务器组层Server Array使用最底端的数据共享存储层Shared Storage在用户看来,所有的内部应用都是透明的,用户只使用虚拟服务器提供的高性能服务
LVS系统结构如下图所示:
LVS详解各组成部分:
- Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server 由管理服务器组成,LVS安装模块Director Server上,而Director它的主要功能类似于一个包含完成的路由器LVS由功能设置的路由表,通过这些路由表将用户请求分发给用户Server Array层应用服务器(Real Server)上。同时,在Director Server安装正确Real Server监控模块的服务Ldirectord,该模块用于监控每个模块Real Server健康服务。同时,在Director Server安装正确Real Server监控模块的服务Ldirectord,该模块用于监控每个模块Real Server健康的服务状况Real Server不用时把它从LVS去掉路由表,恢复时再加入。
- Server Array层:由实际操作应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS一个或多个服务器和视频服务器,每个Real Server高速之间LAN或分布在各地WAN相连接。在实际应用中,Director Server也可同时兼任Real Server的角色
- Shared Storage层:是为所有Real Server提供共享存储空间和内容一致性的存储区域一般由磁盘阵列设备组成。为了提供内容的一致性,通常可以通过NFS但是网络文件系统共享数据,NFS在繁忙的业务系统中,性能不是很好,此时可以使用集群文件系统,如Red hat的GFS文件系统,oracle提供的OCFS文件系统等。
3.IP负载平衡技术
??基于负载平衡技术有许多实现方案DNS域名轮流分析的方法有基于客户端调度访问的方法、基于应用层系统负载的调度方法和基于IP在这些负载调度算法中,地址调度方法的执行效率最高IP负载平衡技术。
??LVS的IP负载均衡技术是通过的IPVS实现模块,IPVS是LVS集群系统的核心软件主要用于安装Director Server上,同时在Director Server虚拟出一个IP用户必须通过这个虚拟地址IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。首先通过访问请求VIP负载调度器从负载调度器到达Real Server在列表中选择服务节点来响应用户的要求。
??当用户的请求到达负载调度器时,调度器如何将请求发送到提供服务Real Server节点,而Real Server节点如何将数据返回给用户?IPVS实现的关键技术,IPVS实现负载平衡的机制有三种,即NAT、TUN和DR.
4.LVS常见术语和下图中的术语
术语 | 解释 |
---|---|
LB(Load balancer)或director | 负载调度器 |
RS或Real Server | 真实服务器,服务器 |
VIP(Virtual IP) | 虚拟IP客户端访问集群的地址 |
RIP(Real IP) | 集群所提供应用程序的地址(HTTP,FTP) |
DIP(director IP)或(Destination IP) | 调度器的真实地址、目标地址 |
SIP(Source IP) | 源IP地址 |
CIP(Client IP) | 客户端IP |
MAC地址
?MAC地址:英语:Media Access Control Address),直译为媒体访问控制地址,也称为局域网地址(LAN Address),MAC位置,以太网地址(Ethernet Address)或物理地址(Physical Address),用于确认网络设备位置的位置。在OSI在模型中,第三层网络层负责IP第二层数据链路层负责地址MAC位址 。MAC地址用于在网络中识别唯一的网卡。如果一个设备有一个或多个网卡,每个网卡都需要并且会有一个唯一的网卡MAC地址。
MAC地址又称物理地址和硬件地址,由网络设备制造商在网卡上烧录(Network lnterface Card)的EPROM(闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机中以二进制表示,IP地址是32位的,而MAC48位地址。
网络中的每个设备都有一个独特的网络标志,这个地址被称为MAC网络设备制造商生产时,硬件内部写有地址或网卡地址。MAC地址为48位(6字节),通常表示为12个16进制数,每2个16进制数用冒号分开,如08:00:20:0A:8C:6D就是一个MAC地址。
ARP
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
VLAN
VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。
虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点: 网络设备的移动、添加和修改的管理开销减少;可以控制广播活动;可提高网络的安全性。
在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN。
二、四种工作模式
1.DR模式(直接路由模式:Virtual Server via Direct Routing)
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。DR模式是互联网使用比较多的一种模式。
DR模式原理图
DR模式数据传输过程
DR模式原理过程简述:
当客户端请求VIP时,会将请求先发给Director(调度器),调度器发现请求的是一组集群服务,根据调度算法将这一请求转发给RealServer,注意在转发的过程中,仅仅是修改了数据报文中的MAC地址,所以这也是为什么我们要求DR和RS必须在同一个物理网络内,就是为了保证可以通过修改MAC地址而进行数据报文的转发。当RealServer处理请求,响应数据,发送响应数据给客户端,按理说此时的数据包的源IP为RIP,目标IP为CIP,虽然能找到客户端,但是客户端是不收该数据包的,因为并没有请求该RIP ,现在的做法就是进行IP欺骗,即就是修改源 IP 为 VIP,但是不可以将VIP设置在出口网卡上,否则会响应客户端的arp request,造成client/gateway arp table紊乱,以至于整个load balance都不能正常工作。要在lo接口上配置VIP,并将此 VIP 屏蔽,但是出去时候的数据包被路由转换,转换后的 IP不再是 VIP,所以要重新设置路由。
另外关于各服务器网络的配置,首先每个服务有一个独立网卡即可。在DR上将DIP配置eth0上,将VIP配置在网络别名上,这样是为了以后调度器做高可用方便VIP做IP地址飘移。在各RS上同样需要配置好VIP,这样个RS就可以直接响应Client,而不需要再经过DR,但是一个物理网络之内是不允许有多个同名IP的,所以需要修改RS的内核参数,并且将VIP配置在LO上,让其保留VIP但是不允许对外进行广播,这样从RS出去的报文源地址就是VIP,当然这需要从真实的物理网卡出去,所以必须加一条路由,让访问VIP的数据包请求,对其响应的是配置了VIP的网卡,这样响应出去的报文源地址就是VIP,可以被Client接受。
LVS-DR
Diectory在实现转发时不修改请求的IP首部,而是通过直接封装MAC首部完成转发;目标MAC是Directory根据调度方法挑选出某RS的MAC地址。
架构特性:
(1) 保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Directory。ARP地址:将IP地址和物理地址(MAC地址)存在本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源
(2) RS的RIP可以使用私有地址;但也可以使用公网地址,此时可通过互联网上的主机直接对此RS发起管理操作
(3) 请求报文必须经由Directory调度,但响应报文必须不能经由Directory
(4) 各RIP必须与DIP在同一物理网络中
(5) 不支持端口映射
(6) RS可以使用大多数的OS
(7) RS的网关一定不能指向Directory
解决方法:
静态绑定:在前端路由器直接将VIP对应的目标MAC静态配置为Directory的MAC地址
缺点:1、如果路由是运营商提供则没有路由器管理权限,则无法配置
2、如果调度器做了高可用,当主备切换的时候,MAC地址会发生改变。
Arptables:在各RS上,通过arptables规则拒绝其响应对应的ARP广播请求
内核参数:在RS上修改内核参数,并结合地址的配置方式实现拒绝响应对VIP的ARP广播请求;
优点: 负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端,大大提高了服务器并发能力。
不足: 1、LVS-RS间必须在同一个VLAN。
2、RS上绑定VIP,风险大。
请求和响应图解说明:
(1)首先,客户端CIP的请求发送给LVS调度器的VIP。
(2)LVS调度器收到客户端的请求包后,将数据包的MAC地址改成LVS调度器选择的某一台RS的MAC地址,并通过交换机(数据链路层)发送给RS服务器(因为MAC地址是rs服务器,所以,rs可以接收到该数据报。)注意:此时数据包的目的及源ip地址没有发生任何改变。
(3)①、RS的数据链路层收到发送来的数据报文请求后,会从链路层往上传给IP层,此时IP层需要验证请求的目标IP地址。因为包的目标IP(即VIP)并不是像常规数据报那样为RS的本地IP,而仅仅目的MAC地址是RS的。所以,在RS上需要配置一个VIP的loopback device(回环接口),是因为loopback device是服务器本地使用的网络接口,对外是不可见的,不会跟LVS的ip冲突。
②、RS处理数据包完成后,将应答直接返回给客户端(源ip为VIP,目标ip为CIP)。回复数据报不在经过调度器。因此,如果对外提供LVS负载均衡服务,则RS需要连上互联网才能将应答包返回给客户端。不过,RS最好为带公网IP的服务器,这样可以不经过网关直接回应客户,如果多个RS使用了同一网关出口,网关会成为LVS架构的瓶颈,会大大降低LVS的性能。
2.NAT(Network Address Translation)模型
1. 转发流程
- Client发出请求CIP -> VIP
- 请求包到达LVS,经NAT转换为CIP -> RIP
- RS收到请求包,RS回复LVS RIP -> CIP
- LVS修改数据包为 VIP -> CIP
优点:
NAT协议支持端口映射
缺点
-
LVS和RS需要在同一个VLAN,并将LVS的VIP配置为RS的网关
- LVS必须通过NAT将RS回复的包转换为VIP -> CIP,否则回复包会被Client丢弃
- LVS要配置为RS的网关,不然RS的回复包RIP -> CIP可能会从别的路由走掉
-
进出流量都要经过LVS,LVS会成为瓶颈
LVS-NAT
通过修改请求报文的目标地址为根据调度算法所挑选出的某RS的RIP来进行转发。
架构特性:
(1) Rs应该使用私有地址,即RIP应该为私有地址,各RS的网关必须执行DIP
(2) 请求报文和响应报文都经由Directory转发;调度器作为所有服务器节点网关,即作为客户端的访问入口,也是各节点回应客户端的访问出口。
(3) 支持端口映射
(4) RS可以使用任意类型的OS
(5) RS的RIP必须与Directory的DIP在同一网络,中间不需要路由器
请求和响应图解说明:
(1) 客户端访问集群的VIP地址,请求web服务。(请求报文:源地址为CIP,目标地址为VIP)
(2) 调度器收到客户端的请求报文,会修改请求报文中的目标地址(VIP)为RIP,并且将请求根据相应的调度算法送往后端web服务器。(请求报文:源地址CIP,目标地址为RIP)
(3) Web服务器收到请求,检查报文是访问自己的,并且自己也提供web服务,就会响应这个请求报文;并且发送给调度器(响应报文,源地址RIP,目标地址CIP)
(4) 调度器收到web服务器的响应报文,会根据自己内部的追踪机制,判断出用户访问的是VIP,这个时候会修改源地址为VIP地址响应客户端请求。(响应报文:源地址VIP,目标地址CIP)
3.Full NAT模型
地址转换:Network Address Translation,简称:NAT 模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,作为客户机的访问入口,也是各节点回应客户机的访问出口,服务器节点使用私有 IP 地址,与负载调度器位于同一个物理网络,安全性要优于其他方式。
1. 转发流程
- Client发出请求 CIP -> VIP
- LVS收到请求并修改数据包为 VIP -> RIP,然后转发给RS
- RS收到数据包,RS回复LVS RIP -> VIP
- LVS收到RS的回复,并将数据包转换为 VIP -> CIP,然后转发给Client
2. 优点
- LVS和RS不必在同一VLAN,LVS不必是RS的网关
LVS将数据包的源/目的IP都改了,所以RS只要能路由到LVS就行
3. 缺点
- 进出流量都要通过LVS,LVS容易成为瓶颈(同NAT)
- RS不知道CIP
- 数据包到达RS时,SIP已经被LVS改成了VIP,所以看不到
- 可以通过将CIP放到TCP包的Option中传递给RS,RS需要安装toa模块来读Option中的CIP
LVS-FULLNAT
为什么使用fullnat&传统NAT在多路由网络调度缺点
(1)客户端将请求发送给Director请求服务。
(2)Director将请求报文转发给RS,源地址是CIP,目标地址是RIP。
问题来了:响应报文不经由Director
RS收到数据报查看目标地址是自己的就会响应请求,但是源地址为CIP,这个时候由于和Director中间使用了路由器连接,所以网关不是指向Director,如果响应报文不经过Director那么响应客户端请求的就是RS的RIP,而不是VIP。客户端收到响应报文,看到是RIP响应的,但是自己压根没有请求过RIP,所以会直接丢弃数据报。
什么是fullnat?
通过将请求报文的源地址为DIP,目标地址为RIP来实现转发;对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发;
架构特性:
(1) RIP,DIP可以使用私有地址;
(2) RIP和DIP可以不在同一个网络中,且RIP的网关未必需要指向DIP;
(3) 支持端口映射;
(4) RS的OS可以使用任意类型;
(5) 请求报文经由Director,响应报文经由Director;
请求和响应图解:
(1) 客户端将请求发送给Director的VIP请求服务。
(2) Vip通过调度算法,将请求发送给后端的RS,这个时候源地址该为了DIP,目标地址改为了RIP。
(3) RS接收到请求后,由于源地址是DIP,则一定会对DIP进行回应。
(4) Director收到RS的响应后,会修改数据报的源地址为VIP,目标地址为CIP进行响应。
4. TUN(IP Tunneling)IP隧道模型
1. 转发流程
- Client发请求 CIP -> VIP
- LVS收到请求并将其封装一层 DIP -> RIP ( CIP -> VIP) ,然后转发给RS
- RS收到后通过IPIP内核模块解封装,取出 CIP -> VIP 的数据包
- 由于RS配置了VIP,同DR模型
- RS处理完后直接回复 VIP -> CIP
2. 缺点
- RS需要安装IPIP模块
- 请求包增加了一个IP头,多做了一次封包解包
- RS需要配置VIP
3. 优点
- 没有LVS的流量瓶颈问题
- 集群节点可以跨VLAN
LVS-TUN
架构特性:
(1) RIP,DIP,VIP都是公网地址
(2) RS的网关不能,也不可能指向DIP
(3) 请求报文由Directory分发,但响应报文直接由RS响应给client
(4) 不支持端口映射
(5) RS的OS(Operating System)必须得支持IP隧道
**优点:**实现了异地容灾,避免了一个机房故障导致网站无法访问。
**缺点:**RS配置复杂(IPIP模块等)
(1)用户发送请求到director的VIP请求服务。注意:此VIP地址在互联网上是唯一可达地址。
(2)当用户请求到达director的时候,根据调度算法选择一台RS进行转发,这个时候就需要使用隧道(tun)了,使用隧道封装两个IP首部,转发的报文为源CIP目标VIP,但是在IP首部外还会添加一个IP首部,目标地址是RIP。
(3)当RS接收到数据报后,看到外层的IP首部,目标地址是自己,就会拆开封装,这个时候就会发现,还有一个IP首部,首部内容为CIP请求自己的VIP,这个时候由于自己有VIP地址,所以就会响应这个请求给CIP。(响应报文:源地址VIP,目标地址CIP)
三、LVS的基本原理
VS 基于 netfilter 框架,工作在 INPUT 链上,在 INPUT 链上注册 ip_vs_in HOOK 函数,进行 IPVS 相关主流程,详细原理概述如下:
1、 当客户端用户访问 www.baidu.com 网站时,用户访问请求通过层层网络,最终通过交换机进入 LVS 服务器网卡进入内核空间层。
2、 进入PREROUTING后通过查找路由,确定访问目的 VIP 是本机 IP 地址的话,数据包将进入INPUT链中。
3、 因为 IPVS 工作在 INPUT 链上,会根据访问的VIP和端口判断请求是否为 IPVS 服务,是的情况下,则调用注册的IPVS HOOK 函数,进行IPVS相关流程,并强制修改数据包的相关数据,并将数据包发往POSTROUTING链中。
4、 POSTROUTING链收到数据包后,将根据目标 IP 地址服务器,通过路由选路,将数据包最终发送至后端真实服务器中。
上面就是我们所介绍的 LVS 的工作原理,那么 LVS 负载均衡还包括三种工作模式,且每种模式工作原理都有所不同,适用于不同应用场景,其最终目的都是能实现均衡的流量调度和良好的扩展性。
四、网页访问过程
1.网页打开链路过程
客户通过本地设置dns获得hosts文件,dns解析CDN(需要厂家购买的服务或者自研),CDN进入企业内部的VIP上,一般公司会把VIP强制到路由器上,路由器通过OSPF协议走等价路由(例一致性哈西算法),通过路由协议分发到例如LVS调度节点
CDN: Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。简单来说,就是反向代理+缓存。
OSPF协议: OSPF(Open Shortest Path First)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。链路是路由器接口的另一种说法 ,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。
等价路由:为到达同一个目的 IP 或者目的网段存在多条 Cost 值相等的不同路由路径。
运维知识体系:【运维知识体系】-v3.1(赵班长)
2.服务器架构
C/S与B/S架构
3.流量转发过程
客户访问资源过程:
网络层面:客户通过DNS访问资源,经过CDN加速,目的是使不同区域的客户尽量都以相同的速度访问资源
企业内部:CDN进入企业内部的VIP上,一般公司会把VIP强制到路由器上,路由器通过OSPF协议走等价路由(例一致性哈西算法),通过路由协议分发到负载均衡层来分担压力。负载均衡层分为4层负载均衡和7层负载均衡,LVS就是4层负载均衡,且LVS往往需要部署高可用(HA)来解决调度节点(均衡器)的单点问题。但是4层负载均衡无法制定分流策略,比如重定向等等,此时就要用到7层负载均衡,因为客户发起的往往是七层应用请求(http),最终是要到达七层(应用层)来进行处理。
五、十种调度算法
- 轮询:Round Robin,算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。特点是将收到的访问请求按顺序轮流分配给集群中的各节点真实服务器中,不管服务器实际的连接数和系统负载。
- 加权轮询:Weighted Round Robin,算法主要是对轮询算法的一种优化与补充,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A的权值为1,服务器B的权值为2,则调度器调度到服务器B的请求会是服务器A的两倍。权值越高的服务器,处理的请求越多。
- 最少连接:最小连接调度(Least Connections 简称’LC’)算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中断或者超时,其连接数减1。
(集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以比较好地均衡负载。)
- 加权最少连接:(Weight Least Connections 简称’WLC’)算法是最小连接调度的超集,各个服务器相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
5.基于局部性的最少连接。基于局部的最少连接调度(Locality-Based Least Connections 简称’LBLC’)算法是针对请求报文的目标IP地址的 负载均衡调度,目前主要用于Cache集群系统,因为在Cache集群客户请求报文的目标IP地址是变化的。这里假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和Cache命中率,从而提升整个集群系统的处理能力。LBLC调度算法先根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则使用’最少连接’的原则选出一个可用的服务器,将请求发送到服务器。
6.带复制的基于局部性的最少连接:LBLCR,带复制的基于局部性的最少连接(Locality-Based Least Connections with Replication 简称’LBLCR’)算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统,它与LBLC算法不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。按’最小连接’原则从该服务器组中选出一一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按’最小连接’原则从整个集群中选出一台服务器,将该服务器加入到这个服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
7.目标地址散列调度算法:目标地址散列调度(Destination Hashing 简称’DH’)算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。
8.源地址散列调度算法 源地址散列调度(Source Hashing 简称’SH’)算法先根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同,它的算法流程与目标地址散列调度算法的基本相似。
9.最短延迟调度: 最短的期望的延迟调度(Shortest Expected Delay 简称’SED’)算法基于WLC算法。举个例子吧,ABC三台服务器的权重分别为1、2、3 。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用SED算法后会进行一个运算
A:(1+1)/1=2 B:(1+2)/2=3/2 C:(1+3)/3=4/3 就把请求交给得出运算结果最小的服务器。
预期的延迟时间为(Ci +1)/ Ui,其中 Ci 是第 i 个服务器上的连接数,而 Ui 是第 i 个服务器的固定服务速率(权重)
10.最少队列调度: NQ,最少队列调度(Never Queue 简称’NQ’)算法,无需队列。如果有realserver的连接数等于0就直接分配过去,不需要在进行SED运算。