LVS—DR模式

LVS—DR模式

LVS DR 模式詳細簡介

一、模式定義與核心原理

LVS DR(Direct Routing)模式,即直接路由模式,是 Linux Virtual Server(LVS)實現負載均衡的經典模式之一,工作于網絡四層(傳輸層)。其核心原理為:客戶端向負載均衡調度器(Director Server,簡稱 DS)發起請求,DS 接收到數據包后,僅修改數據包的目標 MAC 地址為后端真實服務器(Real Server,簡稱 RS)的 MAC 地址,源 IP 和目標 IP 地址保持不變,隨后將數據包轉發至 RS;RS 處理完請求后,直接將響應數據返回給客戶端,無需再次經過 DS,實現了請求與響應路徑的分離。

二、數據流走向詳解

(一)請求階段

  1. 客戶端(Client)發送請求,數據包的源 IP 為客戶端 IP(CIP),目標 IP 為虛擬 IP(VIP,綁定在 DS 上),源 MAC 為客戶端 MAC,目標 MAC 為 DS 的 MAC。

  2. 數據包到達 DS 后,經過 PREROUTING 鏈進入內核,IPVS 模塊判斷請求屬于集群服務,將目標 MAC 地址修改為后端某臺 RS 的 MAC 地址,源 MAC 改為 DS 的 MAC,IP 地址不變,然后通過 POSTROUTING 鏈將數據包轉發給對應的 RS。

(二)響應階段

  1. RS 接收到數據包后,由于目標 MAC 是自己的 MAC 地址,開始處理請求。處理完成后,RS 將響應數據包的源 IP 設置為 VIP(因為請求的目標 IP 是 VIP),目標 IP 設置為 CIP,源 MAC 為 RS 的 MAC,目標 MAC 為客戶端 MAC。

  2. 響應數據包直接從 RS 發送回客戶端,不經過 DS。

為更直觀呈現,可用流程圖展示:

三、核心優勢

  1. 高吞吐量與低延遲:DS 僅負責請求調度,響應數據直接由 RS 返回客戶端,減少了 DS 的處理壓力,大幅提升系統的吞吐量和響應速度,能高效處理高并發請求。

  2. 靈活的 IP 配置:RS 可以使用私有地址,降低成本;也可使用公網地址,滿足特定的訪問需求,網絡部署更加靈活。

  3. 良好的擴展性:通過增加 RS 的數量,可輕松擴展集群的處理能力,適應業務規模的增長。

  4. 資源利用率高:由于 DS 負載輕,無需配置高性能設備,降低硬件成本,同時充分利用 RS 的計算資源。

四、典型使用場景

  1. 大型網站與電商平臺:在 “雙十一” 等大促活動期間,面臨海量用戶訪問,LVS DR 模式能快速分發請求,保障系統穩定運行,提升用戶購物體驗。

  2. 內容分發網絡(CDN):用于將靜態資源(如圖片、視頻、腳本文件等)緩存到分布在各地的 RS 上,用戶請求時通過 DR 模式快速獲取資源,加速網頁加載速度。

  3. 在線游戲服務器:游戲在線人數眾多,對實時性要求高,DR 模式可實現高效的流量分發,確保游戲服務器穩定運行,減少玩家延遲卡頓現象。

  4. 企業內部應用系統:企業內部的 ERP、OA 等系統,在多人同時訪問時,LVS DR 模式能均衡負載,提高系統可用性和響應效率。

示例

環境配置

101 =nfs

102=web1

103=web2

104=lvs

105=客戶端

配置lvs

[root@bogon ~]# cd /etc/sysconfig/network-scripts/
[root@bogon network-scripts]# ls
ifcfg-ens160
[root@bogon network-scripts]# cp ifcfg-ens160 ifcfg-ens160:0
[root@bogon network-scripts]# ls
ifcfg-ens160  ifcfg-ens160:0
[root@bogon network-scripts]# vim ifcfg-ens160:0
[root@bogon network-scripts]# nmcli c reload
[root@bogon network-scripts]# nmcli c up ens160
連接已成功激活(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/3)
###編輯虛擬網卡配置地址為vip 192.168.10.172
[root@bogon network-scripts]# ipvsadm -A -t 192.168.10.172:80 -s wrr
[root@bogon network-scripts]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
[root@bogon network-scripts]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 1
[root@bogon network-scripts]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.172:80 wrr-> 192.168.10.102:80            Route   1      0          0         -> 192.168.10.103:80            Route   1      0          0         

配置web

