本期來講講什么是LVS集群?

集群和分布式

集群(Cluster),解決某個問題將多臺計算機組合形成的系統群。

常見的集群類型:

  • 負載均衡(LoadBalancing,簡稱LB):由多個相同配置的主機組成,每個主機經過調度承擔部分訪問,防止單點故障提高系統可用性。常用的負載均衡實現方式由Nginx,LVS等。
  • 高可用(High Availiablity,簡稱HA): ,是指系統或服務在規定時間內持續正常運行的能力,核心目標是最大限度減少停機時間,確保業務或功能在面對故障(如硬件損壞、軟件錯誤、網絡中斷等)時仍能穩定提供服務。

? ? ? ? MTBF:Mean Time Between Failure 平均無故障時間,正常時間 MTTR:Mean Time To Restoration( repair)平均恢復前時間,故障時間

? ? ? ? 可用性等級計算方式:A=MTBF/(MTBF+MTTR),計算結果越接近“1”高可用性越高

  • 高性能計算(High-performance computing,HPC):高性能計算,國家戰略資源

負載均衡與高可用的關系:

負載均衡是實現高可用的核心手段之一,高可用的目標是 “不中斷服務”,而負載均衡通過分散流量和自動剔除故障節點,直接避免了 “單臺服務器故障導致整體崩潰” 的風險。

分布式

一個業務被拆成多個子業務,或者本身就是不同的業務,部署在多臺服務器上。分布式 中,每一臺服務器實現的功能是有差別的,數據和代碼也是不一樣的,分布式每臺服務器功能加起 來,才是完整的業務

分布式常見應用:

  • 分布式應用-服務按照功能拆分,使用微服務
  • 分布式靜態資源--靜態資源放在不同的存儲集群上
  • 分布式數據和存儲--使用key-value緩存系統
  • 分布式計算--對特殊業務使用分布式計算,比如Hadoop集群

分布式圖解

集群和分布式的區別:

分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。

LVS介紹

LVS概念

LVS(Linux virtual server):是一種負載調度器,是負載均衡的一種實現方式。

  • VS:虛擬服務器,LVS調度器
  • RS:內網真實服務器,提供服務
  • CIP:客戶端IP
  • VIP:LVS的外網IP
  • DIP:LVS的內網IP
  • RIP:RS的IP

LVS集群結構圖

LVS的集群類型

集群類型說明
nat修改請求報文的目標IP,多目標IP的DNAT
dr操縱封裝新的MAC地址
tun在原請求IP報文之外添加一個IP首部
fullnat修改請求報文的源和目標IP

tun與fullnat只做了解并沒有實驗配置提及 ,常用的還是DR與NAT,默認為DR。

LVS的調度算法

靜態方法:僅根據算法本身進行調度,不考慮RS的負載情況。

動態方法:主要根據每RS當前的負載狀態及調度算法進行調度Overhead=value較小的RS將被調度。

靜態調度算法作用
RR(roundrobin)輪詢調度RS,配置有差異不推薦
WRR(Weighted RR)根據權重來進行輪詢調度,配置高的加權調度被調度次數多
SH(Source Hashing)基于源地址哈希,將來自同一源地址的請求調度到同一服務器,可實現會話粘性
DH(Destination Hashing)基于目標地址哈希,將發往同一目標地址的請求調度到同一服務器
動態調度算法作用
LC(least connections)調度到當前連接數最少的服務器,使各服務器負載更均衡
WLC(Weighted LC)帶權重的最少連接調度,綜合考慮服務器權重和當前連接數進行調度
SED(:Shortest Expection Delay)計算服務器的預期延遲(考慮權重和當前連接數),調度到預期延遲最小的服務器
NQ(Never Queue)第一輪均勻分配,后續SED
LBLC(Locality-Based LC)動態的 DH 算法,基于局部性的最少連接調度,兼顧目標地址哈希和最少連接
LBLACR(LBLC with Replication)帶復制功能的 LBLC,通過服務器復制進一步優化負載均衡和故障容錯

在4.15版本內核以后新增調度算法

1.FO(Weighted Fai Over)調度算法:常用作灰度發布。

算法原理:

遍歷虛擬服務所關聯的真實服務器鏈表,找到還未過載的且權重最高的真實服務器,進行調度。當服務器承接大量連接,可以對此服務器進行過載標記,之后 VS 調度器就不會把連接調度到有過載標記的主機中。

2.OVF(Overflow-connection)調度算法:適用于服務器性能有差異且流量波動較大的場景,如電商。

算法原理:

基于真實服務器的活動連接數量和權重值實現。遍歷虛擬服務相關聯的真實服務器鏈表,找到權重值最高的可用真實服務器。一個可用的真實服務器需要同時滿足以下條件:

  • 未過載;
  • 真實服務器當前的活動連接數量小于其權重值;
  • 其權重值不為零 。

將新連接調度到權重值最高的真實服務器,直到其活動連接數量超過權重值,之后調度到下一個權重值最高的真實服務器。

實驗

安裝LVS

[root@client ~]# dnf install ipvsadm -y

ipvsadm命令參數

核心功能:

  • 集群服務器管理:增、刪、改

  • 集群服務的RS管理:增、刪、改

  • 查看

1.管理集群服務中的增刪改

#命令格式
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]-A #添加-E #修改-t #tcp服務-u #udp服務-s #指點調度算法,默認為WLC,rr為輪詢,wrr為權重輪詢-p #設置吃就連接超時,將同一個時間段將一個訪問請求調度給同一個RS-f #firewall mask 火墻標記,是一個數字-L #查看lvs策略 + n 不做解析ipvsadm -Ln #不做解析查看lvs策略

[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr	
[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr
[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 360
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -D -t 172.25.254.100:80
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -L	#查看lvs調度策略	
[root@lvs ~]# ipvsadm -Ln	#n不做解析的查看調度策略

2.管理集群服務中的RS增刪改

#命令格式
ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]-a #添加-e #更改-t #tcp / -u #udp-f #火墻標簽-r #指定RS地址-g #直連路由模式-i #ipip隧道模式-m #nat模式-w #設定權重-C #清空lvs策略-L #查看lvs策略 + n 不做解析ipvsadm -Ln #不做解析查看lvs策略--rate #輸出速率信息ipvsadm -Ln --rate-Z #清空計數器
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.10 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.20 -g
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.44.20 -m -w 2
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.44.30 -i -w 2
[root@lvs ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30

3.lvs調度策略的備份與恢復
#備份與恢復
[root@lvs ~]# ipvsadm-save -n > /mnt/ipvsadm.rule    備份規則策略到文件中
[root@lvs ~]# ipvsadm-restore < /mnt/ipvsadm.rule    重載規則策略
4.lvs調度策略的開機啟動

由于缺少備份到/etc/sysconfig/ipvsadm規則調度文件,所以不能開機啟動。


#需要先把調度策略導入生成調度規則文件,具有調度規則文件后才能開啟服務進程
[root@lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# systemctl enable --now ipvsadm
#開機啟動后就會自動重載保存在調度規則的文件

LVS-NAT模式

環境

主機名IP
客戶端(nat)172.25.254.70/24
LVS服務器(雙網卡,nat與僅主機)

172.25.254.100/24

192.168.5.10/24

web服務器1(僅主機)192.168.5.100/24
web服務器2(僅主機)192.168.5.200/24

客戶端:

? ? ? ? 配好IP即可

LVS服務器:

? ? ? ? 配置好IP和內核路由以及LVS規則

?開啟內核路由:

? 編寫LVS規則:

? 查看LVS規則:

web服務器(兩臺web服務器類似):

? ? ? ? 安裝httpd,開啟服務、編寫默認發布文件

開啟服務:

編寫默認發布文件:

記得關閉火墻(便于測試)

測試(用客戶端連續訪問172.25.254.100多次):

服務器1、2輪流應答客戶端

LVS-DR模式

環境

主機名IP
客戶端(nat)e0:172.25.254.111/24
路由器(雙網卡)

e0:172.25.254.100/24

e1:192.168.44.100/24

調度器(僅主機)

e0:192.168.44.200/24

e1:192.168.44.220/24

服務器1(僅主機)

e0:192.168.44.10/24

lo:192.168.44.220/32

服務器2(僅主機)

e0:192.168.5.100

lo:192.168.5.250(vip)

客戶端:

? ? ? ? 配好IP即可

路由器配置:

? ? ? ? ?配置IP 并開啟內核路由以及地址偽裝

#開啟內核路由
vim /etc/sysctl.confnet.ipv4.ip_forward = 1#開啟地址偽裝
firewall-cmd --permanent --add-masquerade#開啟iptab地址轉換亦可
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.5.10#地址偽裝和iptable地址轉換選一種即可

LVS主機配置:?

????????配置ip?

配置LVS規則:

ipvsadm -A -t 192.168.5.250:80 -s rr
ipvsadm -a -t 192.168.5.250:80 -r  192.168.5.100:80 -g
ipvsadm -a -t 192.168.5.250:80 -r  192.168.5.200:80 -g

?查看LVS規則:

服務器(兩臺服務器類似)

? ? ? ? 配置ip

?下載、啟用、配置httpd

?????????????????開啟服務:

???編寫默認發布文件:

記得關閉火墻(便于測試)

關閉服務器1與服務器2響應arp:

測試:

服務器1、2輪流應答客戶端

lvs會話保持

解決問題:客戶需要提交響應信息給服務器,如果單 純的進行調度會導致客戶填寫的表單丟失

解決方案:

在進行調度時,不管用什么算法,只要相同源過來的數據包我們就把他的訪問記錄在內存中,也就是把這個源的主機調度到了那個RS上,設置持久連接超時。

#跟蹤鏈接
[root@lsv-dr ~]# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:56  FIN_WAIT    192.168.44.100:48534 192.168.44.220:80  192.168.44.10:80
TCP 01:55  FIN_WAIT    192.168.44.100:48518 192.168.44.220:80  192.168.44.20:80
#expire為長鏈接超時時間,在鏈接未超時再次訪問不用經過三次握手,apache的一個長連接默認為兩分鐘#設置持久超時時間來將同一個時間段將一個訪問請求調度給同一個RS
[root@lsv-dr ~]# ipvsadm -E -t 192.168.44.220:80 -s rr -p 1	#-p 1默認不是1s而是1min
[root@lsv-dr ~]# 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.44.220:80 rr persistent 1	#持久連接超時時間默認為360s-> 192.168.44.10:80             Route   1      0          0-> 192.168.44.20:80             Route   1      0          0

只有當最后一個FIN WATT結束,ASSURED才會倒計時最后一次apeach長連接超時時間默認為2分鐘并且只有當最后一個ASSURED倒數結束下一個訪問VIP的客戶才會被調度到另一個RS上 ?

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

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

相關文章

JVM 類加載過程筆記

一、概述 JVM&#xff08;Java Virtual Machine&#xff09;在運行 Java 程序時&#xff0c;需要將 .class 字節碼文件加載到內存中&#xff0c;并轉換成可以被 JVM 執行的數據結構&#xff0c;這一過程就是 類加載過程&#xff08;Class Loading Process&#xff09;。 JVM 的…

基于爬蟲技術的電影數據可視化系統 Python+Django+Vue.js

本文項目編號 25002 &#xff0c;文末自助獲取源碼 \color{red}{25002&#xff0c;文末自助獲取源碼} 25002&#xff0c;文末自助獲取源碼 目錄 一、系統介紹二、系統錄屏三、啟動教程四、功能截圖五、文案資料5.1 選題背景5.2 國內外研究現狀 六、核心代碼6.1 查詢數據6.2 新…

如何用 LUKS 和 cryptsetup 為 Linux 配置加密

在信息安全愈發重要的今天&#xff0c;為 Linux 系統盤配置全盤加密已經成為很多企業和個人的選擇。LUKS&#xff08;Linux Unified Key Setup&#xff09;配合工具 cryptsetup 可以在不犧牲性能的前提下實現高強度加密。本文將通過一個故事化的場景&#xff0c;介紹整個配置過…

VIVADO技巧_BUFGMUX時序優化

1.版本說明日期作者版本說明2025xxxx風釋雪初始版本 2.概述 基于VIVADO時序約束&#xff0c;BUFGMUX多路時鐘選擇原語的設計3.原語介紹 7系列FPGA/UltraSCale/UltraSCaleBUFGMUX_CTRL BUFGMUX_CTRL_inst (.O(O), // 1-bit output: Clock output.I0(I0), // 1-bit input: Cloc…

服務器系統時間不準確怎么辦?

服務器系統時間不準確可能會導致日志錯亂、任務調度失敗、SSL證書校驗錯誤等問題。以下是解決辦法&#xff1a;&#x1f310; 一、同步系統時間的方法1. 使用 timedatectl 命令&#xff08;適用于 systemd 系統&#xff09;timedatectl set-ntp true # 開啟自動同步 timedatect…

零信任產品聯合寧盾泛終端網絡準入,打造隨需而變、精準貼合業務的網絡安全訪問體系

零信任網絡訪問控制&#xff08;Zero Trust Network Access&#xff0c;ZTNA&#xff0c;文中零信任皆指 ZTNA&#xff09;基于“永不信任&#xff0c;持續驗證”的理念&#xff0c;打破了企業基于傳統網絡邊界進行防護的固有模式。在當前日趨復雜的網絡環境下&#xff0c;內部…

【未限制消息消費導致數據庫CPU告警問題排查及解決方案】

一、背景 某天下午&#xff0c;上游系統同一時間突然下了三個大合同數據&#xff0c;平均每個合同數據實例在6萬以上的量級&#xff0c;短短幾分鐘內瞬間有20萬左右的流量涌入系統。 而在正常情況下&#xff0c;系統1天處理的流量也不過2千量級&#xff0c;當時數據庫指標監控告…

iOS開發 Swift 速記2:三種集合類型 Array Set Dictionary

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…

Apache基礎配置

一、Apache安裝# 安裝apache [rootwebserver ~]# yum install httpd -y# 在防火墻中放行web服務 [rootwebserver ~]# firewall-cmd --permanent --add-servicehttp success [rootwebserver ~]# firewall-cmd --permanent --add-servicehttps success# 開啟服務 [rootwebserver …

Python100個庫分享第37個—BeautifulSoup(爬蟲篇)

目錄專欄導讀&#x1f4da; 庫簡介&#x1f3af; 主要特點&#x1f6e0;? 安裝方法&#x1f680; 快速入門基本使用流程解析器選擇&#x1f50d; 核心功能詳解1. 基本查找方法find() 和 find_all()CSS選擇器2. 屬性操作3. 文本提取&#x1f577;? 實戰爬蟲案例案例1&#xff…

石子入水波紋效果:頂點擾動著色器實現

水面波紋的真實模擬是計算機圖形學中一個經典且重要的課題,廣泛應用于游戲、影視和虛擬現實等領域。本文將從技術原理和實現細節出發,系統介紹如何利用**頂點擾動(Vertex Displacement)**技術,結合多種輔助方法,打造既真實又高效的水面波紋效果。 一、頂點擾動的核心思想…

【FFmpeg 快速入門】本地播放器 項目

目錄 &#x1f308;前言&#x1f308; &#x1f4c1; 整體架構 詳細流程 &#x1f4c1; 數據流向? &#x1f4c1; 隊列設計?編輯 &#x1f4c1; 線程設計 &#x1f4c1; 音視頻同步 &#x1f4c1; 音頻輸出設計 &#x1f4c1; 視頻輸出設計 &#x1f4c1; 總結 …

Maven dependencyManagement標簽 properties標簽

dependencyManagement標簽properties標簽

前端埋坑之element Ui 組件el-progress display:flex后不顯示進度條解決方案

項目適用場景&#xff1a; <divs style"display&#xff1a;flex"> <span>這里是進度條前標題說明</span> <el-progress :percentage"50"></el-progress> </div> 問題呈現&#xff1a; el-progress進度條沒啦&#xf…

嵌入式學習-土堆PyTorch(7)-day23

損失函數的調用import torch from torch import nn from torch.nn import L1Lossinputs torch.tensor([1.0,2.0,3.0]) target torch.tensor([1.0,2.0,5.0])inputs torch.reshape(inputs, (1, 1, 1, 3)) target torch.reshape(target, (1, 1, 1, 3)) #損失函數 loss L1Loss…

【2025最新】使用neo4j實現GraphRAG所需的向量檢索

學習筆記&#xff0c;比較混亂&#xff0c;介意慎點。 背景 在將UMLS或者LightRAG構造的數據庫存入neo4j之后&#xff0c;我開始將知識圖譜運用到實際場景的使用中、例如查詢、推理。然而&#xff0c;由于字符串匹配導致大量術語在檢索時出現缺失。導致檢索效果不佳。我們需要…

【AI深究】隨機森林(Random Forest)全網最詳細全流程詳解與案例(附Python代碼演示)|集成學習|數學原理、案例流程、代碼演示及結果解讀|參數與調優、工程啟示、單棵決策樹的對比、優缺點

大家好&#xff0c;我是愛醬。本篇將會系統地講解隨機森林&#xff08;Random Forest&#xff09;的原理、核心思想、數學表達、算法流程、代碼實現與工程應用。內容適合初學者和進階讀者&#xff0c;配合公式和可視化示例。 注&#xff1a;本文章含大量數學算式、詳細例子說明…

6.String、StringBuffer、StringBuilder區別及使用場景

String固定長度&#xff0c;引用的字符串內容無法改變例如&#xff0c;String s abc;s def;那么 s 字符串對應的地址已經改變了StringBuider 聲明一個對象時&#xff0c;指向堆中的一塊空間&#xff0c;包括兩個屬性 value 和 count其中 value 屬性類似動態數組&#xff0c;可…

Qualcomm Linux 藍牙指南學習--驗證 Fluoride 協議棧的功能(2)

前言 Qualcomm Technologies推出的Linux藍牙指南詳細介紹了基于Qualcomm RB3 Gen 2和IQ-9100 Beta開發套件的藍牙解決方案。該文檔涵蓋BlueZ和Fluoride協議棧的功能驗證流程,支持藍牙5.2核心規范,包括WCN6750/WCN6856/QCA6698AQ芯片組的特性。主要內容分為三部分: ?1. 功…