LVS(Linux Virtual Server)详细笔记(理论篇)

一.详解

1. LVS概述

LVS(Linux Virtual Server)是由章文嵩博士发起的开源负载均衡项目,通过在Linux内核中实现高性能四层交换能力,将多台物理服务器组织成单一虚拟服务。它能够处理百万级并发连接,同时保持线性扩展能力,主要解决单服务器性能瓶颈问题。相比应用层负载均衡(如Nginx),LVS在内核空间直接处理数据包,避免了用户态-内核态切换开销,性能提升可达10倍以上。

LVS 官网: http://www.linuxvirtualserver.org/
LVS工作原理:
VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS
LVS 相关术语
VS: Virtual Server,负责调度
RS:RealServer,负责真正提供服务
LVS概念
VSVirtual Server
RSReal Server
CIPClient IP
VIP: Virtual serve IP VS外网的IP
DIP: Director IP VS内网的IP
RIP: Real server IP
访问流程:CIP <--> VIP == DIP <--> RIP
LVS集群的类型
lvs-nat
修改请求报文的目标IP,多目标IPDNAT
lvs-dr 操纵封装新的MAC地址
lvs-tun
在原请求IP报文之外新加一个IP首部
lvs-fullnat 修改请求报文的源和目标IP
2. 核心架构

LVS集群采用三层分层架构:

  • 负载调度层(Director) :运行ipvs内核模块的调度节点,接收所有客户端请求,通过调度算法分发至后端。关键IP包括:

    • VIP(Virtual IP) :对外服务IP,客户端访问入口

    • DIP(Director IP) :与后端通信的内部IP

  • 真实服务器层(Real Server, RS) :实际处理请求的服务节点(如Web/DB服务器),通过RIP(Real IP) 标识。

  • 共享存储层 :为RS提供一致性数据源(如NFS/GFS),避免本地存储导致内容差异。

3. 核心组件
  • IPVS(IP Virtual Server) :
    工作于内核空间的Netfilter INPUT链,执行核心转发逻辑。通过直接修改数据包目标地址(NAT)或MAC地址(DR),实现零拷贝转发59。

  • ipvsadm :
    用户空间配置工具,定义集群服务(VIP:Port)与RS关联规则。例如添加VIP的80端口服务:ipvsadm -A -t 192.168.1.100:80 -s wlc

4. 工作原理

数据包处理流程分四步:

  1. PREROUTING链 :接收客户端请求,目标IP为VIP。

  2. INPUT链 :IPVS比对请求是否匹配集群服务。

  3. 转发决策 :按调度算法选择RS,修改数据包:

    • DR模式:重写目标MAC为RS MAC

    • NAT模式:修改目标IP为RIP

  4. POSTROUTING链 :转发至选定RS。

二.理论笔记

1. LVS工作模式详解
特性DR模式NAT模式TUN模式
工作层二层(MAC层)四层(IP层)三层(IP隧道)
修改内容目标MAC地址目标IP地址新增IP头部封装
RS配置要求绑定VIP至lo接口网关指向DIP支持IP隧道协议
性能⭐⭐⭐⭐⭐(最优)⭐⭐(有瓶颈)⭐⭐⭐(中等)
扩展性同一局域网(≤交换机)受限(≤10节点)跨地域(WAN支持)
典型场景高并发Web集群小型私有集群异地容灾部署

DR模式工作流

关键约束:所有RS需配置ARP抑制(arp_ignore=1,arp_announce=2),避免响应VIP的ARP请求。

NAT模式工作流:

瓶颈:进出流量均经Director,需处理双向数据包改写

TUN模式工作流:

适用场景:云环境跨VPC调度或异地多活部署。

LVS的工作模式以及优缺点:

LVS支持多种工作模式,主要包括以下几种:

  • NAT(Network Address Translation)模式:

    • 原理:负载均衡器修改客户端请求的目标IP地址,将其转发到后端服务器。后端服务器的响应通过负载均衡器返回给客户端。

    • 优点:配置简单,后端服务器只需要将网关设置为负载均衡器即可。

    • 缺点:负载均衡器需要处理所有进出流量,可能成为性能瓶颈。

  • DR(Direct Routing)模式:

    • 原理:负载均衡器和后端服务器共享一个虚拟IP地址,后端服务器直接将响应发送给客户端,无需经过负载均衡器。

    • 优点:后端服务器直接响应客户端请求,减少了负载均衡器的负担,提高了性能。

    • 缺点:需要在同一物理网络中,后端服务器需要配置虚拟IP地址。

  • TUN(Tunneling)模式:

    • 原理:负载均衡器将客户端请求封装在IP隧道中,发送到后端服务器。后端服务器解封装后处理请求,响应直接返回给客户端。

    • 优点:后端服务器可以位于不同的网络中,灵活性高。

    • 缺点:需要额外的封装和解封装操作,可能会增加一些延迟。

