什么是LVS

news2024/9/19 11:09:32

  • 😘作者简介:一名99年运维岗位员工。
  • 👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。
  • 🙏创作不易,动动小手给个点赞加关注吧,有什么意见评论区告诉我,一起学习。

目录

前言

LVS是什么?

负载均衡的原理是什么?

LVS由哪两部分组成的?

与lvs相关的术语

LVS 负载均衡的策略

LVS-NAT模式

LVS-NAT模式的原理

LVS-NAT模型的特性

LVS-DR模式

LVS-DR模式原理

LVS-DR模型的特性

LVS三种负载均衡模式的比较

LVS的负载调度算法

LVS与nginx的区别

lvs的优势(互联网老辛)

nginx与LVS的对比

两者配合使用


前言

        本篇文章介绍什么是LVS,主要从介绍LVS,谈谈什么是负载均衡,LVS的组成、术语以及LVS的模式和特点,以及优缺点。


LVS是什么?

        LVS是一个虚拟的服务器集群系统,在unix系统下实现负载均衡的功能;采用IP负载均衡技术和机遇内容请求分发技术来实现。
LVS采用三层结构,分别是:
        第一层: 负载调度器
        第二层: 服务池
        第三层:共享存储

  • 负载调度器(load balancer/ Director):是整个集群的总代理,它有两个网卡,一个网卡面对访问网站的客户端,一个网卡面对整个集群的内部。负责将客户端的请求发送到一组服务器上执行,而客户也认为服务是来自这台主的。举个生动的例子,集群是个公司,负载调度器就是在外接揽生意,将接揽到的生意分发给后台的真正干活的真正的主机们。当然需要将活按照一定的算法分发下去,让大家都公平的干活。
  • 服务器池(server pool/ Realserver):是一组真正执行客户请求的服务器,可以当做WEB服务器。就是上面例子中的小员工。
  • 共享存储(shared storage):它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。一个公司得有一个后台账目吧,这才能协调。不然客户把钱付给了A,而换B接待客户,因为没有相同的账目。B说客户没付钱,那这样就不是客户体验度的问题了。

负载均衡的原理是什么?

        当客户端发起请求时,请求直接发给Director Server(调度器),这时会根据设定的调度算法,将请求按照算法的规定智能的分发到真正的后台服务器。以达到将压力均摊。
但是我们知道,http的连接时无状态的,假设这样一个场景,我登录某宝买东西,当我看上某款商品时,我将它加入购物车,但是我刷新了一下页面,这时由于负载均衡的原因,调度器又选了新的一台服务器为我提供服务,我刚才的购物车内容全都不见了,这样就会有十分差的用户体验。

所以就还需要一个存储共享,这样就保证了用户请求的数据是一样的

LVS由哪两部分组成的?

LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。

  1. ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
  2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

与lvs相关的术语

  • DS:Director Server。指的是前端负载均衡器节点。
  • RS:Real Server。后端真实的工作服务器。
  • VIP:Virtual IP 向外部直接面向用户请求,作为用户请求的目标的IP地址。
  • DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
  • RIP:Real Server IP,后端服务器的IP地址。
  • CIP:Client IP,访问客户端的IP地址。

LVS 负载均衡的策略

LVS一共有三种工作模式: DR,Tunnel,NAT

主要介绍LVS-DR和LVS-NAT。

LVS-NAT模式

LVS-NAT模式的原理

  1. 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。此时报文的源IP为CIP,目标IP为VIP
  2. PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
  3. IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP, 然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
  4. POSTROUTING链通过选路,将数据包发送给Real Server
  5. Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
  6. Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。此时报文的源IP为VIP,目标IP为CIP

LVS-NAT模型的特性

特点:

  1. RS应该使用私有地址,RS的网关必须指向DIP
  2. DIP和RIP必须在同一个网段内
  3. 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈
  4. 支持端口映射
  5. RS可以使用任意操作系统

缺陷:对Director Server压力会比较大,请求和响应都需经过director server

LVS-DR模式

