LVS與Keepalived詳解(一)負載均衡集群介紹

文章目錄

  • 前言
    • 一、什么是LVS?
    • 二、四層(L4)負載均衡的最佳解決方案是什么?
      • 2.1解決方案分類與對比(負載均衡的三種方式介紹)
        • 2.1.1 硬件負載均衡 (Hardware Load Balancer)
        • 2.1.2 軟件負載均衡 (Software Load Balancer)
        • 2.1.3 云負載均衡 (Cloud Load Balancer)
      • 2.2 總結與選擇建議
    • 三、為什么要使用LVS?
    • 四、為什么要使用LVS+Keepalived集群?
  • -------------------------------------以下是正文---------------------------------------
  • 一、什么是集群?
    • 1.1 核心思想:人多力量大
    • 1.2 為什么要使用集群?它的主要目標是什么?
    • 1.3 集群的主要類型
    • 1.4 一個簡單的例子:訪問淘寶網
  • 二、什么是負載均衡集群?
    • 2.1 核心組成部分
    • 2.2 負載均衡的工作原理
    • 2.3 主要的負載均衡算法
    • 2.4 部署模式(流量轉發方式)
    • 2.5 主要優勢
    • 2.6 典型應用場景
  • 三、集群負載均衡調度技術的工作模式分析
      • 1. 地址轉換模式(NAT Mode)
      • 2. 直接路由模式(DR Mode)
      • 3. IP隧道模式(IP Tunneling Mode)
      • 三種工作模式對比總結
      • 如何選擇?


前言

一、什么是LVS?

LVS 的全稱是 Linux Virtual Server,即 Linux 虛擬服務器

它是一個由章文嵩博士(Dr. Wensong Zhang)發起和領導的自由軟件項目。LVS 的核心是一個基于 Linux 操作系統負載均衡器,它能夠將大量的網絡請求(如 Web 訪問、數據庫查詢等)智能地、高效地分發到一組后端服務器(稱為 Real Server)上。

LVS 工作在 Linux 內核層面,因此性能非常高,遠超許多在應用層(如 Nginx、HAProxy)實現的負載均衡軟件。它通常被認為是 四層(Layer 4, 傳輸層)負載均衡 的經典解決方案,主要基于 IP 地址和端口號進行請求轉發。

LVS 的三種工作模式:

  1. NAT 模式(網絡地址轉換)

    • 原理:LVS 服務器同時作為客戶端和后端服務器的網關。它修改請求和響應數據包的地址。
    • 優點:后端服務器可以是任何操作系統,只需配置網關指向 LVS。
    • 缺點:LVS 容易成為性能瓶頸,因為所有進出后端服務器的流量都要經過 LVS。
  2. TUN 模式(IP 隧道)

    • 原理:LVS 將請求數據包封裝在一個新的 IP 包中(IPIP 隧道),轉發給后端服務器。后端服務器解包后直接響應給客戶端,不再經過 LVS。
    • 優點:響應流量不經過 LVS,解決了 NAT 模式的瓶頸問題,支持跨機房部署。
    • 缺點:需要在后端服務器上配置隧道接口,部署稍復雜。
  3. DR 模式(直接路由) - 最常用

    • 原理:LVS 只修改請求數據包的 MAC 地址,將其直接轉發給后端服務器。后端服務器處理請求后,使用自己的 IP 直接響應客戶端。
    • 優點:性能最高,響應流量不經過 LVS。
    • 缺點:LVS 和后端服務器必須在一個物理局域網(LAN)內,且需要在后端服務器上配置虛擬 IP(VIP)和 ARP 抑制。

二、四層(L4)負載均衡的最佳解決方案是什么?

關于“四層(L4)負載均衡的最佳解決方案”,答案并不是一個簡單的軟件或硬件名字,而是:沒有唯一的“最佳”方案,只有針對特定場景的“最合適”的方案。

選擇取決于你的性能需求、預算、功能要求、運維能力和業務場景

下面將從幾個維度來分析不同的解決方案。

2.1解決方案分類與對比(負載均衡的三種方式介紹)

四層負載均衡解決方案大致可以分為三類:

2.1.1 硬件負載均衡 (Hardware Load Balancer)
  • 代表產品:F5 BIG-IP, A10 Networks, Citrix NetScaler、深信服、華三、綠盟
  • 優點
    • 極致性能:基于專用硬件(ASIC芯片),性能極高,吞吐量大,延遲低。
    • 高可靠性:設備本身通常采用主動-備用集群模式,可靠性極高。
    • 功能豐富:除了負載均衡,還集成了防火墻(WAF)、DDoS防護、SSL加速等高級功能。
    • 廠商支持:提供專業的技術支持和售后服務。
  • 缺點
    • 極其昂貴:設備和許可證費用非常高,是中小公司的沉重負擔。
    • 擴展性差:擴展需要購買更多硬件,不夠靈活。
    • 封閉性:功能依賴廠商,定制化能力弱。
  • 最佳適用場景
    • 對性能和穩定性有極端要求的大型企業、金融、電信核心業務。
    • 需要集成高級安全功能(如全鏈路SSL加密、高級WAF)的場景。
