【Linux】LVS(Linux virual server)環境搭建

一、LVS的運行原理

1.1 LVS簡介

LVS:Linux Virtual Server,負載調度器,內核集成,章文嵩,阿里的四層SLB(Server LoadBalance)是基于LVS+keepalived實現
LVS 官網: http://www.linuxvirtualserver.org/
LVS 相關術語
  • VS: Virtual Server,負責調度
  • RS:RealServer,負責真正提供服務

1.2?LVS概念

  • VSVirtual Server
  • RSReal Server
  • CIPClient IP
  • VIP: Virtual serve IP VS外網的IP
  • DIP: Director IP VS內網的IP
  • RIP: Real server IP
訪問流程:CIP <--> VIP == DIP <--> RIP

1.3?lvs集群的類型

  • lvs-nat: 修改請求報文的目標IP,多目標IPDNAT
  • lvs-dr 操縱封裝新的MAC地址
  • lvs-tun: 在原請求IP報文之外新加一個IP首部
  • lvs-fullnat 修改請求報文的源和目標IP

1.4?nat模式

Ivs-nat:
  • 本質是多目標IPDNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RSRIPPORT實現轉發
  • RIPDIP應在同一個IP網絡,且應使用私網地址;RS的網關要指向DIP
  • 請求報文和響應報文都必須經由Director轉發,Director易于成為系統瓶頸
  • 支持端口映射,可修改請求報文的目標PORT
  • VS必須是Linux系統,RS可以是任意OS系統