2. LVS调度算法解析

静态算法(不考虑实时负载):

  • RR(轮询) :均等分发请求,适用RS性能一致场景。

  • WRR(加权轮询) :按预设权重分配(如性能强RS权重=3,弱=1)。

  • SH(源地址散列) :固定CIP映射至同RS,保持会话粘滞。

动态算法(基于实时连接数):

  • LC(最少连接) :
    计算方式:Overhead = Active×256 + Inactive
    选择值最小RS。

  • WLC(加权最少连接) :
    Overhead = (Active×256 + Inactive) / Weight
    默认推荐算法。

  • SED(最短期望延迟) :
    Overhead = (Active+1)×256 / Weight
    避免新请求涌入空闲RS。

算法计算逻辑适用场景
RR顺序循环分配RS性能均等
WLC(活动连接×256+非活动连接)/权重默认通用场景
SED(活动连接+1)×256/权重避免新请求排队
SH哈希(CIP)→固定RS会话保持需求

三.总结与应用

1.选择lvs的优势:

高性能:LVS基于Linux内核实现,性能高效,能够处理大量的并发请求。

高可用性:通过负载均衡和故障转移机制,确保系统的高可用性。

灵活性:支持多种工作模式和负载均衡算法,可以根据实际需求进行配置。

开源免费:LVS是开源软件,用户可以根据自己的需求进行定制和优化。

2.模式选择:

追求性能 → DR模式(机房内部)

简化配置 → NAT模式(小型集群)

跨地域扩展 → TUN模式(云环境)

3.典型场景:

Web高并发:DR + WLC算法

会话敏感服务:DR + SH算法

混合云部署:TUN + SED算法

LVS的应用场景:

Web服务器集群:通过LVS将客户端的HTTP请求分发到多个Web服务器,提高网站的响应速度和可靠性。

数据库集群:将数据库读写请求分发到多个数据库服务器,提高数据库的性能和可用性。

企业级应用:在企业级应用中,LVS可以用于负载均衡中间件、应用服务器等,确保系统的高可用性。

4.局限性:

LVS无应用层解析(HTTP/HTTPS),需结合Nginx/Haproxy实现七层负载。

依赖Linux:LVS只能运行在Linux操作系统上,对于非Linux环境的支持有限。

维护成本:在大规模集群中,LVS的维护和管理需要专业的技术人员。

四.注意事项

1.时间同步

各节点间的时间偏差应不大于1秒,建议使用统一的NTP服务器进行时间更新、

2.DR模式

VIP的MAC广播问题:在DR模型中,每个节点均要配置VIP,存在VIP的MAC广播问题。需要设置内核参数arp_ignore为1和arp_announce为2,以管理MAC广播。

回环接口配置:需要在所有真实服务器(RealServer)上配置lo:0回环接口的VIP,并设置对应的路由。

网络要求:DR模式要求负载均衡器(Director)和真实服务器必须在同一个局域网内。

连接哈希表大小:DR模式的瓶颈在于连接哈希表的大小及处理对应连接的内存大小。对于低版本Linux内核(小于3.0),需要重新编译内核才能修改连接哈希表大小;对于较新的内核(如CentOS 7的kernel 3.10),可以在加载ip_vs内核模块时加参数修改连接哈希表。

3.TUN模式

VIP绑定:必须在所有真实服务器上绑定VIP的IP地址。

网络要求:TUN模式下,负载均衡器和真实服务器可以位于不同的网段。

性能:由于TUN模式涉及对数据包的重新封装,其性能不如DR模式。

4.NAT模式

网络要求:NAT模式下,负载均衡器会修改数据包的目标IP地址,因此不需要负载均衡器和真实服务器在同一网段。

性能瓶颈:负载均衡器需要处理所有进出流量,可能成为性能瓶颈。

5.内核模块加载

确保ip_vs相关的内核模块已成功加载。

6.ARP和RP Filter设置

在真实服务器上,需要关闭ARP学习功能和源地址检查功能(RP Filter),以确保负载均衡器可以正常工作。

7.缓存转发功能

如果需要,可以通过配置内核参数net.ipv4.vs.conn_reuse_mode来禁用LVS的缓存转发功能,但需注意这可能会导致性能下降。

8. 真实服务器网关设置

在NAT模式下,真实服务器的网关应设置为负载均衡器的IP地址。

9. 连接管理

LVS不会主动断开连接,即使真实服务器的状态发生变化,连接也会保持,直到客户端主动断开。

五..集群和分布式简介