2.1.2 軟件負載均衡 (Software Load Balancer)
  • 代表產品
    • LVS (Linux Virtual Server)(千萬級):正如之前討論的,是四層負載的標桿。
    • HAProxy(千萬級):既能做四層(TCP),也能做七層(HTTP)負載均衡,非常靈活和強大。
    • Nginx(5萬~20萬):雖然以七層HTTP負載均衡聞名,但從1.9版本開始也支持四層(TCP/UDP)負載均衡。
  • 優點
    • 成本極低:開源免費,只需在普通服務器上部署即可。
    • 靈活性高:可隨意部署在任何環境(物理機、虛擬機、云)。
    • 可擴展性強:性能不夠時,簡單增加服務器節點即可橫向擴展。
    • 透明可控:源碼開放,可根據業務需求進行定制和深度優化。
  • 缺點
    • 性能開銷:運行在操作系統用戶態/內核態,需要消耗CPU等資源,峰值性能通常低于硬件方案。
    • 運維復雜度:需要自行搭建、配置、維護和高可用保障(如LVS+Keepalived)。
  • 最佳適用場景
    • 絕大多數互聯網公司的首選,尤其是在成本控制和技術自主性要求高的場景。
    • LVS 非常適合做高性能、高并發的通用TCP/UDP流量分發
    • HAProxy 非常適合需要對協議進行精細控制(如MySQL、Redis、HTTP等)的場景。
2.1.3 云負載均衡 (Cloud Load Balancer)
  • 代表產品:AWS ELB/ALB/NLB, Google Cloud CLB, 阿里云SLB, 騰訊云CLB
  • 優點
    • 開箱即用:無需部署和維護,一鍵創建,自動擴展。
    • 高可用性:云服務商默認提供高可用保障,無需自己操心。
    • 按需付費:通常按使用量(連接數、流量)計費,成本模型靈活。
    • 與云生態集成:無縫集成云上的其他服務(如自動伸縮組、安全組)。
  • 缺點
    • 黑盒性:底層實現不可見,出現問題排查困難。
    • 功能限制:功能由云廠商決定,可能缺少某些高級定制功能。
    • 成本可能變高:在超大流量下,長期使用的總成本可能超過自建軟件方案。
    • vendor lock-in :存在一定的廠商鎖定風險。
  • 最佳適用場景
    • 云上業務的首選,尤其是創業公司和中型項目,希望快速上線且減少運維投入。
    • 業務流量波動巨大的場景,需要負載均衡器能自動彈性伸縮。

2.2 總結與選擇建議

方案類型性能成本擴展性運維復雜度最佳場景
硬件 (F5/A10)極高極高中等金融、電信等不差錢的核心系統
軟件 (LVS/HAProxy)極低 (免費)極好互聯網公司,追求極致性價比和控制力
云 (AWS NLB/ALB SLB)高 (彈性)按需付費 (靈活)極好 (自動)極低 (托管)云原生應用,快速業務迭代

如何選擇?

  1. 如果你的業務在公有云上

    • 優先考慮云廠商提供的負載均衡器(如AWS NLB/ALB)。這是最省心、最云原生、集成度最高的選擇,除非你有非常特殊的理由不用它。
  2. 如果你是自建數據中心的大型互聯網公司

    • LVS + Keepalived 通常是四層負載均衡的“事實標準”和最佳選擇。它提供了接近硬件的性能,同時擁有軟件方案的極致靈活性和低成本。用它來承載最核心、流量最大的入口業務(如電商、視頻、社交)。
    • HAProxy 可以作為LVS的補充,用于需要更多協議層控制的內部服務(如數據庫、微服務)。
  3. 如果你是傳統企業,預算充足且對穩定性有極端要求

    • 可以考慮硬件負載均衡器,將其作為整個數據中心流量的總入口和安全屏障。

因此,回到問題:四層負載均衡有最佳解決方案嗎?

  • 性能和穩定性看,硬件方案(F5) 是標桿。
  • 綜合性價比、可控性和行業實踐看,LVS 是自建環境中最受推崇的“最佳”解決方案。
  • 易用性和現代化看,云負載均衡器是云上的最佳選擇。