[root@bogon ~]#  ip addr add 192.168.10.172/32 dev lo label  lo:0
[root@bogon ~]# ifconfig
[root@bogon ~]# ip route add local 192.168.10.172/32 dev lo[root@bogon ~]# vim /etc/rc.local #!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.touch /var/lock/subsys/local
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 deb lo
~                                                  [root@bogon ~]# chmod +x /etc/rc.local 
###重啟查看是否生效
[root@bogon ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=1
[root@bogon ~]# sysctl -p

代碼解釋

# 添加一個回環接口別名,綁定IP地址192.168.10.172到lo:0
ip addr add 192.168.10.172/32 dev lo label  lo:0# 查看網絡接口配置(ifconfig為舊版命令,推薦使用ip addr)
ifconfig# 添加一條本地路由規則,確保該IP地址的流量通過回環接口處理
ip route add local 192.168.10.172/32 dev lo# 編輯系統啟動腳本,設置開機自動執行網絡配置
vim /etc/rc.local #!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
# ...(原有注釋保持不變)...# 創建鎖文件標記腳本已執行
touch /var/lock/subsys/local# 開機自動添加回環接口別名
ip addr add 192.168.10.172/32 dev lo label lo:0# 開機自動添加本地路由(注意:原命令中"deb"為拼寫錯誤,已修正為"dev")
ip route add local 192.168.10.172/32 dev lo# 賦予啟動腳本執行權限
chmod +x /etc/rc.local ###重啟查看是否生效# 編輯系統內核參數配置文件
vim /etc/sysctl.conf # ARP優化參數配置說明:
# arp_ignore=1: 僅在接收到的ARP請求所請求的IP地址
# 配置在接收網卡上時,才給予響應
net.ipv4.conf.all.arp_ignore=1# arp_announce=2: 總是使用最合適的本地地址來響應對端的ARP請求
# (確保從正確的網卡發送ARP響應)
net.ipv4.conf.all.arp_announce=2# 對默認接口應用相同的ARP優化策略
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce=2# 對回環接口應用ARP優化策略(注意:此處arp_announce設為1,
# 表示盡量使用合適的本地地址響應,與all/default的策略略有不同)
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=1# 使sysctl配置立即生效
sysctl -p

配置nfs

[root@bogon wwwroot]# vim /etc/exports
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)

在兩臺web上

[root@bogon html]# mount 192.168.10.101:/opt/wwwroot /var/www/html/

驗證

[root@bogon html]# df -hT
文件系統                    類型      大小  已用  可用 已用% 掛載點
/dev/mapper/openeuler-root  ext4      191G  1.9G  180G    1% /
devtmpfs                    devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                       tmpfs     1.7G     0  1.7G    0% /dev/shm
tmpfs                       tmpfs     4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                       tmpfs     675M  9.1M  666M    2% /run
tmpfs                       tmpfs     1.7G     0  1.7G    0% /tmp
/dev/nvme0n1p2              ext4      974M  174M  733M   20% /boot
192.168.10.101:/opt/wwwroot nfs4      191G  1.8G  180G    1% /var/www/html

客戶端訪問lvs

[root@localhost ~]# curl 192.168.10.172
web1
[root@localhost ~]# curl 192.168.10.172
web2

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

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

相關文章

寶玉分享VibeCoding構建Agent

借助 Claude Code 完成的一個翻譯智能體 (Translator Agent)。你只需輸入一段文字、一個網址或一個本地文件路徑,它就能自動提取內容并完成翻譯。更酷的是,它還能修正原文中的拼寫錯誤,確保譯文的準確流暢。 到底什么是“真正的”AI Agent&a…

在spring boot中使用Logback

在 Spring Boot 中使用 Logback 作為日志框架是開發中的常見需求,因其高性能和靈活配置而廣受青睞。以下是詳細實踐指南,結合了配置方法、代碼示例及最佳實踐: 🔧 一、依賴配置 Spring Boot 默認集成了 Logback,無需手…

騰訊云 Lighthouse 輕量應用服務器:數據驅動的架構選型指南

摘要:騰訊云 Lighthouse 作為面向輕量級應用場景的優化解決方案,通過高性價比套餐式售賣、開箱即用應用模板及流量包計費模式,顯著降低中小企業與開發者的上云門檻。本文基于性能測試與橫向對比,量化分析其核心優勢與適用邊界。 …

Linux TCP/IP協議棧中的TCP輸入處理:net/ipv4/tcp_input.c解析

