LVS的DR模式部署

目錄

一、引言:高并發場景下的流量調度方案

二、LVS-DR 集群核心原理與架構設計

(一)工作原理與數據流向

數據包流向步驟3:

(二)模式特性與53網絡要求

三、實戰配置:從9環境搭建到參數調整

(一)案例環境規劃

(二)負載調度器配置步驟

1.?綁定 VIP 地址(虛接口方式)

2.?關閉內核重定向參數

3.?配置負載均衡策略(輪詢算法)

(三)真實服務器配置要點

1.?通過 lo 接口配置 VIP(回環接口)

2.?禁用 ARP 響應更新

3.?部署 Web 服務與 NFS 共享

四、集群驗證與狀態監控

(一)功能測試

(二)狀態查看與11策略驗證

五、總結與應用場景建議

六、常見問題排查與解決方案

(一)集群無響應或請求丟失

1.?IP 配置沖突

2.?ARP 廣播沖突

3.?iptables 防火墻攔截

(二)負載分配不均

1.?調度算法配置錯誤

2.?Real Server 性能差異

七、性能優化與擴展策略

(一)內核參數調優

1.?TCP 連接優化

2.?IPVS 連接超時設置

(二)高可用擴展

1.?主備調度器(Keepalived)

2.?橫向擴展 Real Server

八、LVS-DR 與其他負載均衡方案對比

九、總結與實踐建議

(一)最佳實踐清單

(二)學習路徑推薦


一、引言:高并發場景下的流量調度方案

在數字化業務爆發式增長的今天,如何應對海量用戶訪問帶來的系統壓力成為關鍵挑戰。負載均衡技術通過將流量合理分配至多個服務器,有效避免單點故障并提升系統擴展性。其中,LVS-DR(Direct Routing)模式憑借高性能、低延遲、流量分離處理的特性,成為構建大規模負載均衡集群的核心方案。本文將結合文檔《部署 LVS-DR 群集_掃描版.pdf》內容,詳細解析其工作原理、配置流程及實戰驗證方法。

二、LVS-DR 集群核心原理與架構設計

(一)工作原理與數據流向

LVS-DR 模式由Director Server(負載調度器)Real Server(真實服務器)組成,兩者需位于同一物理網絡并共享VIP(虛擬 IP 地址)。其核心邏輯為:

請求入口:客戶端通過 VIP 訪問集群,請求由 Director Server 接收。

數據轉發:Director Server 通過二層鏈路(MAC 地址重寫)將請求分發至 Real Server,源 IP 與目標 IP 保持不變,僅修改 MAC 地址。

響應直連:12Real Server 直接將響應報文通過 lo 接口返回客戶端,無需經過 Director Server,實現流量 “入站分發、出站直連”。

數據包流向步驟3:

客戶端發送請求(源 IP=CIP,目標 IP=VIP)至 Director Server。

Director4?Server 通過 IPVS 判斷為集群服務,修改 MAC 地址(源 MAC=Director,目標 MAC=Real Server)后轉發。

Real Ser2ver 接收報文,封裝響應(源 IP=VIP,目標 IP=CIP)并通過物理網卡直接返回客戶端。

(二)模式特性與53網絡要求

物理網絡限制:Director 與 Real Server 必須處于同一局域網,依賴二層通信(如 VLAN 或交換機直連)。

  • *IP 配置規則6*:
    • Real Server 通過 lo 接口配置 VIP(僅作響應源地址,不監聽請求)。
    • Real Se7rver 網關不可指向 Director IP,避免響應報文繞行。
  • *流量效率優勢8*:響應報文無需經過 Director,大幅降低調度器負載,提升吞吐量。

三、實戰配置:從9環境搭建到參數調整

(一)案例環境規劃

主機角色操作系統主 IP 地址VIP 地址核心組件
負載調度器(LVS)openEuler 24.03192.168.10.101192.168.10.100ipvsadm
真實服務器 1(Web1)openEuler 24.03192.168.10.102192.168.10.100Apache、NFS
真實服務器 2(Web2)openEuler 24.03192.168.10.103192.168.10.100Apache、NFS
NFS 共享服務器openEuler 24.03192.168.10.104-NFS

(二)負載調度器配置步驟

1.?綁定 VIP 地址(虛接口方式)