所以,“最佳”取決于你的技術棧、團隊能力和業務需求。但對于絕大多數技術驅動型公司而言,LVS 在四層負載均衡領域的地位,至今依然非常穩固,是當之無愧的經典解決方案


三、為什么要使用LVS?

使用 LVS 的主要原因可以歸結為以下幾點:

  1. 高性能與高吞吐量:LVS 工作在內核層,通過 IP 負載均衡技術,其轉發效率極高,能處理驚人的并發連接和流量,可以輕松應對百萬級別的并發請求,而其上限甚至可能超越千萬級。這是許多應用層負載均衡器難以比擬的。
  2. 高可用性(High Availability):通過將請求分發到多臺后端服務器,LVS 避免了單點故障。如果其中一臺后端服務器宕機,LVS 可以自動檢測到并將其從服務器池中移除,確保服務不中斷。
  3. 可擴展性(Scalability):當業務增長,服務器負載增加時,可以通過簡單地增加后端服務器來橫向擴展系統的處理能力。LVS 對外呈現一個單一的虛擬 IP,擴展過程對客戶端完全透明。
  4. 成本效益:LVS 是開源軟件,無需支付昂貴的商業負載均衡硬件(如 F5, A10)費用。它可以在普通的 PC Server 上運行,構建出性能極強的負載均衡系統。
  5. 透明性:對于客戶端而言,它們只與一個虛擬 IP(VIP)通信,完全感知不到后端有多少臺服務器以及它們是如何工作的。這簡化了客戶端的配置和連接管理。

總結:使用 LVS 是為了構建一個高性能、高可用、可擴展的服務器集群系統。


四、為什么要使用LVS+Keepalived集群?

這是一個非常重要的問題。LVS 本身是一個非常強大的負載均衡器,但它 本身存在一個單點故障(SPOF)問題

  • 問題:如果那臺運行 LVS 軟件的服務器宕機了,那么整個集群的入口就斷了,所有服務都無法訪問。LVS 解決了后端服務器的單點問題,但自己卻成了新的單點。

Keepalived 就是為了解決 LVS 的單點問題而生的。

Keepalived 是一個基于 VRRP 協議(虛擬路由冗余協議)的實現,它的核心作用是:

  1. 為 LVS 提供高可用(High Availability)

    • 你可以部署 兩臺(或多臺) 安裝有 LVS 和 Keepalived 的服務器。
    • 這些服務器通過 VRRP 協議進行通信,共同虛擬出一個 虛擬 IP(VIP),這個 VIP 就是對外提供服務的地址。
    • 在同一時間,只有一臺服務器持有這個 VIP 并承擔流量轉發工作,這臺服務器稱為 Master(主)
    • 另一臺(或多臺)服務器處于 Backup(備) 狀態,隨時待命。
    • Keepalived 會持續檢查 Master 服務器的健康狀態(通過心跳線)。如果 Master 服務器宕機,Backup 服務器會立即檢測到,并接管 VIP,升級為新的 Master,繼續提供服務。
    • 這個過程對客戶端是透明的,它們幾乎感知不到服務的切換,從而實現了 LVS 負載均衡器本身的高可用。
  2. 管理 LVS 配置和后端服務器健康檢查

    • Keepalived 不僅可以管理 VIP,還可以直接讀取它的配置文件來動態地管理 LVS 的規則(如添加/刪除后端服務器)。
    • 它還能定期對后端服務器(Real Server)進行健康檢查(如檢查特定 TCP 端口是否開啟),如果發現某臺服務器失效,就自動將其從 LVS 的轉發隊列中移除;當服務器恢復時,再自動將其加入。

因此,LVS + Keepalived 的組合形成了一個完美的解決方案:

  • LVS:負責高性能的流量負載均衡。
  • Keepalived
    1. 負責 LVS 自身的高可用,解決其單點故障問題。
    2. 負責 管理 LVS 配置后端服務器的健康檢查

這個組合共同構建了一個既 高性能高可用 的完整集群架構,是互聯網公司基礎架構中非常經典和核心的組件。

-------------------------------------以下是正文---------------------------------------

一、什么是集群?

1.1 核心思想:人多力量大

集群 的核心思想非常簡單,就是 “人多力量大”“團結就是力量”

它指的是將多臺獨立的計算機(稱為節點) 通過軟件和網絡連接起來,讓它們協同工作,共同完成一項任務。從外部看來,這一個集群就像一個單一的、功能更強大的系統

您可以把它想象成:

  • 螞蟻搬家:一只螞蟻力量很小,但一群螞蟻分工協作,就能搬動比它們自身重很多倍的食物。這群螞蟻就是一個“集群”。
  • 狼群狩獵:一匹狼很難捕獲大型獵物,但狼群通過分工、協作和圍攻,可以成功捕獵。這個狼群就是一個“集群”。

