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
    英文地址,請注明出處:http://en.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;數組…