通過ens33:0虛接口為調度器配置 VIP,子網掩碼設為255.255.255.255(全 1 掩碼),確保 VIP 僅本地可見:

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0  # 復制主網卡配置
vim ifcfg-ens33:0  # 修改為VIP地址,NETMASK=255.255.255.255
IPADDR=192.168.10.100
systemctl restart NetworkManager  # 生效配置
2.?關閉內核重定向參數

避免調度器向客戶端發送錯誤路由重定向,修改/etc/sysctl.conf并生效:

echo "net.ipv4.conf.all.send_redirects=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.ens33.send_redirects=0" >> /etc/sysctl.conf
sysctl -p  # 應用配置
3.?配置負載均衡策略(輪詢算法)

使用ipvsadm添加集群服務,將請求分發至 Real Server(-g表示 DR 模式):

ipvsadm -C  # 清除原有策略
# 添加集群服務(TCP 80端口,輪詢算法rr)
ipvsadm -A -t 192.168.10.100:80 -s rr
# 添加真實服務器(權重均為1)
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.102 -g -w 1
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103 -g -w 1
ipvsadm-save > /etc/sysconfig/ipvsadm  # 保存策略
systemctl enable ipvsadm  # 開機自啟

(三)真實服務器配置要點

1.?通過 lo 接口配置 VIP(回環接口)

VIP 僅作為響應報文源地址,通過lo:0接口綁定并限制路由:

vip="192.168.10.100"
# 臨時配置(重啟失效)
ip addr add ${vip}/32 dev lo label lo:0
ip route add local ${vip}/32 dev lo
# 永久配置(寫入rc.local)
echo "ip addr add ${vip}/32 dev lo label lo:0" >> /etc/rc.local
echo "ip route add local ${vip}/32 dev lo" >> /etc/rc.local
chmod +x /etc/rc.local
2.?禁用 ARP 響應更新

防止 Real Server 廣播 VIP 的 MAC 地址,避免與 Director 沖突:

vim /etc/sysctl.conf
# 添加以下參數
net.ipv4.conf.all.arp_ignore=1  # 忽略非本地目標IP的ARP請求
net.ipv4.conf.all.arp_announce=2 # 限制ARP公告僅發送主IP
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
sysctl -p  # 生效配置
3.?部署 Web 服務與 NFS 共享

以 Apache 為例,掛載 NFS 共享實現內容一致性(文檔建議參考第 1 章配置 NFS):

yum -y install httpd  # 安裝Web服務
mount 192.168.10.104:/var/www/html /var/www/html  # 掛載NFS共享
echo "<h1>LVS負載均衡群集--測試網頁</h1>" > /var/www/html/index.html  # 創建測試頁
systemctl start httpd && systemctl enable httpd  # 啟動服務

四、集群驗證與狀態監控

(一)功能測試

通過瀏覽器訪問http://192.168.10.100,刷新頁面觀察請求是否輪詢分發至 Web1 和 Web2。若 Real Server 配置不同測試內容(如不同 HTML 標題),可直觀驗證負載均衡效果。

(二)狀態查看與11策略驗證

使用ipvsadm -ln命令查看當前集群狀態,確認調度算法、Real Server 列表及連接統計:

ipvsadm -ln
# 示例輸出(輪詢算法rr,兩臺Real Server)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.100:80 rr-> 192.168.10.102:80            Route   1      0          3-> 192.168.10.103:80            Route   1      0          2

五、總結與應用場景建議

LVS-DR 模式通過二層轉發 + 響應直連的設計,顯著提升了高并發場景下的流量處理效率,適用于電商平臺、視頻網站等需要低延遲、高吞吐的業務場景。但需注意:

網絡局限性:依賴同一局域網,跨網段部署需結合其他模式(如 LVS-TUN)。

配置關鍵點:VIP 路由限制、ARP 參數調整是避免集群沖突的核心。

通過本文的原理剖析與710實戰操作,可快速掌握 LVS-DR 集群的搭建與調優方法,為構建穩定的分布式系統提供技術支撐。

以下是對 LVS-DR 集群的進一步擴展內容,涵蓋常見問題排查、性能優化方向及與其他負載均衡方案的對比,幫助讀者更全面掌握該技術:

六、常見問題排查與解決方案

(一)集群無響應或請求丟失

1.?IP 配置沖突
  • 現象:客戶端無法訪問 VIP,或 Real Server 響應報文未走 lo 接口。
  • 排查
    • 檢查 Director 與 Real Server 的 VIP 是否均通過正確接口(調度器 ens33:0,Real Server lo:0)配置。
    • 確保 Real Server 的網關未指向 Director IP(執行route -n查看默認網關)。
  • 解決:修正網關配置,確保 Real Server 直接通過本地網關訪問外網。