與集群相對的概念是“單機系統”,即所有任務都由一臺服務器完成。這臺服務器一旦出現問題,整個服務就完全中斷了。


1.2 為什么要使用集群?它的主要目標是什么?

構建集群主要為了實現以下三個關鍵目標:

  1. 高可用性

    • 目標:保證服務7x24小時不間斷
    • 如何實現:在集群中,如果有一臺服務器(節點)宕機了,它的工作任務會立刻被自動轉移到其他健康的服務器上。對用戶來說,服務幾乎沒有中斷,感覺不到后臺發生了故障。這消除了“單點故障”。
    • 比喻:就像一隊士兵站崗,其中一個士兵累了,隊長會立刻讓另一名休息好的士兵頂替他的位置,保證哨位始終有人。
  2. 高性能/負載均衡

    • 目標:處理超高并發的用戶請求或極其復雜的計算任務
    • 如何實現:將一個巨大的計算任務拆分成無數個小任務,分發給集群中成百上千臺計算機同時計算,最后將結果匯總。或者將海量的用戶請求,分攤給多臺服務器分別處理,避免單一服務器被壓垮。
    • 比喻:原本需要一個人抄寫100本書,任務繁重。現在找來100個人,每人同時抄寫1本,效率極大提升。這就是“負載均衡”。
  3. 高可擴展性

    • 目標:能夠根據業務需求,平滑地增加或減少系統的處理能力。
    • 如何實現:當業務增長、流量變大時,不需要更換更昂貴的大型機,只需要向集群中添加更多的普通商用服務器即可線性地提升整個集群的能力。這種方式成本更低、更靈活。
    • 比喻:一個倉庫不夠用了,就在旁邊蓋一個新的倉庫,而不是費盡力氣去改造和擴大原來的舊倉庫。

1.3 集群的主要類型

根據目標側重點不同,集群主要分為以下幾類:

類型主要目標典型應用場景簡單解釋
高可用集群減少服務中斷時間,保證業務連續性數據庫、關鍵業務應用、支付系統準備多臺服務器做“備胎”,主服務器宕機,備胎立刻頂上。
負載均衡集群分攤工作壓力,提高處理能力,從不同來處的同一事項讓很多服務器共同分別執行Web服務器、API網關、應用服務器一個“調度員”將大量 incoming 的請求,分發給一群工人處理。
高性能計算集群縮短計算時間,解決復雜問題,多臺服務器共同解決一件事科學研究、天氣預測、基因測序、AI模型訓練把一個巨大的計算題拆開,分給成千上萬臺電腦一起算。

1.4 一個簡單的例子:訪問淘寶網

當你訪問淘寶這種大型網站時,背后就是一個極其復雜的集群系統在為你服務:

  1. 你的請求首先到達 負載均衡集群(如Nginx, LVS),它像一個前臺接待,決定把你的請求分發給哪一組具體的應用服務器。
  2. 應用服務器處理你的搜索、商品瀏覽等請求,如果需要數據,它會向背后的 數據庫集群(如MySQL主從復制集群)請求數據。
  3. 數據庫集群本身也是一個高可用集群,主數據庫負責寫數據,從數據庫負責讀數據。如果主庫宕機,會自動切換到一個從庫頂上,保證數據不丟失、服務不停機。
  4. 你看到的商品圖片,則存儲在 分布式存儲集群(如阿里云的OSS)中。

這一切復雜的協作,對你來說都是透明的,你感受到的只是一個快速、穩定、永不宕機的“淘寶網”。


二、什么是負載均衡集群?

負載均衡集群 是一組相互協作的服務器(稱為一個“集群”),通過一個或多個負載均衡器作為統一的流量入口,將來自客戶端的請求或網絡負載智能地分發到集群中的多臺后端服務器上。

其核心目標是:

  1. 提升性能:通過并行處理,分擔單一服務器的壓力,提高整體系統的吞吐量和響應速度。
  2. 提高可用性:當集群中某臺服務器發生故障時,負載均衡器能夠自動將流量路由到其他健康的服務器,從而保證服務不中斷,實現高可用性。
  3. 增強可擴展性:當業務增長時,可以通過簡單地增加后端服務器數量來線性地提升系統處理能力,而無需修改應用架構。

2.1 核心組成部分