1.系统性能扩展方式
Scale UP:向上扩展,增强
Scale Out:向外扩展,增加设备,调度分配问题,Cluster
2.集群Cluster
Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统
Cluster常见的三种类型:
LBLoadBalancing(负载均衡)由多个主机组成,每个主机只承担一部分访问
HAHigh Availiablity(高可用)SPOFsingle Point Of failure
MTBF:Mean Time Between Failure 平均无故障时间,正常时间
MTTR:Mean Time To Restoration repair)平均恢复前时间,故障时间
A=MTBF/MTBF+MTTR (0,1)99%, 99.5%, 99.9%, 99.99%, 99.999%
SLAService level agreement(服务等级协议)是在一定开销下为保障服务的性能和可用性,服
务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。在
常规的领域中,总是设定所谓的三个9,四个9来进行表示,当没有达到这种水平的时候,就会有一
些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。
停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外
停机时间
HPCHigh-performance computing(高性能计算,国家战略资源)
3.分布式
分布式存储:CephGlusterFsFastDFSMogileFs
分布式计算:hadoopSpark
分布式常见应用
分布式应用-服务按照功能拆分,使用微服务
分布式静态资源--静态资源放在不同的存储集群上分布式数据和存储--使用key-value缓存系统
分布式计算--对特殊业务使用分布式计算,比如Hadoop集群。
4.集群和分布式
集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据
和代码都是一样的
分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式
中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起
来,才是完整的业务
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数
来提升效率,
对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器
完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决
定由给哪一台去完成响应,并且台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,
都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败。
以上为LVS的理论基础。

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

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

相关文章

Oracle Data Pump 导入冲突解决

问题场景 使用 impdp 导入数据时遇到"对象已存在"错误&#xff0c;导致导入失败。 核心解决方案 1. TABLE_EXISTS_ACTION 参数 impdp username/passworddatabase \ directoryDATA_PUMP_DIR \ dumpfileyour_dump_file.dmp \ TABLE_EXISTS_ACTIONREPLACE作用&#xff1…

汽车免拆诊断案例 | 2015款进口起亚索兰托L车漏电

故障现象 一辆2015款进口起亚索兰托L车&#xff0c;搭载D4HB发动机&#xff0c;累计行驶里程约为15万km。车主反映&#xff0c;该车停放2天左右就因蓄电池亏电而无法起动&#xff0c;更换过蓄电池&#xff0c;但故障依旧&#xff0c;于是将车开至我厂检修。故障诊断 接车后用…

mysql复制延迟如何处理

一、复制延迟的原因主库增删改并发大大表在做DDL从库备份导致延迟大事务从库机器配置差二、怎样判断延迟使用 SHOW SLAVE STATUS 命令Seconds_Behind_Master&#xff1a;表示从库落后主库的秒数&#xff08;若为 NULL&#xff0c;可能复制线程已停止&#xff09;对比位点字段名…

HertzBeat 监控 SpringBoot 使用案例

HertzBeat 监控 SpringBoot 使用案例 在云原生时代&#xff0c;Spring Boot应用的监控与可视化已然成为运维体系的核心环节&#xff0c;实时监控应用性能是保障系统稳定性的关键。 这篇文章将结合 HertzBeat 实现从指标采集、可视化到告警的一体化解决方案&#xff0c;并展示…

突破性量子芯片问世:电子与光子首次集成,开启量子技术规模化应用新篇章

文丨浪味仙 排版丨浪味仙行业动向&#xff1a;3000字丨8分钟阅读内容提要在量子技术迈向规模化应用的征程中&#xff0c;研究人员迎来了重要突破。近日&#xff0c;波士顿大学、加州大学伯克利分校以及西北大学的科学家在《Nature Electronics》上发表论文&#xff0c;报告实现…

day30——零基础学嵌入式之线程2.0

一、进程和线程的对比线程进程定义轻量级的进程。是进程中的执行单元&#xff0c;作为CPU调度的基本单位进程时程序的一次执行过程&#xff0c;作为CPU的资源分配的基本单位优势创建以及切换速度块-----效率高线程&#xff08;线程共享了进程的资源&#xff09;间共享资源方便创…

洛谷 P1395 会议

【题目链接】 洛谷 P1395 会议 【题目考点】 1. 树形动规&#xff1a;树的重心 本题为求树的重心模板题 【解题思路】 树的重心&#xff1a;相比于树中其它结点&#xff0c;其所有的子树中结点数最多的子树的结点数最少&#xff0c;该结点就是这棵树的重心。 另一种定义&…

Microsoft 365 Adoption Score功能深度解析:驱动企业数字化转型的利器

在数字化转型的浪潮中,Microsoft 365(原Office 365)凭借其强大的生产力工具和云服务生态,已成为全球企业和组织提升效率、协作和创新的核心平台。然而,仅仅部署Microsoft 365并不足以充分发挥其潜力,关键在于如何推动员工高效采用这些工具,并将其融入日常工作流程。为此…

尺寸标注识别5 实例分割 roboflow | result.boxes获取边界框 | yolov8n-seg架构 torchinfo | 对直线关系不敏感