2.?ARP 廣播沖突
  • 現象:客戶端 ping VIP 返回 Real Server 的 MAC 地址,導致請求未到達 Director。
  • 排查:在 Real Server 執行arp -a,查看是否錯誤廣播 VIP 的 MAC 地址。
  • 解決
    • 確認arp_ignore=1arp_announce=2已生效(sysctl net.ipv4.conf.all.arp_ignore查看值是否為 1)。
    • 重啟網絡服務或服務器使配置生效。
3.?iptables 防火墻攔截
  • 現象:請求到達 Director 后未被轉發,ipvsadm日志無記錄。
  • 排查:檢查調度器的 iptables 規則是否攔截了 VIP 流量。
  • 解決
    • 開放 VIP 的 HTTP/HTTPS 端口:
      iptables -A INPUT -d 192.168.10.100 -p tcp --dport 80 -j ACCEPT
      
    • 關閉 iptables(測試環境適用):
      systemctl stop firewalld && systemctl disable firewalld
      

(二)負載分配不均

1.?調度算法配置錯誤
  • 現象ipvsadm -ln顯示某臺 Real Server 連接數遠高于另一臺。
  • 排查:確認調度算法是否正確(如輪詢rr、加權輪詢wrr),權重配置是否一致。
  • 解決
    • 重置策略并重新添加 Real Server:
      ipvsadm -C
      ipvsadm -A -t VIP:80 -s wrr  # 使用加權輪詢
      ipvsadm -a -r RealServer1 -g -w 2  # 權重設為2
      ipvsadm -a -r RealServer2 -g -w 1  # 權重設為1
      
2.?Real Server 性能差異
  • 現象:高性能節點負載低,低性能節點負載高。
  • 解決:根據服務器配置調整權重(-w參數),性能強的節點分配更高權重。

七、性能優化與擴展策略

(一)內核參數調優

1.?TCP 連接優化

在 Director Server 和 Real Server 中調整以下參數,提升 TCP 處理效率:

vim /etc/sysctl.conf
# 快速回收TIME_WAIT連接
net.ipv4.tcp_fin_timeout=30
# 允許重用TIME_WAIT連接的端口
net.ipv4.tcp_tw_reuse=1
# 增加TCP半連接隊列長度
net.ipv4.tcp_max_syn_backlog=8192
sysctl -p
2.?IPVS 連接超時設置

縮短空閑連接超時時間,釋放資源:

ipvsadm -E -t VIP:80 -s rr -p 60  # 設置連接保持時間為60秒

(二)高可用擴展

1.?主備調度器(Keepalived)

為避免 Director 單點故障,引入 Keepalived 實現雙機熱備:

  • 配置要點
    • 主備調度器共享虛擬 IP(VIP)。
    • 通過 VRRP 協議監控主節點狀態,故障時自動切換。
  • 參考命令
    yum install keepalived  # 安裝Keepalived
    # 主節點配置(/etc/keepalived/keepalived.conf)
    vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100virtual_ipaddress {192.168.10.100}
    }
    
2.?橫向擴展 Real Server

當集群負載超過現有節點處理能力時,可直接添加新的 Real Server 至ipvsadm策略,無需停機:

ipvsadm -a -t VIP:80 -r 192.168.10.105 -g -w 1  # 添加新節點

八、LVS-DR 與其他負載均衡方案對比

方案核心原理優勢局限性適用場景
LVS-DR二層轉發 + MAC 重寫高性能、低延遲、流量分離依賴同一局域網大規模高并發集群
Nginx七層代理(HTTP/HTTPS)支持 URL 路由、緩存、動態負載均衡單機性能有限(萬級連接)應用層負載均衡(如 Web)
HAProxy四層 / 七層代理支持 TCP/UDP、健康檢查、會話保持配置復雜度較高混合協議場景
云廠商 SLB托管式負載均衡自動擴展、高可用依賴云平臺、成本較高云原生架構

九、總結與實踐建議

(一)最佳實踐清單

  1. 網絡規劃:確保 Director 與 Real Server 在同一 VLAN,使用交換機而非路由器連接(避免三層轉發)。
  2. 配置驗證
    • 部署后通過arp -n檢查客戶端是否獲取 Director 的 MAC 地址(正常應為調度器 MAC)。
    • 使用tcpdump抓包分析請求 / 響應路徑,確認響應報文直接由 Real Server 發出。
  3. 監控體系
    • 監控 Director 的 CPU / 內存使用率(避免成為瓶頸)。
    • 監控 Real Server 的負載、連接數及健康狀態(可結合 Nagios 或 Prometheus)。