LVS-DR模式原理

  1. 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
  2. PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
  3. IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
  4. 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
  5. RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP
  6. 响应报文最终送达至客户端

LVS-DR模型的特性

特点:

  1. 保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
  2. RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
  3. RS跟Director Server必须在同一个物理网络中
  4. 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
  5. 不支持地址转换,也不支持端口映射
  6. RS可以是大多数常见的操作系统
  7. RS的网关绝不允许指向DIP(因为我们不允许他经过director)
  8. RS上的lo接口配置VIP的IP地址

缺陷:RS和DS必须在同一机房中

LVS三种负载均衡模式的比较

类目NATTUNDR
操作系统任意支持隧道多数(支持non-arp)
服务器网络私有网络局域网/广域网局域网
服务器数目10-20100大于100
服务器网关负载均衡器自己的路由自己的路由
效率一般最高

LVS的负载调度算法

  • 轮叫调度(RR):调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
  • 加权轮叫(WRR):调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
  • 最少链接(LC):调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
  • 加权最少链接(WLC):在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
  • 基于局部性的最少链接(LBLC):“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器。
  • 带复制的基于局部性最少链接((LBLCR):“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标 IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
  • 目标地址散列(DH):“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
  • 源地址散列(SH):“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

LVS与nginx的区别

lvs的优势(互联网老辛)

  1. 抗负载能力强,因为lvs工作方式的逻辑是非常简单的,而且工作在网络的第4层,仅作请求分发用,没有流量,所以在效率上基本不需要太过考虑。lvs一般很少出现故障,即使出现故障一般也是其他地方(如内存、CPU等)出现问题导致lvs出现问题。
  2. 配置性低,这通常是一大劣势同时也是一大优势,因为没有太多的可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。
  3. 工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章的事,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定的。
  4. 无流量,lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。
  5. lvs基本上能支持所有应用,因为lvs工作在第4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等。

nginx与LVS的对比

  • nginx工作在网络的第7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等,相比之下lvs并不具备这样的功能,所以nginx单凭这点可以利用的场合就远多于lvs了;但nginx有用的这些功能使其可调整度要高于lvs,所以经常要去触碰,由lvs的第2条优点来看,触碰多了,人为出现问题的几率也就会大。
  • nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。另外注意,lvs需要向托管商至少申请多于一个ip来做visual ip。
  • nginx安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。lvs的安装和配置、测试就要花比较长的时间,因为同上所述,lvs对网络依赖性比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦的多。
  • nginx也同样能承受很高负载且稳定,但负载度和稳定度差lvs还有几个等级:nginx处理所有流量所以受限于机器IO和配置;本身的bug也还是难以避免的;nginx没有现成的双机热备方案,所以跑在单机上还是风险比较大,单机上的事情全都很难说。
  • nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前lvs中ldirectd也能支持针对服务器内部的情况来监控,但lvs的原理使其不能重发请求。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,nginx会把上传切到另一台服务器重新处理,而lvs就直接断掉了。

两者配合使用

  • nginx用来做http的反向代理,能够upsteam实现http请求的多种方式的均衡转发。由于采用的是异步转发可以做到如果一个服务器请求失败,立即切换到其他服务器,直到请求成功或者最后一台服务器失败为止。这可以最大程度的提高系统的请求成功率。
  • lvs采用的是同步请求转发的策略。这里说一下同步转发和异步转发的区别。同步转发是在lvs服务器接收到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。异步转发是nginx在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由nginx返回给客户端。
  • 进一步来说:当做为负载均衡服务器的nginx和lvs处理相同的请求时,所有的请求和响应流量都会经过nginx;但是使用lvs时,仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。
  • 也就是,当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。
  • 但是仅仅使用lvs作为负载均衡的话,一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。但是如果在lvs的后端在添加一层nginx(多个),每个nginx后端再有几台应用服务器,那么结合两者的优势,既能避免单nginx的流量集中瓶颈,又能避免单lvs时一锤子买卖的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/432922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【brtc】视频下行弱网对抗优化 学习笔记

感谢孙健老师和livevideostack学习笔记百度云 音视频实时通信五个部分 1 RTC基础 需要云端服务器参与大量边缘服务器参与采集、前处理(图像处理)、压缩编码音频 3 A 回声消除、增益</

类ChatGPT逐行代码解读(1/2):如何从零起步实现Transformer、ChatGLM

前言 最近一直在做类ChatGPT项目的部署 微调&#xff0c;关注比较多的是两个&#xff1a;一个LLaMA&#xff0c;一个ChatGLM&#xff0c;会发现有不少模型是基于这两个模型去做微调的&#xff0c;说到微调&#xff0c;那具体怎么微调呢&#xff0c;因此又详细了解了一下微调代…

深度学习竞赛进阶技巧 - BLIP使用说明与实战

BLIP-2: 图像到文本的生成器 BLIP-2: Scalable Pre-training of Multimodal Foundation Models for the World’s First Open-source Multimodal Chatbot 1论文摘要 由于大规模模型的端到端的训练&#xff0c;视觉与语言的预训练模型的成本越来越高。本文提出了BLIP-2&#x…

网络原理(IP协议)

目录IP协议IP地址IP 地址由网络和主机两部分标识组成IP 地址的分类广播地址IP多播子网掩码路由IP 地址与路由控制IP 分包与组包什么是IP分片为什么要进行IP分片IP分片是如何组装的路径 MTU 发现IP协议 IP&#xff08;IPv4、IPv6&#xff09;相当于 OSI 参考模型中的第3层——网…

玩转ChatGPT:Auto-GPT项目部署与测评

一、Auto-GPT简介 最近&#xff0c;以ChatGPT为代表的超大规模语言模型火出了圈&#xff0c;各种二次开发项目也是层出不穷。 这周在AI圈炸街的是Auto-ChatGPT&#xff0c;在GitHub上已经61.4K的点赞了。 项目地址&#xff1a;https://github.com/Torantulino/Auto-GPT 用项…

命令设计模式(Command Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]

文章目录概念组成角色相关图示示例代码框架中的运用适用场景概念 命令设计模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将请求的操作封装为一个对象&#xff0c;从而实现请求者和执行者之间的解耦。这样&#xff0c;请求者只需要知道如何发送…

Darknet19详细原理(含tensorflow版源码)

Darknet19原理 Darknet19是一个轻量级的卷积神经网络&#xff0c;用于图像分类和检测任务。 它是YOLOv2目标检测算法的主干网络&#xff0c;它的优点在于具有较少的参数和计算量&#xff0c;在计算速度和精度之间取得了良好的平衡&#xff0c;同时在训练过程中也具有较高的准确…

MobileNetV1详细原理(含torch源码)

目录 MobileNetV1原理 MobileNet V1的网络结构如下&#xff1a; 为什么要设计MobileNet&#xff1a; MobileNetV1的主要特点如下&#xff1a; MobileNetV1的创新点&#xff1a; MobileNetV1源码&#xff08;torch版&#xff09; 训练10个epoch的效果 MobileNetV1原理 Mo…

玩转ChatGPT:中科院ChatGPT Academic项目部署与测评

一、ChatGPT Academic简介 最近&#xff0c;以ChatGPT为代表的超大规模语言模型火出了圈&#xff0c;各种二次开发项目也是层出不穷。 比如说今天我们玩弄的这个“ChatGPT Academic”&#xff0c;在GitHub上已经13.7K的点赞了。 项目地址&#xff1a;https://github.com/bina…

因为这5大工具,同事直呼我时间管理小王子

写在前面 关于时间管理、如何做计划、如何提高执行力等等相关话题其实很早之前我就想写了&#xff0c;但一直拖着迟迟没有动笔。 在之前的一篇文章里我曾详细聊过自己对于时间管理&#xff0c;如何提高执行力&#xff0c;以及如何摆脱那种没有灵魂的任务计划的一些思考和做法…

【C语言】深度理解指针(中)

前言✈ 上回说到&#xff0c;我们学习了一些与指针相关的数据类型&#xff0c;如指针数组&#xff0c;数组指针&#xff0c;函数指针等等&#xff0c;我们还学习了转移表的基本概念&#xff0c;学会了如何利用转移表来实现一个简易计算器。详情请点击传送门&#xff1a;【C语言…

Windows 下安装和使用Redis

Redis 一般安装在Linux中&#xff0c; 但有时出于学习和其他目的&#xff0c;需要在Windows机器运行Redis&#xff0c; 本篇介绍如果在&#xff37;indows中运行和使用Redis。 关于Redis的基本介绍可以参考&#xff1a; Redis介绍、安装与初体验 Windows 下Redis的下载 可…

【NestJs】日志收集

Nest 附带一个默认的内部日志记录器实现&#xff0c;它在实例化过程中以及在一些不同的情况下使用&#xff0c;比如发生异常等等&#xff08;例如系统记录&#xff09;。这由 nestjs/common 包中的 Logger 类实现。你可以全面控制如下的日志系统的行为&#xff1a; 完全禁用日…

jenkins windows安装 部署项目 前端 后端

安装 需要安装的程序&#xff1a; 1.下载jenkins windows版本 2.400 此版本需要jdk11 https://www.jenkins.io/ 按着提示安装即可 2.下载jdk 11 https://login.oracle.com/ 按着提示安装即可 部署pc 1.新建项目 2.源码管理 3.添加git用户 4.Build Steps 构建 初始化np…

vue2数据响应式原理(2)搭建webpack认识一下Object.defineProperty

在1中我们讲到 Object.defineProperty() 是vue2实现数据响应的关键 那么我们就来好好的看看这个方法 方法字面意思是定义属性 而他是通过Object对象调用的 所以说 他是用来控制对象的某个属性的 比较官方的解释是 object.defineProperty() 方法会直接在一个对象上定义一个新属…

单片机添加版本号的一些小技巧

平时我们写程序&#xff0c;通常都会备注软件版本&#xff0c;那么&#xff0c;怎么在单片机中保存版本信息呢&#xff1f; 方法其实有很多&#xff0c;但基本原理都是在指定存储区域&#xff08;Flash&#xff09;中写入软件版本信息。 实现方法 下面就分享一个最常用&#xf…

算法风险防控

算法风险防控是指在算法应用过程中&#xff0c;通过对算法应用场景、数据、模型和结果等多个方面的风险进行评估和控制&#xff0c;以保障算法应用的安全性、可靠性和合法性。以下是一些常见的算法风险防控措施&#xff1a; 数据风险防控&#xff1a;在算法应用中&#xff0c;…

【python】Python基础入门:从变量到异常处理

天池实验室代码链接&#xff1a;https://tianchi.aliyun.com/notebook-ai/home#notebookLabId491001 简介 Python 是一种通用编程语言&#xff0c;其在科学计算和机器学习领域具有广泛的应用。如果我们打算利用 Python 来执行机器学习&#xff0c;那么对 Python 有一些基本的了…

51单片机定时器与计数器

文章目录 51单片机定时器与计数器一、定时器与计数器的结构与功能计数功能定时功能 二、定时器与计数器的控制TMOD 工作方式寄存器TCON 定时器控制寄存器 三、仿真案例(一).8个LED 1 秒周期闪烁。(二) 产品包装生产线。 51单片机定时器与计数器 一、定时器与计数器的结构与功能…

ESP32设备驱动-BMP388气压传感器驱动

BMP388气压传感器驱动 文章目录 BMP388气压传感器驱动1、BMP388介绍2、硬件准备3、软件准备4、驱动实现1、BMP388介绍 BMP388 是一款非常小巧、低功耗和低噪声的 24 位绝对气压传感器。 它可以实现精确的高度跟踪,特别适合无人机应用。 BMP388 在 0-65C 之间的同类最佳 TCO,…