https://gitee.com/njsgcs/yolo-local 单标注一个尺寸线 100轮就百分百了 Sign in to Roboflow 有混起来的问题 roboflow训练用的cocon-seg模型我网上找不到 上面这种比较麻烦 text的中心要在dt范围内 屏幕点以下等同于按下save&#xff08;enter&#xff09; 取最长线段作…

敏捷开发卡在需求分析?飞算 JavaAI 加速需求确认与功能迭代

在敏捷开发中&#xff0c;需求分析常成为团队推进的 “卡点”—— 模糊的需求描述、反复的需求变更、拆解落地难等问题&#xff0c;往往导致迭代周期延长。而飞算 JavaAI 作为专为 Java 开发设计的工具&#xff0c;正通过 “需求理解 - 接口设计 - 代码生成” 的全流程智能化&a…

QT跨平台应用程序开发框架(10)—— Qt窗口

目录 一&#xff0c;关于窗口 二&#xff0c;菜单栏 2.1 菜单介绍 2.2 添加菜单 2.3 添加快捷键 2.4 添加其子菜单 2.5 添加分割线和图标 三&#xff0c;工具栏 3.1 添加和使用工具栏 3.2 设置位置属性 四&#xff0c;状态栏 五&#xff0c;浮动窗口 六&#xff0c;对话框 6.1 …

git从本地仓库添加到远程仓库

先创建&#xff0c;然后配置 Git 的全局用户名和邮箱git config --global user.name "不吃糖o" git config --global user.email "1523944556qq.com" git config --global -l 查看设置的用户名和邮箱如何生成SSH公钥&#xff1f;ssh-keygen 生成sshkeyls ~…

锁步核,为什么叫锁步核?

“锁步核”&#xff08;Lockstep Cores&#xff09;这一名称源于其工作原理与军事队列行进中的“锁步”&#xff08;Lockstep&#xff09;动作的类比。以下是详细的说明整理&#xff1a;1. 军事起源&#xff1a;什么是“锁步”&#xff1f; 在传统军事训练中&#xff0c;“锁步…

python学智能算法(二十二)|SVM-点与超平面的距离

引言 前序学习进程中&#xff0c;了解了向量、向量点积运算、超平面、感知机等知识点。 SVM算法最核心的目标是通过规划租号的分割超平面&#xff0c;来使得超平面附近的点到超平面的距离和达到最大值。 那点和超平面的距离如何计算&#xff0c;就是今天学习的重点。 点与超平…

参会邀请!2025世界人工智能大会合合信息技术交流日报名启动!

2025世界人工智能大会即将开幕&#xff0c;合合信息邀请您一起参与KOL深度技术交流活动。本次活动不仅可以带您逛展2025世界人工智能大会&#xff0c;在合合信息展台体验AI黑科技&#xff0c;还可以与行业顶尖技术专家面对面交流&#xff0c;共同探讨当下热门AI安全话题。 详细…

零基础入门:用C++从零实现TCP Socket网络小工具

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 网络编程中的套接字&#xff08;Socket&#xff09;是通信的基本接口&#xff0c;允许不同计算机之间通过网络交换数据。套接字是计算机网络中通信的“端点”&#xff0c;通过它&#xff0c;应用程序可以与…

SOES:软实现EtherCAT从站协议栈项目介绍及从站开发案例

在现代工业自动化领域&#xff0c;EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;以其高速、实时和开放的特性&#xff0c;成为现场总线通信的主流协议之一。EtherCAT网络中&#xff0c;主站&#xff08;Master&#xff09;负责调度和管理&#…

[simdjson] 填充字符串 | `document` 对象 | on-demand 模式

第二章&#xff1a;填充字符串 在第一章解析器中&#xff0c;我们学习了simdjson::dom::parser和simdjson::ondemand::parser作为可复用内存的JSON解析工具。 本章将深入解析JSON数据输入的核心要求——“填充字符串”。 为何需要填充&#xff1f; simdjson通过SIMD&#x…

扭蛋机小程序开发:开启线上娱乐新风尚

在当今数字化浪潮席卷的时代&#xff0c;娱乐方式正经历着前所未有的变革。传统的扭蛋机&#xff0c;那充满惊喜与期待的实体装置&#xff0c;曾是无数人童年回忆中的欢乐源泉。如今&#xff0c;随着科技的飞速发展&#xff0c;扭蛋机小程序开发应运而生&#xff0c;将这份经典…

【React Native】布局和 Stack 、Slot

布局和Stack 点击链接后&#xff0c;页面切换时最好是有动画效果。页面一般都有头部&#xff0c;里面有页面的标题之类的东西。 在app目录里&#xff0c;新建一个_layout.js文件&#xff0c;这是项目的布局文件。 这个名字是固定的&#xff0c;前面必须有一个_ 。 布局的意…