(二)學習路徑推薦

  1. 基礎鞏固:深入理解 IPVS 內核模塊原理(參考《Linux 內核源代碼情景分析》)。
  2. 實戰進階:在測試環境中嘗試混合使用 LVS-DR 與 Nginx(LVS 負責四層分發,Nginx 處理七層邏輯)。
  3. 前沿探索:研究 Kubernetes 中 LVS 的應用(如 kube-proxy 的 IPVS 模式)。

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

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

相關文章

8種常見數據結構及其特點簡介

一、8種常見數據結構 1. 數組&#xff08;Array&#xff09; 簡介&#xff1a;數組是有序元素的序列&#xff0c;連續內存塊存儲相同類型元素&#xff0c;通過下標直接訪問。數組會為存儲的元素都分配一個下標&#xff08;索引&#xff09;&#xff0c;此下標是一個自增連續的…

通過mailto:實現web/html郵件模板喚起新建郵件并填寫內容

一、背景 在實現網站、html郵件模板過程中&#xff0c;難免會遇到需要通過郵箱向服務提供方發起技術支持等需求&#xff0c;因此&#xff0c;我們需要通過一個功能&#xff0c;能新建郵件并提供模板&#xff0c;提高溝通效率 二、mailto協議配置說明 參數描述mailto:nameema…

好用但不常用的Git配置

參考文章 文章目錄 tag標簽分支新倉庫默認分支推送 代碼合并沖突處理默認diff算法 tag標簽 默認是以字母順序排序&#xff0c;這會導致一些問題&#xff0c;比如0.5.101排在0.5.1000之后。為了解決這個問題&#xff0c;我們可以把默認排序改為數值排序 git config --global t…

第六十八篇 從“超市收銀系統崩潰”看JVM性能監控與故障定位實戰

目錄 引言&#xff1a;當技術問題遇上生活場景一、JVM的“超市貨架管理哲學”二、收銀員工具箱&#xff1a;JVM監控三板斧三、典型故障診斷實錄四、防患于未然的運維智慧五、結語&#xff1a;從故障救火到體系化防控 引言&#xff1a;當技術問題遇上生活場景 想象一個周末的傍…

tauri2項目打開某個文件夾,類似于mac系統中的 open ./

在 Tauri 2 項目中打開文件夾 在 Tauri 2 項目中&#xff0c;你可以使用以下幾種方法來打開文件夾&#xff0c;類似于 macOS 中的 open ./ 命令功能&#xff1a; 方法一&#xff1a;使用 shell 命令 use tauri::Manager;#[tauri::command] async fn open_folder(path: Strin…

編譯pg_duckdb步驟

1. 要求cmake的版本要高于3.17&#xff0c;可以通過下載最新的cmake的程序&#xff0c;然后設置.bash_profile的PATH環境變量&#xff0c;將最新的cmake的bin目錄放到PATH環境變量的最前面 2. g的版本要支持c17標準&#xff0c;否則會報 error ‘invoke_result in namespace ‘…

GO 語言中變量的聲明

Go 語言變量名由字母、數字、下劃線組成&#xff0c;其中首個字符不能為數字。Go 語言中關鍵字和保留字都不能用作變量名。Go 語言中的變量需要聲明后才能使用&#xff0c;同一作用域內不支持重復聲明。 并且 Go 語言的變量聲明后必須使用。 1. var 聲明變量 在 Go 語言中&…

windows和mac安裝虛擬機-詳細教程

簡介 虛擬機&#xff1a;Virtual Machine&#xff0c;虛擬化技術的一種&#xff0c;通過軟件模擬的、具有完整硬件功能的、運行在一個完全隔離的環境中的計算機。 在學習linux系統的時候&#xff0c;需要安裝虛擬機&#xff0c;在虛擬機上來運行操作系統&#xff0c;因為我使…

XCTF-web-Cat

嘗試輸入127.0.0.1 嘗試127.0.0.1;ls 試了很多&#xff0c;都錯誤&#xff0c;嘗試在url里直接輸入&#xff0c;最后發現輸入%8f報錯 發現了Django和DEBUG 根據Django的目錄&#xff0c;我們使用進行文件傳遞 嘗試?url/opt/api/database.sqlite3&#xff0c;找到了flag