1.4.1?nat模式數據邏輯

  1. 客戶端發送訪問請求,請求數據包中含有請求來源(cip),訪問目標地址(VIP)訪問目標端口 9000port
  2. VS服務器接收到訪問請求做DNAT把請求數據包中的目的地由VIP換成RSRIP和相應端口
  3. RS1相應請求,發送響應數據包,包中的相應保溫為數據來源(RIP1)響應目標(CIP)相應端口 (9000port
  4. VS服務器接收到響應數據包,改變包中的數據來源(RIP1-->VIP,響應目標端口(9000-->80
  5. VS服務器把修改過報文的響應數據包回傳給客戶端
  6. lvsNAT模式接收和返回客戶端數據包時都要經過lvs的調度機,所以lvs的調度機容易阻塞

客戶請求到達vip后進入PREROUTING,在沒有ipvs的時候因該進入本機INPUT,IPVS存在后訪問請求在通過PREROUTING后被ipvs結果并作nat轉發
因為ipvs的作用點是在PREROUTINGINPUT鏈之間,所以如果在prerouting中設定規則會干擾ipvs的工作。所以在做lvs時要把iptables的火墻策略全清理掉。

?1.5?DR模式

DRDirect Routing,直接路由,LVS默認模式,應用最廣泛,通過為請求報文重新封裝一個MAC首部進行轉發,源MACDIP所在的接口的MAC,目標MAC是某挑選出的RSRIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變

1.5.1?DR模式數據邏輯

DR模式中,RS接收到訪問請求后不需要回傳給VS調度器,直接把回傳數據發送給client,所以RSvs上都要有vip

1.5.2?DR模式數據傳輸過程

  1. 客戶端發送數據幀給vs調度主機幀中內容為客戶端IP+客戶端的MAC+VIP+VIPMAC
  2. VS調度主機接收到數據幀后把幀中的VIPMAC該為RS1MAC,此時幀中的數據為客戶端IP+客戶端的MAC+VIP+RS1MAC
  3. RS1得到2中的數據包做出響應回傳數據包,數據包中的內容為VIP+RS1MAC+客戶端IP+客戶端IP的MAC

?1.5.3?DR模式的特點

  1. Director和各RS都配置有VIP
  2. 確保前端路由器將目標IPVIP的請求報文發往Director
  3. 在前端網關做靜態綁定VIPDirectorMAC地址
  4. RSRIP可以使用私網地址,也可以是公網地址;RIPDIP在同一IP網絡;
  5. RIP的網關不能指向DIP,以確保響應報文不會經由Director
  6. RSDirector要在同一個物理網絡
  7. 請求報文要經由Director,但響應報文不經由Director,而由RS直接發往Client
  8. 不支持端口映射(端口不能修敗)
  9. RS可使用大多數OS系統
  • RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
  • RS上修改內核參數以限制arp通告及應答級別
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

1.6?TUN模式(了解)

1.7?fullnet模式(了解)

二、環境準備

1.1 設備詳情

主機名角色IP地址網絡類型
client測試機172.25.254.10NAT
lvs
調度器(VS
172.25.254.100,192.168.10.100NAT、僅主機
RS1
真實服務器(RS1
192.168.10.10僅主機
RS2
真實服務器(RS2
192.168.10.20僅主機

1.2 拓撲圖

三、配置步驟

2.1 本地yum倉庫配置

?2.2 關閉防火墻

所有的設備都關閉防火墻,或者放行80端口

2.3 設置網卡類型

主要是lvs網卡,需要兩張網卡,配置步驟如下:

2.4 快速修改網卡IP地址,主機名腳本

rhel9系列:

#!/bin/bash
ifconfig $1 &> /dev/null || {echo "net device $1 is not exist"exit
}
ping -c1 -w1 $2 &> /dev/null && {echo "$2 is exist"exit
}grubby --update-kernel ALL  --args  net.ifname=0
grubby --update-kernel ALL  --args  selinux=0grep $1 -r /etc/NetworkManager/system-connections/ | awk -F : '{system("rm -rf " $1)}'
cat >/etc/NetworkManager/system-connections/$1.nmconnection <<EOF
[connection]
id=$1
type=ethernet
interface-name=$1[ipv4]
method=manual
address1=$2/24,192.168.253.2 
dns=8.8.8.8
EOF
chmod 600 /etc/NetworkManager/system-connections/$1.nmconnection
nmcli connection reload
nmcli connection up $1
hostnamectl hostname $3
grep -e "$2\t$3" /etc/hosts || {echo -e "$2\t$3" >>/etc/hosts
}

rhel7系列:

#!/bin/bash
ifconfig $1 &> /dev/null || {echo "net device $1 is not exist"exit
}
ping -c1 -w1 $2 &> /dev/null && {echo "$2 is exist"exit
}grubby --update-kernel ALL  --args  net.ifname=0
grubby --update-kernel ALL  --args  selinux=0grep $1 -r /etc/sysconfig/network-scripts/ | awk -F : '{system("rm -rf " $1)}'
cat >/etc/sysconfig/network-scripts/ifcfg-$1 <<EOF
DEVICE=$1
NAME=$1
BOOTPROTO=none
IPADDR0=$2
PREFIX0=24
GATEWAY0=192.168.253.2
DNS1=8.8.8.8
ONBOOT=yes
EOFnmcli connection reload
nmcli connection up $1
hostnamectl set-hostname $3
grep -e "$2\t$3" /etc/hosts || {echo -e "$2\t$3" >>/etc/hosts
}

2.5 使用腳本給每個設備修改IP地址和主機名

client:

lvs:

VIP:

CIP:

RS1:

RS2:

2.6 網關配置,并檢驗路由

rhel9網卡配置文件

client:

lvs:

RS1:

圖中筆誤,應該為DIP

RS2:

圖中筆誤,應該為DIP

2.7 LVS設備開啟內部網卡路由策略

2.8 LVS安裝ipvsadm包、配置策略

如果想要開機自啟達到話,配置下面的命令?

2.9 效果

四、涉及到的知識點

3.1 lvs軟件相關信息

  • 程序包:ipvsadm
  • Unit File: ipvsadm.service
  • 主程序:/usr/sbin/ipvsadm
  • 規則保存工具:/usr/sbin/ipvsadm-save
  • 規則重載工具:/usr/sbin/ipvsadm-restore
  • 配置文件:/etc/sysconfig/ipvsadm-config
  • ipvs調度規則文件:/etc/sysconfig/ipvsadm

3.2?ipvsadm命令

核心功能:
  • 集群服務管理:增、刪、改
  • 集群服務的RS管理:增、刪、改
  • 查看
命令參數:
管理集群服務
ipvsadm -A|E -t(tcp)|u(udp)|f(防護墻標簽) \
service-address(集群地址) \
[-s scheduler(調度算法)] \
[-p [timeout]] \
[-M netmask] \
[--pepersistence_engine] \
[-b sched-flags]ipvsadm -D -t|u|f service-address 刪除
ipvsadm –C 清空
ipvsadm –R 重載
ipvsadm -S [-n] 保存管理集群中的real server
ipvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m](工作模式) [-w
weight](權重)
ipvsadm -d -t|u|f service-address -r server-address 刪除RS
ipvsadm -L|l [options] 查看rs
ipvsadm -Z [-t|u|f service-address] 清楚計數器

3.3?lvs集群中的增刪改

①?管理集群服務中的增刪改

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A #添加
-E #修改
-t #tcp服務
-u #udp服務
-s #指定調度算法,默認為WLC
-p #設置持久連接超時,持久連接可以理解為在同一個時間段同一個來源的請求調度到同一Realserver
-f #firewall mask 火墻標記,是一個數字#增加
[root@DR-server ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@DR-server ~]# ipvsadm -A -f 66 -p 3000
#修改
[root@DR-server ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 3000
#刪除
[root@DR-server ~]# ipvsadm -D -t 172.25.254.100:80
[root@DR-server ~]# ipvsadm -D -f 66

②?管理集群中RealServer的曾增刪改

ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]-a #添加realserver
-e #更改realserver
-t #tcp協議
-u #udp協議
-f #火墻 標簽
-r #realserver地址
-g #直連路由模式
-i #ipip隧道模式
-m #nat模式
-w #設定權重
-Z #清空計數器
-C #清空lvs策略
-L #查看lvs策略
-n #不做解析
--rate :輸出速率信息#添加
[root@DR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.30 -m
[root@DR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.40 -m -w 2
#更改
[root@DR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -m -w 1
[root@DR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -i -w 1
#刪除
[root@DR-server ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30[root@DR-server ~]# ipvsadm -Ln
[root@DR-server ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 172.25.254.100:80 0 0 0 0 0
-> 192.168.0.30:80 0 0 0 0 0
-> 192.168.0.40:80 0 0 0 0 0
[root@DR-server ~]# ipvsadm -C
[root@DR-server ~]# ipvsadm -Z -t 172.25.254.20:80
[root@DR-server ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 172.25.254.20:80 0 0 0 0 0
-> 192.168.0.30:80 0 0 0 0 0
-> 192.168.0.40:80 0 0 0 0 0

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

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

相關文章

算法競賽備賽——【圖論】求最短路徑——Dijkstra

Dijkstra 用來計算從一個點到其他所有點的最短路徑的算法&#xff0c;是一種單源最短路徑算法。也就是說&#xff0c;只能計算起點只有一個的情況。Dijkstra的時間復雜度是O (|v|^2)&#xff0c;它不能處理存在負邊權的情況。 鄰接矩陣存圖 #include<iostream> using …

影刀 RPA:批量修改 Word 文檔格式,高效便捷省時省力

在日常辦公和文檔處理中&#xff0c;Word 文檔格式的統一和規范是許多企業和個人用戶的重要需求。無論是撰寫報告、制作提案&#xff0c;還是整理資料&#xff0c;都需要確保文檔格式的一致性。然而&#xff0c;手動修改多個 Word 文檔的格式不僅耗時費力&#xff0c;還容易因疏…

GitLab 社區版 10.8.4 安裝、漢化與使用教程

一、GitLab 安裝 GitLab 提供了集成所需軟件的 RPM 包&#xff0c;簡化了安裝流程。我們選擇安裝社區版&#xff08;CE&#xff09;10.8.4&#xff0c;可通過官方網站或國內鏡像源&#xff08;如清華鏡像&#xff09;獲取安裝包。 1. 準備工作 首先創建工具目錄并進入&#…

[硬件電路-64]:模擬器件 -二極管在穩壓電路中的應用

二極管在穩壓電路中的應用主要基于其單向導電性和特定類型二極管&#xff08;如穩壓二極管&#xff09;的電壓穩定特性。以下是詳細解釋&#xff1a;一、普通二極管的穩壓作用&#xff08;有限場景&#xff09;正向導通壓降的利用&#xff1a;原理&#xff1a;普通二極管在正向…

【Linux】重生之從零開始學習運維之Nginx

安裝apt/yum安裝apt imstall nginx yum install nginxRocky源碼編譯安裝基礎編譯環境yum install gcc make gcc-c glibc glibc-devel pcre pcre-devel openssl openssldevel systemd-devel zlib-devel yum install libxml2 libxml2-devel libxslt libxslt-devel php-gd gd-deve…

主流 MQ 的關鍵性能指標

常用消息隊列&#xff08;MQ&#xff09;的“數量級”通常圍繞吞吐量&#xff08;TPS&#xff0c;每秒處理消息數&#xff09;、消息堆積能力、延遲三個核心指標展開&#xff0c;不同MQ因設計目標&#xff08;高吞吐、低延遲、高可靠等&#xff09;不同&#xff0c;數量級差異顯…

[NIPST AI]對抗性機器學習攻擊和緩解的分類和術語

原文link&#xff1a;https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.100-2e2025.pdf Introduction 人工智能&#xff08;AI&#xff09;系統在過去幾年中持續全球擴展。這些系統正在被眾多國家開發并廣泛部署于各自的經濟體系中&#xff0c;人們在生活的許多領域都獲得了更多使…

[深度學習] 大模型學習3上-模型訓練與微調

在文章大語言模型基礎知識里&#xff0c;模型訓練與微調作為大語言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;應用構建的主要方式被簡要提及&#xff0c;本系列文章將從技術原理、實施流程及應用場景等維度展開深度解析。相關知識的進一步參考見&#x…

Claude Code 啟動提示 Note: Claude Code might not be available in your country. 解決

如下圖所示 主播參考了在別的地方看來的解決方案&#xff08;并非主播不想標注來源&#xff0c;主要是忘記是哪里看來的了&#xff0c;下班就忘記了&#xff0c;懶得找了&#x1f62d;&#xff0c;如果后續找到會補上的&#xff09;。 好了&#xff0c;開始正文&#xff0c;開始…

Unity VR多人手術系統恢復3:Agora語音通訊系統問題解決全記錄

&#x1f3af; 前言 這是一個Unity多人VR手術模擬項目&#xff0c;已經擱置了近兩年時間。最近重新啟動了這個項目&#xff0c;然而在恢復過程中卻遇到了些的技術障礙。 項目重啟遇到的挑戰 當我們重新部署和測試系統時&#xff0c;發現原本運行良好的Agora語音通訊功能完全…

sqli-labs靶場通關筆記:第46-53關 order by注入

目錄 第46關 order by注入 第47關 閉合的order by注入 第48關 無報錯回顯的數字型order by注入 第49關 無報錯回顯的閉合型order by注入 第50關 基于order by的堆疊注入 第51關 閉合的報錯注入或堆疊注入 第52關 數字型盲注或堆疊注入 第53關 閉合的盲注或堆疊注入 第…

cdh6.3.2的hive使用apache paimon格式只能創建不能寫報錯的問題

前言根據官網paimon安裝教程&#xff0c;看上去簡單&#xff0c;實則報錯阻礙使用的信心。 解決方法原帶的jars下的zstd開頭的包舊了&#xff0c;重新下載zstd較新的包單獨放到每個節點的hive/lib下;然后將hdfs yarn用戶下的mr-framework.tar.gz中的zstdjar包替換成新的版本。重…

【Vue進階學習筆記】實現圖片懶加載

創建Vue項目 首先確保你已安裝Vue CLI&#xff0c;然后創建一個新的Vue 3項目&#xff1a; npm init vuelatest安裝依賴 安裝vueuse/core庫&#xff0c;它提供了useIntersectionObserver組合式API&#xff1a; cnpm install cnpm install vueuse/core創建指令文件夾和文件 在sr…

深入理解 synchronized

深入理解 synchronized 引言&#xff1a;synchronized的核心地位 在Java并發編程中&#xff0c;synchronized關鍵字是實現線程安全的基石。自JDK 1.0引入以來&#xff0c;它經歷了從"重量級鎖"到"自適應鎖"的進化&#xff0c;如今已成為兼顧安全性與性能的…

C語言字符串相關函數

C語言筆記內容提要數組字符串基本操作字符串相關函數綜合案例&#xff1a;學生成績管理系統數組字符串基本操作在用格式化說明符%s進行輸入輸出時&#xff0c;其輸入輸出項均為數組名。但在輸入時&#xff0c;相鄰兩個字符串之間要用空格分隔&#xff0c;系統將自動在字符串后加…

從零開始:用Python庫輕松搭建智能AI代理

為什么要關注AI代理&#xff1f; “Agentic AI”&#xff08;智能代理&#xff09;正在悄然改變我們的工作方式。想象一下&#xff0c;一個AI助手不僅能幫你查航班、訂機票&#xff0c;還能自動安排行程、發郵件、生成日報——就像一個效率極高的“虛擬助理”團隊。 對于測試工…

如何防止GitHub上的敏感信息被泄漏?

如大家所了解的&#xff0c;隨著GitHub的用戶越來越多&#xff0c;GitHub上的敏感信息被泄漏的問題也越來越嚴重。那么如何做&#xff0c;才能防止此類事情發生呢&#xff1f;這值得我們探討。移除并刪除敏感信息當我們發現了歷史 commit 中包含敏感信息后&#xff0c;第一步便…

船舶機械零件的深孔工藝及檢測方法 —— 激光頻率梳 3D 輪廓檢測

引言船舶機械零件中的深孔結構&#xff08;深徑比&#xff1e;15:1&#xff09;直接影響動力系統可靠性&#xff0c;如柴油機缸體深孔、推進軸系潤滑油孔等。此類深孔具有孔徑大&#xff08;φ10 - 50mm&#xff09;、深度深&#xff08;500 - 2000mm&#xff09;、表面質量要求…

論文Review Lidar 3DGS Splat-LOAM: Gaussian Splatting LiDAR Odometry and Mapping

基本信息 題目&#xff1a;Splat-LOAM: Gaussian Splatting LiDAR Odometry and Mapping 來源&#xff1a;ICCV 2025 學校&#xff1a;Sapienza University of Rome 是否開源&#xff1a;https://github.com/rvp-group/Splat-LOAM 摘要&#xff1a;純激光3DGS&#xff01;…

MYSQL:數據庫約束

文章目錄MYSQL&#xff1a;數據庫約束&#xff1a;為你的數據上把“安全鎖”1. 約束的類型概覽2. NOT NULL 非空約束3. DEFAULT 默認值約束4. UNIQUE 唯一約束5. PRIMARY KEY 主鍵約束5.1 自增主鍵 AUTO_INCREMENT5.3 復合主鍵6. FOREIGN KEY 外鍵約束7. CHECK 約束總結MYSQL&a…