一個典型的負載均衡集群包含三個主要角色:

  1. 負載均衡器

    • 是整個系統的大腦和流量調度中心。
    • 它對外提供一個或多個虛擬IP地址,客戶端只訪問這個IP,而不直接訪問后端服務器。
    • 負責執行負載均衡算法、健康檢查和管理會話保持等。可以設置主備,解決“單點故障”。
  2. 后端服務器池

    • 是真正處理業務請求的服務器群體,也稱為“服務器農場”或“節點”。
    • 這些服務器通常提供完全相同的服務(即運行相同的應用程序)。
  3. 共享存儲(可選):

    • 對于需要共享狀態或數據的應用(如用戶會話文件、數據庫文件),后端服務器通常會訪問一個共享的存儲系統(如NAS、SAN或分布式文件系統),以保證數據一致性。可以設置主備,解決“單點故障”。

在這里插入圖片描述

2.2 負載均衡的工作原理

  1. 客戶端請求:客戶端向負載均衡器的虛擬IP發起請求。
  2. 流量接收:負載均衡器接收該請求。
  3. 算法決策:負載均衡器根據預設的負載均衡算法(如輪詢、加權輪詢等),從健康的服務器池中選擇一臺最合適的后端服務器。
  4. 請求轉發:負載均衡器將客戶端的請求轉發給選中的后端服務器。轉發方式有多種(見第四部分)。
  5. 響應返回:后端服務器處理請求,并將響應返回。響應可能直接返回給客戶端(DSR模式),或先返回給負載均衡器,再由負載均衡器返回給客戶端(NAT模式)。
  6. 健康檢查:負載均衡器持續地對所有后端服務器進行健康檢查(通過發送心跳包或檢測特定端口)。如果發現某臺服務器宕機或服務無響應,則將其從可用的服務器池中移除,確保不會有流量被發送到故障節點。

2.3 主要的負載均衡算法

負載均衡器根據不同的算法做出決策,常見的有:

  • 輪詢:依次將每個新請求分發到下一臺服務器,循環往復。簡單公平,但不考慮服務器性能差異。
  • 加權輪詢:在輪詢的基礎上,為性能更強的服務器分配更高的權重,使其處理更多的請求。
  • 最少連接:將新請求發送到當前連接數最少的服務器。非常適合處理長連接(如FTP、數據庫連接)等場景。
  • 加權最少連接:在最少連接的基礎上,考慮服務器的權重。
  • 源IP哈希:根據客戶端的源IP地址計算哈希值,將同一IP的請求總是轉發到同一臺服務器。這能很好地實現會話保持,但可能導致負載不均。
  • 最短響應時間:將請求轉發到平均響應時間最短的服務器,追求最佳用戶體驗。

2.4 部署模式(流量轉發方式)

根據網絡模型的不同,主要有三種部署模式:

  1. 四層負載均衡

    • 工作在OSI模型的傳輸層(TCP/UDP)。
    • 僅根據IP地址和端口號進行轉發,效率極高,速度快。
    • 代表技術:LVS(Linux Virtual Server)。
  2. 七層負載均衡

    • 工作在OSI模型的應用層(HTTP/HTTPS/FTP等)。
    • 可以解析應用層協議內容,根據URL、Cookie、消息頭等信息進行更智能的轉發(例如,將/api/的請求轉發到API服務器組,將/static/的請求轉發到靜態資源服務器組)。
    • 功能強大,但處理開銷比四層大。
    • 代表技術:Nginx、HAProxy。
  3. 混合模式

    • 在實際架構中,常采用分層設計。前端用四層負載均衡(如LVS)承接巨大流量并進行初次分發,后端再用七層負載均衡(如Nginx)進行更精細的業務邏輯分發。

2.5 主要優勢

  • 高并發處理:輕松應對大量用戶訪問,避免單點瓶頸。
  • 故障容錯:自動屏蔽故障節點,保證服務連續性,實現高可用。
  • 橫向擴展:通過增加服務器即可提升性能,擴展性強,成本可控。
  • 維護便利:可以在不中斷服務的情況下,對后端服務器進行升級、打補丁或下線維護。

2.6 典型應用場景

  • Web網站和應用:幾乎所有大型網站(如淘寶、百度、Google)都使用負載均衡集群來服務海量用戶。
  • API服務:為移動應用或微服務架構提供高可用的API接口。
  • 數據庫讀寫分離:將寫操作指向主數據庫,讀操作分發到多個從數據庫。
  • 游戲服務器:將玩家分配到不同的游戲服務器實例,以平衡負載。
  • 音視頻流媒體:將用戶請求分發到不同的流媒體服務器節點。

三、集群負載均衡調度技術的工作模式分析

集群負載均衡調度技術中最核心的工作模式有三種。這三種模式主要基于OSI網絡模型的第4層(傳輸層),關注的是如何將網絡連接和請求分發到后端服務器。

這三種經典模式是:

  1. 地址轉換模式(NAT)
  2. 直接路由模式(DR)
  3. IP隧道模式(IP Tunneling)

