一、网页打开链路过程

客户通过本地设置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【赵班长】

二、服务器架构

C/S与B/S架构

C/S架构:微信、qq等,客户端的数据都是直接从服务器加载过来的

B/S架构:现有的绝大多数电商平台

三、流量转发过程

客户访问资源过程:

网络层面:客户通过DNS访问资源,经过CDN加速,目的是使不同区域的客户尽量都以相同的速度访问资源

企业内部:CDN进入企业内部的VIP上,一般公司会把VIP强制到路由器上,路由器通过OSPF协议走等价路由(例一致性哈西算法),通过路由协议分发到负载均衡层来分担压力。负载均衡层分为4层负载均衡和7层负载均衡,LVS就是4层负载均衡,且LVS往往需要部署高可用(HA)来解决调度节点(均衡器)的单点问题。但是4层负载均衡无法制定分流策略,比如重定向等等,此时就要用到7层负载均衡,因为客户发起的往往是七层应用请求(http),最终是要到达七层(应用层)来进行处理

四、LVS简介

1.LVS介绍

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

2.LVS功能与特点

LVS主要用于多服务器负载均衡:

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

3.LVS 的组成及作用

LVS主要包括两部分程序:ipvs 和 ipvsadm。

  • ipvs(ip virtual server):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或Real Server

真实服务器,提供服务的服务器

VIP

虚拟IP地址,客户端访问集群的地址

RIP

集群所提供应用程序的地址(HTTP,FTP)

DIP

调度器的真实地址

5.LVS的类型

LVS-NAT

通过修改请求报文的目标地址为根据调度算法所挑选出的某RS的RIP来进行转发。

架构特性:

(1)  Rs应该使用私有地址,即RIP应该为私有地址,各RS的网关必须执行DIP

(2)  请求报文和响应报文都经由Directory转发;调度器作为所有服务器节点网关,即作为客户端的访问入口,也是各节点回应客户端的访问出口。

(3)  支持端口映射

(4)  RS可以使用任意类型的OS

(5)  RS的RIP必须与Directory的DIP在同一网络,中间不需要路由器
NAT模型优缺点:

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

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

请求和响应图解说明:

(1)  客户端访问集群的VIP地址,请求web服务。(请求报文:源地址为CIP,目标地址为VIP)

(2)  调度器收到客户端的请求报文,会修改请求报文中的目标地址(VIP)为RIP,并且将请求根据相应的调度算法送往后端web服务器。(请求报文:源地址CIP,目标地址为RIP)

(3)  Web服务器收到请求,检查报文是访问自己的,并且自己也提供web服务,就会响应这个请求报文;并且发送给调度器(响应报文,源地址RIP,目标地址CIP)

(4)  调度器收到web服务器的响应报文,会根据自己内部的追踪机制,判断出用户访问的是VIP,这个时候会修改源地址为VIP地址响应客户端请求。(响应报文:源地址VIP,目标地址CIP)

LVS-TUN

不修改请求报文IP首部,而是通过IP隧道机制在原有的IP报文之外在封闭IP首部,经由互联网把请求报文交给选定的RS,主要实现异地容灾

架构特性:

(1)  RIP,DIP,VIP都是公网地址

(2)  RS的网关不能,也不可能指向DIP

(3)  请求报文由Directory分发,但响应报文直接由RS响应给client

(4)  不支持端口映射

(5)  RS的OS必须得支持IP隧道

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

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

请求和响应图解说明:

(1)用户发送请求到director的VIP请求服务。注意:此VIP地址在互联网上是唯一可达地址。

(2)当用户请求到达director的时候,根据调度算法选择一台RS进行转发,但是这个时候发送的报文,目标地址不能是RIP,如果是RIP接收请求,那么就是DIP响应CIP的请求,而不是VIP,这个时候就需要使用隧道(tun)了,使用隧道封装两个IP首部,转发的报文为源CIP目标VIP,但是在IP首部外还会添加一个IP首部,目标地址是RIP。

(3)当RS接收到数据报后,看到外层的IP首部,目标地址是自己,就会拆开封装,这个时候就会发现,还有一个IP首部,首部内容为CIP请求自己的VIP,这个时候由于自己有VIP地址,所以就会响应这个请求给CIP。(响应报文:源地址VIP,目标地址CIP)

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的loopbackdevice,是因为loopback device是服务器本地使用的网络接口,对外是不可见的,不会跟LVS的ip冲突。

②、RS处理数据包完成后,将应答直接返回给客户端(源ip为VIP,目标ip为CIP)。回复数据报不在经过调度器。因此,如果对外提供LVS负载均衡服务,则RS需要连上互联网才能将应答包返回给客户端。不过,RS最好为带公网IP的服务器,这样可以不经过网关直接回应客户,如果多个RS使用了同一网关出口,网关会成为LVS架构的瓶颈,会大大降低LVS的性能。

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

7.LVS 负载均衡的三种工作模式

