LVS负载均衡全解析

一、网页打开链路过程

  客户通过本地设置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 值相等的不同路由路径。

二、服务器架构

C/S与B/S架构,如图:
在这里插入图片描述

  • C/S架构:微信、qq等,客户端的数据都是直接从服务端加载过来的
  • B/S架构:现有的绝大多数电商平台

三、流量转发过程

客户访问资源过程如下:

网络层面(外部访问):客户访问资源,经过CDN加速,来达到各个区域内的客户都能以基本相同的速度访问想要的资源

企业内部服务器:进来的数据流通过路由器进入企业内部服务器 ,往往需要先经过负载均衡层处理来分担单个服务器的压力(因为现在数据量太过庞大,单点远远无法满足需求),负载均衡层包括四层负载均衡与七层负载均衡,LVS就是四层负载均衡,但是四层无法定制分流策略,比如重定向等,这些就要交给七层负载均衡来处理,因为客户发起的往往是七层应用请求(http),最终是要到达七层(应用层)来进行处理

同时,LVS往往需要部署高可用(HA)来解决调度节点(均衡器)的单点问题

四、关于LVS

1、LVS简介

 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。

在这里插入图片描述

2、LVS功能与特点

LVS主要用于多服务器的负载均衡:
 ①工作在网络层,可实现高性能、高可用的服务器集群技术
 ②廉价,可把许多低性能的服务器组合在一起形成一个超级服务器
 ③易用,配置简单,且有多种负载均衡的方法
 ④稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果
 ⑤可扩展性好

3、LVS的组成及作用

LVS的结构主要包括两部分:工作在内核空间的IPVS模块ipvs 和 工作在用户空间的ipvsadm管理工具ipvsadm

  ipvs(ip virtual):LVS 是基于内核态的 netfilter 框架实现的 IPVS 功能,工作在内核空间。用户配置 VIP 等相关信息并传递到 IPVS 就需要用到 ipvsadm 工具。

  ipvsadm:ipvsadm 是 LVS 用户空间的配套工具,可以实现 VIP 和 RS 的增删改查功能,是基于 netlink 或 raw socket 方式与内核 LVS 进行通信的,如果 LVS 类比于 netfilter,那 ipvsadm 就是类似 iptables 工具的地位。

4、Lvs常用术语说明

术语解释
load balancer/director负载调度器
RS真实提供服务的服务器
VIP虚拟ip地址,客户端访问集群的地址
RIP集群提供应该程序的地址(HTTP、FTP)
DIP调度器的真实地址

5、LVS基本原理

LVS 基于 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 负载均衡还包括三种工作模式,且每种模式工作原理都有所不同,适用于不同应用场景,其最终目的都是能实现均衡的流量调度和良好的扩展性。

6、基于三种工作模式的LVS负载均衡解析

1、NAT模式

NAT(Network Address Translation)即网络地址转换,其作用是通过数据报头的修改,使得位于企业内部的私有IP地址可以访问外网,以及外部用用户可以访问位于公司内部的私有IP主机。VS/NAT工作模式拓扑结构如图2所示,LVS负载调度器可以使用两块网卡配置不同的IP地址,eth0设置为私钥IP与内部网络通过交换设备相互连接,eth1设备为外网IP与外部网络联通。
在这里插入图片描述

 第一步,用户通过互联网DNS服务器解析到公司负载均衡设备上面的外网地址,相对于真实服务器而言,LVS外网IP又称VIP(Virtual IP Address),用户通过访问VIP,即可连接后端的真实服务器(Real Server),而这一切对用户而言都是透明的,用户以为自己访问的就是真实服务器,但他并不知道自己访问的VIP仅仅是一个调度器,也不清楚后端的真实服务器到底在哪里、有多少真实服务器。
 第二步,用户将请求发送至124.126.147.168,此时LVS将根据预设的算法选择后端的一台真实服务器(192.168.0.1~192.168.0.3),将数据请求包转发给真实服务器,并且在转发之前LVS会修改数据包中的目标地址以及目标端口,目标地址与目标端口将被修改为选出的真实服务器IP地址以及相应的端口。
 第三步,真实的服务器将响应数据包返回给LVS调度器,调度器在得到响应的数据包后会将源地址和源端口修改为VIP及调度器相应的端口,修改完成后,由调度器将响应数据包发送回终端用户,另外,由于LVS调度器有一个连接Hash表,该表中会记录连接请求及转发信息,当同一个连接的下一个数据包发送给调度器时,从该Hash表中可以直接找到之前的连接记录,并根据记录信息选出相同的真实服务器及端口信息。
NAT模型优缺点:

优点:节点服务器使用私有IP地址,与负载调度器位于同一个物理网络,安全性比DR模式和TUN模式要高。

缺点:调度器位于客户端和集群节点之间,并负责处理进出的所有通信;(压力大的根本原因)大规模应用场景中,调度器容易成为系统瓶颈。

2、TUN模式