1. 地址轉換模式(NAT Mode)

NAT模式是負載均衡器作為網關,通過修改數據包的網絡地址來實現流量轉發的模式。

工作原理:

  1. 請求過程:
    • 客戶端發送請求到負載均衡器(LB)的虛擬IP(VIP)。
    • LB接收到請求后,根據調度算法(如輪詢、最小連接數等)選擇一臺后端真實服務器(RS)。
    • LB將請求數據包的目標IP地址(VIP)修改為選中的RS的真實IP地址,然后將包轉發給RS。
  2. 響應過程:
    • RS處理請求后,發送響應包。RS的默認網關必須指向LB
    • 響應包的目標IP是客戶端IP,但會先發送到LB。
    • LB收到響應包后,將響應包的源IP地址(RS的IP)修改為VIP,然后將包發送回客戶端。
      在這里插入圖片描述

特點:

  • 優點:
    • 可以隱藏后端服務器的真實IP地址,安全性較好。
    • 配置相對簡單,后端服務器可以位于任何網絡位置,只要LB能訪問到即可。
  • 缺點:
    • 性能瓶頸: 進出雙向的所有流量都必須經過LB。LB需要處理請求和響應兩次NAT操作,當流量很大時,LB容易成為性能瓶頸。
    • 后端服務器的網關必須指向LB,增加了網絡配置的復雜性。

適用場景: 小型系統或測試環境,對性能要求不高的場景。


2. 直接路由模式(DR Mode)

DR模式是性能最高、最常用的模式。它的核心思想是讓響應流量(通常數據量很大)不經過負載均衡器,直接返回給客戶端。

工作原理:

  1. 請求過程:

    • 客戶端發送請求到LB的VIP。
    • LB接收到請求后,根據調度算法選擇一臺后端RS。
    • LB不修改請求包的IP地址,而是只修改目標MAC地址,將其改為選中RS的MAC地址,然后將數據幀轉發給RS。
  2. 響應過程:

    • RS服務器上必須配置一個Loopback(回環)接口,并綁定相同的VIP地址,同時需要抑制該VIP的ARP響應。
    • RS收到請求后,發現目的IP(VIP)就在自己的本地環回接口上,于是直接處理該請求。
    • 處理完成后,RS直接構建響應包(源IP是VIP,目標IP是客戶端IP),并通過自己的默認網關(而不是LB)直接將響應包發送給客戶端。

    在這里插入圖片描述

特點:

  • 優點:
    • 極致性能: LB只處理入站請求,出站的大流量響應數據直接由RS發往客戶端,極大減輕了LB的負擔,避免了性能瓶頸。
  • 缺點:
    • 配置復雜: 需要在所有RS上配置Loopback和VIP,并設置ARP抑制,運維成本較高。
    • 網絡限制: LB和所有RS必須位于同一個物理局域網(二層網絡) 內,因為MAC地址轉發只能在二層網絡中進行。

適用場景: 高性能要求的Web服務、流媒體服務等響應數據量遠大于請求數據量的業務,是大型互聯網公司的首選方案。


3. IP隧道模式(IP Tunneling Mode)

IP隧道模式通過IP封裝技術(如IPIP)將請求轉發給后端服務器,類似于DR模式,響應流量也直接返回。

工作原理:

  1. 請求過程:
    • 客戶端發送請求到LB的VIP。
    • LB接收到請求后,根據調度算法選擇一臺后端RS。
    • LB將原始的客戶端請求數據包作為一個新的IP數據包的載荷(Payload),用一個新的IP頭進行封裝。新IP頭的源地址是LB的IP,目標地址是RS的IP。
    • 這個封裝后的包通過IP隧道發送給RS。
  2. 響應過程:
    • RS收到封裝包后,進行解封裝,得到原始的客戶端請求包。
    • RS發現原始包的目標IP(VIP)配置在自己的隧道接口上,于是處理該請求。
    • 處理完成后,RS直接構建響應包(源IP是VIP,目標IP是客戶端IP),并通過自己的默認網關直接將響應包發送給客戶端。
      在這里插入圖片描述

特點:

  • 優點:
    • 與DR模式一樣,響應流量不經過LB,性能高。
    • 可跨網段部署: LB和RS可以不在同一個局域網,只要IP可達即可,擴展性更強。
  • 缺點:
    • 配置復雜,需要在RS上支持IP隧道協議。
    • 建立隧道需要額外支出每個節點都需要公網地址。
    • IP封裝和解封裝帶來額外的CPU開銷。

適用場景: 需要高性能且LB與RS無法部署在同一個局域網的場景,例如跨機房、跨地域的負載均衡。


三種工作模式對比總結