群集的负载调度技术,可基于 IP、端口、内容等进行分发,其中基于 IP 的负载均衡是效率最高的。基于 IP 的负载均衡模式,常见的有地址转换(NAT)、IP 隧道(TUN)和直接路由(DR)三种工作模式。

地址转换:Network Address Translation,简称:NAT 模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,作为客户机的访问入口,也是各节点回应客户机的访问出口,服务器节点使用私有 IP 地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。

8.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,从不队列调度算法采用两速模型。当有空闲服务器可用时,请求会发送到空闲服务器,而不是等待快速响应的服务器。如果没有可用的空闲服务器,则请求将被发送到服务器,以使其预期延迟最小化(最短预期延迟调度算法)。

LVS负载均衡之流量转发过程、lvs简介相关推荐

  1. LVS负载均衡详解(一)lvs的定义、组成、相关术语+3种工作模式+10种调度算法

    文章目录 lvs是什么 lvs的基本工作原理 lvs的组成 lvs的相关术语 lvs的三种工作模式 基于NAT的LVS模式负载均衡 nat模型的特性 基于DR的LVS负载均衡(直接路由模式) DR模式 ...

  2. 超详细!一文带你了解 LVS 负载均衡集群!

    作者 | JackTian 来源 | 杰哥的IT之旅(ID:Jake_Internet) 前言 如今,在各种互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求也越来越高,单台服务 ...

  3. LVS 负载均衡集群(一)| 超详细!一文带你了解 LVS 负载均衡集群

    前言 如今,在各种互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求也越来越高,单台服务器也将难以无法承担所有的访问需求.当然了,除了使用性价比高的设备和专用负载分流设备外,还有 ...

  4. LVS负载均衡集群介绍(4种工作模式10种调度算法)

    文章目录 集群简介 集群的特点 集群的分类 负载均衡 负载均衡集群技术的实现 负载均衡分类 四层负载均衡(基于IP+端口的负载均衡) 七层的负载均衡(基于虚拟的URL或主机IP的负载均衡) 高可用性集 ...

  5. LVS 负载均衡集群详细介绍

    目录 0 前言 1 什么是 LVS? 3 为什么要用 LVS? 4 LVS 的组成及作用 5 负载均衡的由来及所带来的好处 6 LVS 负载均衡集群的类型 7 DNS / 软硬件负载均衡的类型 8 L ...

  6. LVS负载均衡群集之构建NAT模式

    一.案例概述 LVS负载均衡模式-NAT模式:NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(源地址NAT).如果把NAT的过程稍微变化,就可以 成为负载 ...

  7. LVS负载均衡群集之构建NAT模式,可跟做!!!

    有关于LVS负载均衡群集的相关概念可以参考博文:LVS负载均衡群集详解 一.案例概述 LVS负载均衡模式-NAT模式:NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一 ...

  8. LVS负载均衡--知识详解

    一. 集群的概念 服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台服务器. 集群系统中的单个服务器通常 ...

  9. LVS负载均衡-基础知识梳理

    一. 集群的概念 服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台服务器. 集群系统中的单个服务器通常 ...

最新文章

  1. Android横向伸缩,Android 实现伸缩布局效果示例代码
  2. ubuntu 18.04 LTS 国内源安装docker
  3. boost::pfr::tuple_size_v相关的测试程序
  4. 【Util】 时间天数增加,时间比较。
  5. LeetCode 869. 重新排序得到 2 的幂(排序 全排列)
  6. supervisor监控php进程程序,详解Supervisor进程守护监控(转)
  7. php html5 案例,35个非常好的HTML5+CSS3实例
  8. linux字符界面播放vcd,在Linux中制作VCD
  9. 浅析C#中new、override、virtual关键字的区别
  10. nginx php解析漏洞,关于phpStudy nginx解析漏洞的安全公告
  11. 什么是WAF(lua+nginx)
  12. linux下安装oracle客户端
  13. cad剖切线的快捷键_CAD中剖面线如何画
  14. FPT工具LeapFTP3.1.0.50 的注册码
  15. t480 拆触摸板_ThinkPad T480 如何关闭触摸板?
  16. AXD 汇编调试经验,使用及问题
  17. Excel如何筛选出自己需要的数据
  18. Python之温度转换
  19. ARCGIS 给面文件“挖洞”——Erase的用法
  20. 这些常见的漏洞和修复方法你知道吗?

热门文章

  1. 【Unity新闻】Unity公司招聘流程大公开
  2. 关于Flask通过局域网访问(局域网内任意设备通过ip:port访问)
  3. shell脚本输入参数检验
  4. 竞赛抢答器的设计 金沙滩 单片机 程序
  5. 暑期实习前端面试笔试总结汇总
  6. 使用Modernizr进行兼容性检查
  7. 动态规划-状态转移方程练习
  8. 龙芯2K1000运行linux,对龙芯2K1000处理器的支持补丁已经合并进Linux 5.
  9. Hadoop HDFS 小文件合并
  10. [转载]面向非射频测试工程师的射频测量技术基础