在網絡通信領域,TCP(傳輸控制協議)因其可靠的面向連接特性而被廣泛應用。Linux內核的TCP/IP協議棧實現了對TCP協議的高效處理,其中net/ipv4/tcp_input.c文件扮演著關鍵角色,負責處理TCP數據包的輸入邏輯。下面是對該文件核心功能的深入剖析。 一、TCP數據包接收與處理 (…

物聯網傳輸網關、RTU、DTU及SCADA系統技術解析

目錄 摘要 一、引言 二、物聯網傳輸網關 1. 定義 2. 類型 3. 分類 4. 工作原理 5. 差異分析 總結: 三、RTU(遠程終端單元) 1. 定義 2. 工作原理 3. 特點 4. 應用場景 四、DTU(數據傳輸單元) 1. 定義 …

【unity游戲開發——熱更新】YooAsset簡化資源加載、打包、更新等流程

注意:考慮到熱更新的內容比較多,我將熱更新的內容分開,并全部整合放在【unity游戲開發——熱更新】專欄里,感興趣的小伙伴可以前往逐一查看學習。 文章目錄 前言1、什么是YooAsset?2、系統需求3、系統特點 一、下載安裝…

AWS RDS/Aurora 開啟 Database Insights 高級模式全攻略

想要深入了解數據庫性能問題?AWS Database Insights 高級模式為您提供強大的性能分析工具。本文詳細對比標準模式與高級模式的功能差異,并提供完整的啟用指南和實戰測試結果。 一、Database Insights 模式對比 AWS CloudWatch Database Insights 提供兩種模式:標準模式和高…

XML SimpleXML

XML SimpleXML 引言 XML(可擴展標記語言)是一種用于存儲和傳輸數據的標記語言,它被廣泛應用于Web服務和數據交換。SimpleXML是PHP中一個處理XML數據非常便捷的庫。本文將詳細介紹SimpleXML庫的基本用法,幫助讀者快速掌握XML數據…

Docker簡單介紹與使用以及下載對應鏡像(項目前置)

DockerDocker安裝Docker卸載Docker配置鏡像源配置鏡像加速 Docker服務命令1.鏡像操作命令2.容器操作命令 安裝Mysql**數據卷掛載** Docker 在linux中軟件安裝說起: 以前在linux中安裝軟件,是直接安裝在linux操作系統中,軟件和操作系統耦合度很高,不方便管理. 因為linux版本不…

MyBatis 簡介

MyBatis 簡介 MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射,能夠幫助開發者將 Java 對象與數據庫表進行靈活映射,簡化數據持久化操作。以下從多個維度詳細介紹 MyBatis: 一、核心定位與優勢 輕量級…

自監督學習在合成孔徑聲吶目標識別中的應用之論文閱讀

自監督學習在合成孔徑聲吶目標識別中的應用 BW Sheffield 美國巴拿馬城海軍水面作戰中心 1 引言 在自主水下航行器(AUVs)中應用計算機視覺面臨著獨特的挑戰,因為海洋環境往往條件不可預測且極為嚴苛。傳統計算機視覺研究主要依賴光學相機成像,而在光照不足、懸浮沉積物及水…

進程間通信2(命名管道)linux

1 命名管道 前面講到匿名管道,有一個很大的限制,那就是只有具有相同祖先(具有親緣關系)的進程間才能進行通信,但是如果想實現不同進程間的通信,這個時候命名管道就發揮著巨大作用。 命名管道是一種特殊類…

簡單通過SenseVoice給自己配置一個語音轉文字服務

首先把代碼下載下來 gitgithub.com:FunAudioLLM/SenseVoice.git 然后寫一個docker文件 FROM ubuntu:latestRUN apt-get update -y RUN apt-get install -y python3-full python3-pip RUN mkdir -p /SenseVoice WORKDIR /SenseVoice RUN python3 -m venv . ENV USE_CUDA0 EXP…

網絡釣魚攻擊

?根據2023年Proofpoint年度網絡釣魚報告顯示:91%的針對性攻擊始于釣魚郵件,平均每30秒就有一個企業成為攻擊目標,全球損失超過$6.5B? 一、釣魚攻擊技術深度解析 1. 釣魚攻擊核心技術架構 2. 現代釣魚技術演進 ?攻擊向量升級路線? ?當前…

uvicorn api:app --host 0.0.0.0 --port 7777容器運行失敗

docker logs pycorrector-container-gpu 你這個報錯的核心是: ERROR: Error loading ASGI app, Could not import module "api".這說明: uvicorn api:app 沒有找到 api.py 文件,或者沒法導入 app 對象。 🔍 一步步排查…

熱成像儀測MOSFET溫度

熱成像儀測MOSFET溫度 根據提供的搜索結果,熱測量方法主要分為非接觸式和接觸式兩大類,針對不同材料特性和測量場景各有優勢。以下是核心方法的總結及關鍵技術要點: 🔥 一、非接觸式熱測量方法 紅外熱成像技術 原理:通…

Dagster資產元數據與標簽:數據治理的利器

在現代數據棧中,有效的數據治理至關重要。Dagster作為領先的數據編排平臺,提供了強大的資產元數據和標簽功能,幫助團隊更好地理解、組織和跟蹤數據資產。本文將深入探討Dagster中的資產元數據和標簽功能,展示如何利用這些功能提升…

基于物聯網的智能飲水機系統設計

標題:基于物聯網的智能飲水機系統設計 內容:1.摘要 隨著物聯網技術的快速發展,智能設備在日常生活中的應用越來越廣泛。本研究的目的是設計一種基于物聯網的智能飲水機系統,以提高飲水機的使用便捷性和智能化程度。方法上,通過傳感器實時監測…

DP讀書:NEC年終小結和顯示器【明基rd28u】

一點真實體驗_寫在ROBOCON2025國賽前 很久沒有寫這種關于感受的博客了,就用真實感受的角度來看看一次眾測的經歷,哈哈^ 差不多一個月前,我收到了明基的28寸顯示器,體驗了差不多2周左右,一直把顯示器掛在實驗室倉庫La…

Solana 一鍵冷分倉機制詳解:如何用技術手段構建健康的持倉結構

在 Solana 的快速發幣環境中,許多項目方在成功部署代幣后,會面臨一個共通問題——如何避免持倉結構過于集中。無論是初始鑄造的 Token、流動性預留份額,還是空投分發的準備金,如果長時間停留在單一錢包地址中,將在鏈上…