特性地址轉換模式 (NAT)直接路由模式 (DR)IP隧道模式 (Tunneling)
性能較低(雙向瓶頸)極高(響應直連)高(響應直連,有封裝開銷)
配置復雜度簡單復雜(需配ARP抑制)復雜(需配隧道接口)
網絡要求無特殊要求LB和RS必須在同一局域網LB和RS只需IP可達
服務器網關必須指向LB指向路由器,不能指向LB指向路由器,不能指向LB
服務器IP私有IP,被隱藏真實IP,可與VIP同網段真實IP
主要缺點LB易成瓶頸網絡拓撲要求高封裝解封裝有開銷

如何選擇?

  • 追求極致性能且網絡可控:優先選擇 DR 模式
  • RS需要跨網段或跨地域部署:選擇 IP隧道模式
  • 簡單測試或小規模部署:可以使用 NAT 模式

這三種模式是構建高性能、高可用集群(如LVS, Linux Virtual Server)的理論基礎。在現代云環境中,雖然底層實現可能被抽象化,但其核心思想依然適用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96331.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96331.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96331.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

消息隊列-kafka完結

基本概念和操作 基本概念 簡單概念:::color4 Broker:如果將kafka比喻成數據倉庫網絡,那么Broker就是網絡中的倉庫節點,比如快遞站,在該節點內可以獨立運行,并且多個Broker可以連接起來,構建kafka集群Topic&…

Chromium 138 編譯指南 Windows篇:環境變量配置與構建優化(三)

引言配置,往往決定成敗。在軟件開發的世界里,環境變量就像是一位無聲的指揮家,默默地協調著各個組件的協同工作。對于Chromium 138這樣一個擁有數千萬行代碼的超大型項目而言,正確的環境變量配置更是編譯成功的關鍵所在。也許您曾…

LabVIEW加載 STL 模型至 3D 場景 源碼見附件

LabVIEW 中 STL 模型的導入與 3D 場景顯示,基于示例代碼邏輯,結合格式兼容性、功能實現步驟及多樣化顯示方式,適用于三維可視化溫控、機械零件模擬等場景。 1示例代碼 NI 社區案例 “Add an STL file to 3D scene using LabVIEW” 提供了經…

硅基計劃3.0 Map類Set類

文章目錄一、二叉搜索樹(排序樹)1. 概念初識2. 模擬實現1. 創建搜索樹節點2. 查找指定元素是否存在3. 插入4. 刪除二、Map類1. put——設置單詞以及其頻次2. get——獲取單詞頻次3. getOrDefault——獲取單詞頻次或返回默認值4. remove——刪除單詞頻次信…

LeetCode 刷題【73. 矩陣置零】

73. 矩陣置零 自己做 解&#xff1a;標記消除 class Solution { public:void setZeroes(vector<vector<int>>& matrix) {vector<bool> x(matrix.size(), false); //要置0的行vector<bool> y(matrix[0].size(), false); //…

Unity學習----【進階】TextMeshPro學習(一)--基礎知識點

來源于唐老獅的視頻教學&#xff0c;僅作記錄和感悟記錄&#xff0c;方便日后復習或者查找 一.導入TextMeshPro 對于新創建的工程&#xff0c;可以直接在這里導入TMP必要的資源&#xff08;上面&#xff09;&#xff0c;以及TMP的實例和擴展&#xff08;下面&#xff09; 導入之…

BigDecimal(用于處理超出double范圍的浮點數)

BigDecimal 是 Java 中 java.math 包提供的高精度十進制浮點數類&#xff0c;專為解決基本類型&#xff08;float/double&#xff09;的精度缺陷而設計&#xff0c;廣泛用于金融、科學計算等對精度要求極高的場景。以下從核心特性、使用方法、常見問題對比、注意事項等方面詳細…

Nginx 優化

文章目錄1、隱藏版本號2、修改用戶與組3、緩存時間4、日志切割5、連接超時6、更改進程數7、配置網頁8、防盜鏈1、隱藏版本號 隱藏nginx的版本號&#xff0c;為了防止惡意用戶利用已知漏洞進行攻擊 ## 查看版本號 curl -I http://192.168.10.23方法一&#xff1a;修改配置文件…

基于多模態與主動學習的車船飛機圖像識別系統研究與應用技術方案

技術方案 一、技術背景與研究現狀 圖像識別是計算機視覺的核心任務之一&#xff0c;隨著深度學習的發展&#xff0c;基于 卷積神經網絡&#xff08;CNN&#xff09; 與 視覺Transformer&#xff08;ViT&#xff09; 的圖像分類方法已成為主流。 根據《圖像分類技術選型——截止…