在LVS(NAT)模式的集群环境中,由于所有的数据请求及响应的数据包都需要经过LVS调度器转发,如果后端服务器的数量大于10台,则调度器就会成为整个集群环境的瓶颈。我们知道,数据请求包往往远小于响应数据包的大小。因为响应数据包中包含有客户需要的具体数据,所以LVS(TUN)的思路就是将请求与响应数据分离,让调度器仅处理数据请求,而让真实服务器响应数据包直接返回给客户端。VS/TUN工作模式拓扑结构如图所示。
在这里插入图片描述

其中,IP隧道(IP tunning)是一种数据包封装技术,它可以将原始数据包封装并添加新的包头(内容包括新的源地址及端口、目标地址及端口),从而实现将一个目标为调度器的VIP地址的数据包封装,通过隧道转发给后端的真实服务器(Real Server),通过将客户端发往调度器的原始数据包封装,并在其基础上添加新的数据包头(修改目标地址为调度器选择出来的真实服务器的IP地址及对应端口),LVS(TUN)模式要求真实服务器可以直接与外部网络连接,真实服务器在收到请求数据包后直接给客户端主机响应数据。

优点:实现了异地容灾,避免了一个机房故障导致网站无法访问。

缺点:RS配置复杂(IPIP模块等)

3、DR模式

在LVS(TUN)模式下,由于需要在LVS调度器与真实服务器之间创建隧道连接,这同样会增加服务器的负担。与LVS(TUN)类似,DR模式也叫直接路由模式,其体系结构如图所示
在这里插入图片描述

该模式中LVS依然仅承担数据的入站请求以及根据算法选出合理的真实服务器,最终由后端真实服务器负责将响应数据包发送返回给客户端。与隧道模式不同的是,直接路由模式(DR模式)要求调度器与后端服务器必须在同一个局域网内,VIP地址需要在调度器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度器的VIP地址,回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在的。由于多台计算机都设置了同样一个VIP地址,所以在直接路由模式中要求调度器的VIP地址是对外可见的,客户端需要将请求数据包发送到调度器主机,而所有的真实服务器的VIP地址必须配置在Non-ARP的网络设备上,也就是该网络设备并不会向外广播自己的MAC及对应的IP地址,真实服务器的VIP对外界是不可见的,但真实服务器却可以接受目标地址VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址。调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器。整个过程中,真实服务器的VIP不需要对外界可见。

优点:负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端,大大提高了服务器并发能力。

不足:
1、LVS-RS间必须在同一个VLAN。
2、RS上绑定VIP,风险大。

4、三种模式比较

 在LVS的三种工作模式中,DR模式的工作效率最高,它工作在第二层数据链路层,直接通过mac地址转发数据,它仅仅承担转发工作,直接把数据往后甩,最后返回给客户端,性能非常高。

 三种工作模式中NAT性能最差,因为需要进行地址转换,数据流一进一出原路径返回需要经过调度器,隧道模式和DR模式性能最接近,隧道模式需要支持广域网、多个网段,而DR直连模式要求必须要在一个vlan里面。

7、LVS 的十种负载调度算法

①轮询:Round Robin,将收到的访问请求按顺序轮流分配给群集中的各节点真实服务器中,不管服务器实际的连接数和系统负载。

②加权轮询:Weighted Round Robin,根据真实服务器的处理能力轮流分配收到的访问请求,调度器可自动查询各节点的负载情况,并动态跳转其权重,保证处理能力强的服务器承担更多的访问量。

③最少连接:Least Connections,根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数少的节点,如所有服务器节点性能都均衡,可采用这种方式更好的均衡负载。

④加权最少连接:Weighted Least Connections,服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重,权重较高的节点将承担更大的活动连接负载。

⑤基于局部性的最少连接:LBLC,基于局部性的最少连接调度算法用于目标 IP 负载平衡,通常在高速缓存群集中使用。如服务器处于活动状态且处于负载状态,此算法通常会将发往 IP 地址的数据包定向到其服务器。如果服务器超载(其活动连接数大于其权重),并且服务器处于半负载状态,则将加权最少连接服务器分配给该 IP 地址。

⑥复杂的基于局部性的最少连接:LBLCR,具有复杂调度算法的基于位置的最少连接也用于目标IP负载平衡,通常在高速缓存群集中使用。与 LBLC 调度有以下不同:负载平衡器维护从目标到可以为目标提供服务的一组服务器节点的映射。对目标的请求将分配给目标服务器集中的最少连接节点。如果服务器集中的所有节点都超载,则它将拾取群集中的最少连接节点,并将其添加到目标服务器群中。如果在指定时间内未修改服务器集群,则从服务器集群中删除负载最大的节点,以避免高度负载。

⑦目标地址散列调度算法:DH,该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

⑧源地址散列调度算法:SH,与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

⑨最短延迟调度:SED,最短的预期延迟调度算法将网络连接分配给具有最短的预期延迟的服务器。如果将请求发送到第 i 个服务器,则预期的延迟时间为(Ci +1)/ Ui,其中 Ci 是第 i 个服务器上的连接数,而 Ui 是第 i 个服务器的固定服务速率(权重) 。

⑩永不排队调度:NQ,从不队列调度算法采用两速模型。当有空闲服务器可用时,请求会发送到空闲服务器,而不是等待快速响应的服务器。如果没有可用的空闲服务器,则请求将被发送到服务器,以使其预期延迟最小化(最短预期延迟调度算法)。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值