C#、C++、Java、Python 選擇哪個好

選擇哪種語言取決于具體需求&#xff1a;若關注性能和底層控制選C、若開發企業級應用選Java、若偏好快速開發和豐富生態選Python、若構建Windows生態應用選C#。 以Python為例&#xff0c;它因語法簡潔、開發效率高、應用廣泛而在AI、數據分析、Web開發等領域大放異彩。根據TIOB…

CEH Practical 實戰考試真題與答案

什么是 CEH Practical&#xff1f; CEH Practical 是 EC-Council 推出的 Certified Ethical Hacker&#xff08;CEH&#xff09;認證項目中的一項高級動手實踐考試。它不同于傳統的理論考試&#xff0c;側重于在真實環境中檢驗考生的實操能力。 CEH Practical 主要亮點 &…

自媒體運營新利器:賬號矩陣+指紋瀏覽器,解鎖流量密碼

你是否因多賬號關聯被平臺封禁&#xff1f;或在多設備間切換賬號效率低下&#xff1f;賬號矩陣與指紋瀏覽器的結合&#xff0c;正是解決這些難題的利器&#xff01; 一、核心優勢&#xff1a;安全、高效、精準、協同 1**. 保障賬號安全** 指紋瀏覽器模擬設備指紋與兔子住宅…

將 AI 解答轉換為 Word 文檔

相關說明 DeepSeek 風靡全球的2025年&#xff0c;估計好多人都已經試過了&#xff0c;對于理科老師而言&#xff0c;有一個使用痛點&#xff0c;就是如何將 AI 輸出的 mathjax 格式的符號轉化為我們經常使用的 mathtype 格式的&#xff0c;以下舉例說明。 溫馨提示&#xff1…

Tailwind CSS 實戰,基于 Kooboo 構建 AI 對話框頁面(三):實現暗黑模式主題切換

基于前兩篇的內容&#xff0c;為頁面添加主題切換功能&#xff0c;實現網站頁面的暗黑模式&#xff1a; Tailwind css實戰&#xff0c;基于Kooboo構建AI對話框頁面&#xff08;一&#xff09;-CSDN博客 Tailwind css實戰&#xff0c;基于Kooboo構建AI對話框頁面&#xff08;…

主題閱讀輸出-關于成年/成熟的認識-01-學習

快速回顧 學習的最終目的&#xff0c;成年人的學習特點&#xff0c;學習對象的選取(學什么)&#xff0c;學習過程的理解&#xff0c;對學習狀態的覺察&#xff1b; 參考來源 書籍 《心發怒放的人生》 《我的第一本人生規劃手冊》 《五維學習力》 《學習的答案》 01-學習是什…

GitLab 18.0 正式發布,15.0 將不再受技術支持,須升級【一】

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…

Python+Flask+Html做一個簡單的測試聯調工具

一、場景&#xff1a; 當與外部聯調或者內部需要走一些固定流程&#xff0c;且重復的事情&#xff0c;往往需要測試經常性的配合且做重復的工作的聯調&#xff0c;這時候需要一些工具作為輔助&#xff0c;或者提供給外部 二、框架&#xff1a; 可以通過PythonFlaskHtml做一個…

Qt5、C++11 獲取wifi列表與wifi連接

一、獲取wifi列表 .h 文件內容 #include <QWidget> #include <QVBoxLayout> #include <QPushButton> #include <QCheckBox> #include <QListWidget>class Setting : public QWidget {Q_OBJECT public:explicit Setting(QWidget *parent nul…

互聯網大廠Java求職面試:AI與大模型應用集成中的架構難題與解決方案-1

互聯網大廠Java求職面試&#xff1a;AI與大模型應用集成中的架構難題與解決方案-1 場景描述 鄭薪苦&#xff0c;一個看似不靠譜但技術潛力巨大的程序員&#xff0c;在一次針對AI與大模型應用集成的面試中&#xff0c;被一位技術總監級別的人物提問。面試官以嚴肅專業的態度&a…

SpringMVC實戰:動態時鐘

引言 在現代 Web 開發中&#xff0c;選擇一個合適的框架對于項目的成功至關重要。Spring MVC 作為 Spring 框架的核心模塊之一&#xff0c;以其清晰的架構、強大的功能和高度的可配置性&#xff0c;成為了 Java Web 開發領域的主流選擇。本文將通過一個“動態時鐘”的實戰項目…