Word2Vec詞嵌入技術和動態詞嵌入技術

Word2Vec&#xff08;Word to Vector&#xff09;是 2013 年由 Google 團隊提出的無監督詞嵌入模型&#xff0c;是一種靜態詞嵌入技術&#xff0c;核心目標是將自然語言中的離散詞匯映射為低維、稠密的實數向量&#xff08;即 “詞向量”&#xff09;&#xff0c;讓向量空間的距…

Netty從0到1系列之Netty邏輯架構【上】

文章目錄一、Netty邏輯架構【上】1.1 網絡通信層1.1.1 BootStrap & ServerBootStrap1. ?核心方法鏈與配置2. ? 架構與流程3. ? 底層實現與原理分析4. ? 實踐經驗與總結1.1.2 Channel1.2 事件調度層1.2.1 事件調度層概述1.2.2 EventLoop【事件循環】1.2.3 EventLoopGrou…

Spring Cloud 高頻面試題詳解(含代碼示例與深度解析)

文章目錄Spring Cloud 高頻面試題詳解&#xff08;含代碼示例與深度解析&#xff09;1. 什么是 Spring Cloud&#xff1f;它與 Spring Boot 有什么關系&#xff1f;2. 服務發現&#xff1a;Eureka 和 Nacos 的區別與選型&#xff1f;Eureka 示例與原理Eureka vs Nacos 對比表3.…

Ascend310B重構驅動run包

在Atlas 200I AI加速模塊(Ascend310B)移植過程中如需要將自己編譯的Image、dt.img及內核模塊打包到啟動鏡像包中需要對"Ascend-hdk-310b-npu-driver-soc_<version>_linux-aarch64.run"(下面統稱驅動run包)進行重構。下面將介紹如何重構run包。 重構驅動run包需…

Leecode hot100 - 287. 尋找重復數

題目描述 287. 尋找重復數 - 力扣&#xff08;LeetCode&#xff09; 定一個包含 n 1 個整數的數組 nums &#xff0c;其數字都在 [1, n] 范圍內&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一個重復的整數。 假設 nums 只有 一個重復的整數 &#xff0c;返…

機器人控制器開發(驅動層——奧比大白相機適配)

文章總覽 編譯OrbbecSDK_ROS2的代碼 執行命令 colcon buildros2 launch orbbec_camera dabai.launch.py問題1&#xff1a; 運行時報錯&#xff1a; [component_container-1] [ERROR] [1757153916.450795107] [camera.camera_container]: Failed to load library: Could not…

`vcpkg` 微軟開源的 C/C++ 包管理工具的使用和安裝使用spdlog

vcpkg 是 微軟開源的 C/C 包管理工具&#xff0c;類似于 Python 的 pip、Node.js 的 npm、Rust 的 cargo。 它的主要作用是&#xff1a;幫助你快速下載、編譯、安裝和管理 C/C 第三方庫&#xff0c;并自動配置到你的項目&#xff08;比如 Visual Studio、CMake、MSBuild&#x…

Mysql 幻讀詳解

我們來詳細地聊一聊 MySQL InnoDB 中的“幻讀”&#xff08;Phantom Read&#xff09;問題。這是一個在數據庫事務隔離中非常核心且有時令人困惑的概念。 我會從定義、例子、原因以及解決方案幾個方面來徹底講清楚。 1. 什么是幻讀&#xff1f; 官方定義&#xff1a;幻讀指的…

如何生成 GitHub Token(用于 Hexo 部署):保姆級教程+避坑指南

如何生成 GitHub Token&#xff08;用于 Hexo 部署&#xff09;&#xff1a;保姆級教程避坑指南 前置說明&#xff1a;為什么需要 GitHub Token&#xff1f; 在使用 Hexo 部署博客到 GitHub Pages 時&#xff0c;你可能會遇到「密碼驗證失敗」或「需要雙重驗證」的問題——這…

常用加密算法之 AES 簡介及應用

相關系列文章 常用加密算法之 SM4 簡介及應用常用加密算法之 RSA 簡介及應用 引言 AES&#xff08;Advanced Encryption Standard&#xff0c;高級加密標準&#xff09;是一種??廣泛使用的對稱分組加密算法??&#xff0c;它使用相同的密鑰進行加密和解密操作&#xff0c…

Java面試問題記錄(一)

一、Java 核心基礎與進階1、我們知道 Java 中存在 “值傳遞” 和 “引用傳遞” 的說法&#xff0c;你能結合具體例子&#xff0c;說明 Java 到底是值傳遞還是引用傳遞嗎&#xff1f;這背后涉及到 JVM 中哪些內存區域的交互&#xff1f;Java中只有值傳遞&#xff0c;不存在引用傳…