Linux | LVS--Linux虚拟服务器知识点(上)

一. 集群与分布式

1.1 系统性能扩展方式

        当系统面临性能瓶颈时,通常有以下两种主流扩展思路:

  • Scale Up(向上扩展):通过增强单台服务器的硬件配置来提升性能,这种方式简单直接,但受限于硬件物理极限,且成本会随着性能提升呈指数级增长,存在明显的缺点。
  • Scale Out(向外扩展):通过增加服务器数量来分担负载,形成一个协同工作的整体。这种方式能线性扩展系统性能,成本相对可控,但需要解决多设备间的调度分配问题,因此诞生了集群Cluster技术。

1.2 什么是集群Cluster

        集群是将多台计算机组合起来,协同工作以解决某个特定问题的系统,从外部看则为单一的系统。常见的集群类型有以下三种:

  • LB(Load Balancing,负载均衡集群):由多台主机组成,每台主机承担部分访问请求,通过合理分配负载避免单点过载。例如多个 Web 服务器组成的集群,由负载均衡器将用户请求分发到不同节点。
  • HA(High Availability,高可用集群):核心目标是减少单点故障(SPOF,Single Point Of Failure),确保服务持续可用。关键指标包括:
    • MTBF(Mean Time Between Failure):平均无故障时间,即系统正常运行的平均时长。
    • MTTR(Mean Time To Restoration):平均恢复时间,即系统发生故障后恢复正常的平均时长。
    • 可用性 A:计算公式为 A=MTBF/(MTBF+MTTR),取值范围在 (0,1) 之间,通常用99%, 99.5%, 99.9%, 99.99%, 99.999%来表示。
    • SLA(Service Level Agreement,服务等级协议):服务提供商与用户约定的可用性标准(如 “三个 9”“四个 9”),未达标可能触发惩罚措施,运维的核心目标之一就是达成 SLA。
  • HPC(High-performance Computing,高性能计算集群):用于处理大规模复杂计算任务(如气象模拟、科学研究),属于国家战略资源,不在基础运维课程范围内。

1.3 什么是分布式

        分布式是将一个复杂系统拆分为多个子模块,部署在不同服务器上协同工作的架构模式,常见应用场景包括以下几种:

  • 分布式存储:如Ceph、GlusterFs、FastDFS等,将数据分散存储在多个节点,提升容量和可靠性。
  • 分布式计算:如Hadoop、Spark,将计算任务分解到多个节点并行处理,加速大规模数据运算。
  • 分布式应用:按功能拆分服务(如微服务架构),每个服务独立部署和扩展。
  • 分布式静态资源:将图片、视频等静态资源存储在不同集群,减轻主服务压力。
  • 分布式数据缓存:使用Redis等key-value缓存系统,分散数据访问压力。

1.4 集群与分布式的区别

  • 集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的
  • 分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务
  • 效率提升方式:集群通过提高单位时间内执行的任务数来提升效率;分布式通过缩短单个任务的执行时间来提升效率。
  • 故障影响:集群中某台服务器垮了,其他服务器可以顶上来;分布式中某个节点垮了,对应的子业务可能会失败。

二. lvs--Linux virtual server

2.1 lvs介绍

  1. LVS 即 Linux Virtual Server(Linux虚拟服务器),是一种负载调度器,其功能集成在 Linux 内核中,能够实现对多台服务器的负载均衡调度,提升服务的可用性和并发处理能力。
  2. LVS由章文嵩博士主导开发。在实际应用中,阿里巴巴的四层 SLB(Server Load Balance,服务器负载均衡)便是基于LVS结合 keepalived 实现的,这体现了 LVS 在大规模网络服务中的重要价值。
  3. LVS 官网: http://www.linuxvirtualserver.org/
  4. LVS主要工作在 OSI 模型的第四层(传输层),基于IP和端口进行负载均衡调度,支持 TCP、UDP 等协议。
  5. LVS相关术语
    • VS:Virtual Server,负责调度
    • RS:Real Server,负责真正提供服务

2.2 lvs集群体系结构

2.3 LVS的概念

        访问流程1:CIP <--> VIP == DIP <--> RIP

        访问流程2:CIP --> VIP == DIP --> RIP --> CIP

  • VS(Virtual Server):调度器
  • RS(Real Server):真实的资源主机
  • CIP(Client IP):用户IP
  • VIP(Virtual serve IP):用户访问的IP
  • DIP(Director IP):负载均衡器的真实IP
  • RIP(Real server IP):资源主机的IP

2.4 LVS集群的类型

  • lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT
  • lvs-dr: 操纵封装新的MAC地址
  • lvs-tun: 在原请求IP报文之外新加一个IP首部
  • lvs-fullnat: 修改请求报文的源和目标IP

三. NAT模式

3.1 什么是NAT模式

  • LVS-NAT(Linux Virtual Server - Network Address Translation)是 LVS 负载均衡的基础模式,通过网络地址转换实现流量分发。
  • 本质是基于 Linux 内核的 iptables DNAT功能,支持多目标地址转换,是最容易实现的 LVS 模式。
  • RIP和DIP应在同一个IP网段;RS 的默认网关
  • 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
  • 支持端口映射,可修改请求报文的目标PORT
  • VS必须是Linux系统,RS可以是任意OS系统

3.2 NAT模式数字逻辑

            流程:CIP --> VIP == DIP --> RIP --> DIP = VIP --> CIP

            由于数据的进出都要经过调度器VS(Virtual Server),因此后端建议最多挂10台RS

    1. 客户端发出请求包,内容包括请求来源(cip)、访问目的地的IP(vip)、目标端口(port80)
    2. 到达vs后,访问目的地将会改变成真实的目标主机的IP(RIP),目标端口修改为RS1实际监听的 9000 端口
    3. RS1接收到后发送响应数据包,请求来源改为RIP1,响应目标CIP,相应端口9000
    4. vs收到响应数据包后,修改响应报文:请求来源修改为VIP,响应目标不变,端口改为80
    5. 客户端接收到vs发来的响应数据包

    3.3 NAT模式实验环境配置

    3.3.1 配置IP

            本次实验一共需要四台主机:RS1、RS2、lvs、客户端client

            仅主机网段:192.168.103.0 

            NAT模式网段:192.168.132.0

    • RS1    仅主机  192.168.103.10
    • RS2    仅主机  192.168.103.20
    • lvs       仅主机  192.168.103.100        nat  192.168.132.100
    • client   nat   192.168.132.111

    3.3.2 实验前配置

    • RS1、RS2下载httpd并关闭防火墙
    • RS1、RS2开启web服务

    • 调度器lvs可以访问RS1、RS2

    • 在lvs系统中开启 IP 转发功能

    3.4 NAT模式实现过程

    • 配置 LVS 的 NAT 模式负载均衡

    • LVS关闭火墙

    • 由于client有两个网段的IP,所以两个RS的网关需要指定为dip(192.168.103.100)

    • client可以访问 LVS 集群虚拟 IP。第一次被调度到后端真实服务器 RS1,第二次被调度到后端真实服务器 RS2,体现了 LVS 负载均衡的效果

    五. TUN模式(隧道模式)

    5.1 什么是TUN模式

            TUN 模式是 LVS 负载均衡的一种实现方式,特点是不修改原请求 IP 首部(源 IP 为客户端 CIP、目标 IP 为虚拟服务 VIP),而是在原 IP 报文外新增一层 IP 隧道封装(源 IP 为调度器 DIP、目标 IP 为真实服务器 RS 的 RIP ),将请求发往选定 RS。RS 直接响应客户端(源 IP 为 VIP、目标 IP 为 CIP ),无需再经过调度器转发响应。

    • DIP、VIP、RIP 需为公网地址
    • RS 的网关不能指向 DIP(响应直接回客户端,无需经调度器 )
    • 不支持端口映射
    • 请求必经调度器Director,响应直接走客户端 - RS 链路,调度器不参与响应转发
    • RS 的操作系统必须支持 IP 隧道功能(如 Linux 需开启 IPIP 隧道模块 )。

    5.2 数据传输流程

    • 请求流程:客户端发请求,数据包含源 IP(CIP)、目标 IP(VIP)及端口。调度器(VS)收到后,给原数据包加新 IP 隧道头(源 DIP、目标 RIP ),转发给选定 RS。
    • 响应流程:RS 接收带隧道的数据包,解封装后处理请求,直接以 VIP 为源 IP、CIP 为目标 IP 回包给客户端,无需经过调度器。

    六. fullnet模式

    6.1 什么是fullnet模式

            FULLNAT 模式是 LVS 实现负载均衡的一种网络地址转换模式,核心是同时修改请求报文的源 IP 地址和目标 IP 地址来完成转发,适配复杂网络场景。

    • VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络。无需 RS 网关指向 DIP,降低拓扑限制。
    • RS收到的请求报文源地址是DIP,因此只需响应给DIP;但Director还要将其发往Client
    • 请求和响应报文都经由Director
    • 支持端口映射

    6.2 数据传输流程

            CIP --> DIP                 VIP --> RIP

    • 请求流程:Client 发请求到 VIP,Director 接收后做 FULL NAT,把源 IP(CIP)换成 DIP,目标 IP(VIP)换成 RIP,再经 Router 转发给 RS。
    • 响应流程:RS 响应报文源为自身 RIP、目标为 DIP,回给 Director;Director 再次 FULL NAT,将源 IP 换为 VIP、目标 IP 换为 CIP,最终发给 Client 。

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

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

    相关文章

    【Linux-云原生-笔记】keepalived相关

    一、概念Keepalived 是一个用 C 语言编写的、轻量级的高可用性和负载均衡解决方案软件。 它的主要目标是在基于 Linux 的系统上提供简单而强大的故障转移功能&#xff0c;并可以结合 Linux Virtual Server 提供负载均衡。1、Keepalived 主要提供两大功能&#xff1a;高可用性&a…

    计算机网络:概述层---计算机网络的组成和功能

    &#x1f310; 计算机网络基础全景梳理&#xff1a;组成、功能与核心机制 &#x1f4c5; 更新时间&#xff1a;2025年7月21日 &#x1f3f7;️ 标签&#xff1a;计算机网络 | 网络组成 | 分布式 | 负载均衡 | 资源共享 | 网络可靠性 | 计网基础 文章目录前言一、组成1.从组成部…

    Linux中scp命令传输文件到服务器报错

    上传本地文件到Linux服务器使用scp命令报错解决办法使用scp命令报错 Could not resolve hostname e: Name or service not known 解决办法 不使用登录服务器的工具传输&#xff0c;打开本地cmd&#xff0c;使用scp命令传输即可。 scp E:\dcm-admin.jar root127.0.0.1:/

    历史数据分析——国药现代

    医药板块走势分析: 从月线级别来看 2008年11月到2021年2月,月线上走出了两个震荡中枢的月线级别2085-20349的上涨段; 2021年2月到2024年9月,月线上走出了20349-6702的下跌段; 目前月线级别放巨量,总体还在震荡区间内,后续还有震荡和上涨的概率。 从周线级别来看 从…

    #Linux内存管理# 在一个播放系统中同时打开几十个不同的高清视频文件,发现播放有些卡顿,打开视频文件是用mmap函数,请简单分析原因。

    在播放系统中同时使用mmap打开几十个高清视频文件出现卡顿&#xff0c;主要原因如下&#xff1a;1. 内存映射&#xff08;mmap&#xff09;的缺页中断开销按需加载机制&#xff1a;mmap将文件映射到虚拟地址空间&#xff0c;但实际数据加载由“缺页中断&#xff08;Page Fault&…

    AI黑科技:GAN如何生成逼真人脸

    GAN的概念 GAN(Generative Adversarial Network,生成对抗网络)是一种深度学习模型,由生成器(Generator)和判别器(Discriminator)两部分组成。生成器负责生成 synthetic data(如假图像、文本等),判别器则试图区分生成数据和真实数据。两者通过对抗训练不断优化,最终…

    FireFox一些设置

    firefox后台打开新的链接&#xff0c;例如中键打开一个链接 地址栏输入about:config 找到下面三项&#xff0c;全部设为true browser.tabs.loadInBackground browser.tabs.loadDivertedInBackground browser.tabs.loadBookmarksInBackground 参考&#xff1a;FireFox/chrome…

    【黑马SpringCloud微服务开发与实战】(六)分布式事务

    1. 什么是分布式事务下单失败&#xff0c;购物车还被清理了。不符合一致性。2. seata的架构和原理3. 部署TC服务docker network ls docker inspect mysql mysql 在hm-net下&#xff0c;这里我的ncaos不是跟着视频配的&#xff0c;因此需要。 docker network connect hm-net nac…

    【力扣】第15题:三数之和

    原文链接&#xff1a;15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 思路解析 双指针&#xff1a; &#xff08;1&#xff09;头尾指针对应值相加如果大于目标值(target)&#xff0c;那么只能尾指针-1&#xff1b;如果小于target&#xff0c;那么只能头指针1。 &#x…

    Linux PCI总线子系统

    The Linux Kernel Archives Linux PCI总线子系统 — The Linux Kernel documentation

    LeetCode热题100--24. 两两交换链表中的节点--中等

    1. 题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#x…

    京东视觉算法面试30问全景精解

    京东视觉算法面试30问全景精解 ——零售智能 供应链创新 工业落地:京东视觉算法面试核心考点全览 前言 京东作为中国领先的零售科技企业,在智能物流、供应链管理、智能仓储、商品识别、工业质检等领域持续推动视觉AI的创新与大规模落地。京东视觉算法岗位面试不仅关注候…

    【设计模式】观察者模式 (发布-订阅模式,模型-视图模式,源-监听器模式,从属者模式)

    观察者模式&#xff08;Observer Pattern&#xff09;详解一、观察者模式简介 观察者模式&#xff08;Observer Pattern&#xff09; 是一种 行为型设计模式&#xff08;对象行为型模式&#xff09;&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监…

    Linux的`<< EOF`(Here-Document)详解多回答笔记250722

    Linux的<< EOF(Here-Document)详解多回答笔记250722 Linux 中的 << EOF 结构称为 Here Document&#xff08;立即文档或嵌入文档&#xff09;&#xff0c;它是一种在 Shell 脚本中直接嵌入多行文本输入流&#xff08;通常作为命令的标准输入&#xff09;的方式。E…

    Go语言实战案例-简单配置文件(INI格式)解析器

    以下是《Go语言100个实战案例》中的 文件与IO操作篇 - 案例20&#xff1a;简单配置文件&#xff08;INI格式&#xff09;解析器 的完整内容&#xff0c;适合入门学习如何用 Go 语言解析常见的 .ini 配置文件格式。&#x1f3af; 案例目标使用 Go 语言解析一个 .ini 格式的配置文…

    用 PyTorch 实现全连接网络识别 MNIST 手写数字

    目录 一、什么是全连接网络 二、代码实现步骤 1. 导入必要的库 2. 数据准备 3. 定义网络结构 4. 模型训练 5. 模型保存和加载 6. 预测单张图片 7. 主函数 三、运行结果说明 四、小结 一、什么是全连接网络 全连接神经网络&#xff08;Fully Connected Neural Networ…

    vscode怎么安装MINGW

    下载&#xff1a; 第一步选择MINGW官网&#xff1a;MinGW-w64 - for 32 and 64 bit Windows - SourceForge.net 点击Files 点击Toolchains targetting Win64 点击第一个 Personal Builds 点击mingw-builds 选择8.1.0 点击第二个 threads-posix 点击第二个seh 最后左键点击下…

    CSS图片分层设置

    在CSS中实现图片分层效果&#xff0c;主要通过定位属性和层叠上下文控制。以下是核心实现方法和示例&#xff1a; 一、核心实现原理定位方式 使用 position: relative/absolute/fixed 使图片脱离文档流 .layer {position: absolute; /* 关键属性 */top: 0;left: 0; }层叠控制 通…

    GEMINUS 和 Move to Understand a 3D Scene

    论文链接&#xff1a;https://arxiv.org/abs/2507.14456 代码链接&#xff1a;https://github.com/newbrains1/GEMINUS 端到端自动驾驶的挑战 端到端自动驾驶是一种“一站式”方法&#xff1a;模型直接从传感器输入&#xff08;如摄像头图像&#xff09;生成驾驶轨迹或控制信号…

    算法与数据结构:线性表

    C语言数据结构基础&#xff1a;线性表详解线性表是数据结构中最基础、最常用的形式&#xff0c;就像一列整齐排队的游客&#xff1a;每个元素有固定位置&#xff08;前驱和后继&#xff09;&#xff0c;长度可动态变化。在C语言中&#xff0c;它主要通过顺序表&#xff08;数组…