LVS相關原理

一、LVS集群的體系結構

1.1 LVS簡介

LVS Linux Virtual Server 的簡稱,也就是 Linux 虛擬服務器 , 是一個由章文嵩博士發起的自由軟件項目,它的官方站點是 www.linuxvirtualserver.org 。現在 LVS 已經是 Linux標準內核的一部分,在Linux2.4 內核以前,使用 LVS 時必須要重新編譯內核以支持 LVS 功能模塊,但是從 Linux2.4內核以后,已經完全內置了 LVS 的各個功能模塊,無需給內核打任何補丁,可以直接使用 LVS 提供的各種功能。
使用 LVS 技術要達到的目標是:通過LVS 提供的負載均衡技術和 Linux操作系統實現一個高性能、高可用的服務器群集,它具有良好可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的服務性能。

1.2 LVS體系結構

使用 LVS 架設的服務器集群系統有三個部分組成:最前端的負載均衡層,用 Load Balancer表示;中間的服務器群組層,用 Server Array 表示;最底端的數據共享存儲層,用 Shared Storage 表示。
Load Balancer 層:位于整個集群系統的最前端,有一臺或者多臺負載調度器( Director Server
組成, LVS 模塊就安裝在 Director Server 上,而 Director 的主要作用類似于一個路由器,它含有完成 LVS功能所設定的路由表,通過這些路由表把用戶的請求分發給Server Array 層的應用服務器( Real Server)上。同時,在 Director Server 上還要安裝對 Real Server 服務的監控模塊 Ldirectord ,此模塊用于監測各個Real Server 服務的健康狀況。在 Real Server 不可用時把它從 LVS 路由表中剔除,恢復時重新入。
Server Array 層:由一組實際運行應用服務的機器組成, Real Server 可以是 WEB 服務器、 MAIL 服務器、FTP 服務器、 DNS 服務器、視頻服務器中的一個或者多個,每個 Real Server 之間通過高速的 LAN 或分布在各地的WAN 相連接。在實際的應用中, Director Server 也可以同時兼任 Real Server 的角色。
Shared Storage 層:是為所有 Real Server 提供共享存儲空間和內容一致性的存儲區域,在物理上,一般有磁盤陣列設備組成,為了提供內容的一致性,一般可以通過NFS 網絡文件系統共享數據,但是NFS在繁忙的業務系統中,性能并不是很好,此時可以采用集群文件系統,例如 Red hat GFS 文件系統,oracle 提供的 OCFS2 文件系統等。

1.3 LVS相關術語

LVS 集群內部的節點稱為真實服務器( Real Serve ),也叫做集群節點。請求集群服務的計算機稱為客戶計算機。與計算機通常在網上交換數據包的方式相同,客戶計算機、Director 和真實服務器使用 IP 地址彼此進行通信。不同架構角色命名情況如下圖:

1.4 LVS工作模式

LVS IP 負載均衡技術是通過 IPVS 模塊來實現的, IPVS LVS 集群系統的核心軟件,它的主要作用是:安裝在Director Server 上,同時在 Director Server 上虛擬出一個 IP 地址,用戶必須通過這個虛擬的 IP 地址訪問服務。這個虛擬IP 一般稱為 LVS VIP ,即 Virtual IP 。訪問的請求首先經過 VIP 到達負載調度器,然后由負載調度器從Real Server 列表中選取一個服務節點響應用戶的請求。
當用戶的請求到達負載調度器后,調度器如何將請求發送到提供服務的 Real Server 節點,而 Real
Server 節點如何返回數據給用戶,是 IPVS 實現的重點技術, IPVS 實現負載均衡機制有三種,分別是NAT、 TUN DR

VS/NAT: 即(Virtual Server via Network Address Translation

也就是網絡地址翻譯技術實現虛擬服務器,當用戶請求到達調度器時,調度器將請求報文的目標地址(即虛擬IP地址)改寫成選定的Real Server地址,同時報文的目標端口也改成選定的Real Server的相應端口,最后將報文請求發送到選定的Real Server。在服務器端得到數據后,Real Server返回數據給用戶時,需要再次經過負載調度器將報文的源地址和源端口改成虛擬IP地址和相應端口,然后把數據發送給用戶,完成整個負載調度過程。

VS/TUN :即( Virtual Server via IP Tunneling
也就是 IP 隧道技術實現虛擬服務器。它的連接調度和管理與 VS/NAT方式一樣,只是它的報文轉發方法不同, VS/TUN 方式中,調度器采用 IP 隧道技術將用戶請求轉發到某個 Real Server ,而這個Real Server將直接響應用戶的請求,不再經過前端調度器,此外,對 Real Server的地域位置沒有要求,可以和Director Server 位于同一個網段,也可以是獨立的一個網絡。因此,在 TUN方式中,調度器將只處理用戶的報文請求,集群系統的吞吐量大大提高。
VS/DR : 即( Virtual Server via Direct Routing
也就是用直接路由技術實現虛擬服務器。它的連接調度和管理與 VS/NAT VS/TUN中的一樣,但它的報文轉發方法又有不同, VS/DR 通過改寫請求報文的 MAC 地址,將請求發送到 Real Server ,而Real Server將響應直接返回給客戶,免去了 VS/TUN 中的 IP隧道開銷。這種方式是三種負載調度機制中性能最高最好的,但是必須要求 Director Server Real Server 都有一塊網卡連在同一物理網段上。

特別提示:( VS/DR )模式是互聯網使用的最多多的一種模式,在 LVS-DR 配置中, Director 將所有入站請求轉發給集群內部節點,但集群內部的節點直接將他們的回復發送給客戶端計算機(沒有通過Director回來)。如下圖所示:

1.5 LVS調度算法

調度方法決定了如何在這些集群節點之間分布工作負荷。
Director 收到來自客戶端計算機訪問她的 VIP 上的集群服務的入站請求時, Director 必須決定那個集群節點應該獲得請求。Director 可用于做出該決定的調度方法分成兩個基本類別:
固定調度算法: rr wrr dh sh
動態調度算法: wlc ,lc, lblc lblcr SED NQ

二、LVS-DR模式

2.1 LVS-DR基本工作原理

1. 當用戶向負載均衡調度器( Director Server )發起請求,調度器將請求發往至內核空間;
2. PREROUTING 鏈首先會接收到用戶請求,判斷目標 IP 確定是本機 IP ,將數據包發往 INPUT 鏈;
3. IPVS 是工作在 INPUT 鏈上的,當用戶請求到達 INPUT 時, IPVS 會將用戶請求和自己已定義好的集群服務進行比對,如果用戶請求的就是定義的集群服務,那么此時IPVS 會強行修改數據包里的目標 IP地址及端口,并將新的數據包發往POSTROUTING 鏈;
4. POSTROUTING 鏈接收數據包后發現目標 IP 地址剛好是自己的后端服務器,那么此時通過選路,將數據包最終發送給后端的服務器。

2.2 LVS-DR模式特點

1 )所有集群節點 RS 必須和 Director 在相同的物理網段(即同一個局域網中);
2 )所有客戶端入站(而不是出站)請求由 Director 首先接收,并轉發給集群節點 RS
3 )集群節點 RS 通常來說最好帶外部 IP ,而不使用 Director 及某固定機器作為默認網關,以便將數據包直接回復給客戶端計算機,且不會產生回包的瓶頸;
4 )所有集群節點 RS 上必須在 lo 網卡上綁定 VIP 地址,以便驗證通過目的 IP RS 的數據包;
5 )由于所有集群節點 RS 上必須在 lo 網卡上綁定 VIP 地址,因此,帶來 arp 問題,即集群節點 RS 默認會相應發往Director VIP 的數據包。因此要對所有集群節點 RS ARP 抑制處理,把響應 VIP 的請求交給 LVSDirector;
6 )很多操作系統都可以用在集群內部的 RS 真實服務器上,只要該操作系統能夠實現 ARP 隱藏,如:Windows, linux unix
7 LVS/DR 模式不需要開啟調度器轉發功能,這點和 LVS/NAT 模式是不同的;
8 LVS/DR Director (服務器數量 100 臺)可以比 LVS-NAT Director (服務器數量 10-20 臺)承受更多的并發請求和轉發更多的服務器數量。

2.3 ARP抑制

讓前端路由將請求發往VIP時,只能是Dirctor上的VIP,解決方案:
1.靜態地址綁定:未必有路由器的配置權限,Director調用時靜態地址綁定將難以適用。
2.arptables:
arptables -F
arptables -A INPUT -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
3.修改linux的 Linux 內核參數,將 RS 上的 VIP 配置為 lo 接口的別名,限制 Linux 僅對對應接口的 ARP 求做響應。

三、LVS-NAT模式

3.1 LVS-NAT工作原理

1.當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報 文的源IPCIP,目標IPVIP;

2.PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈;

3.IPVS比對數據包請求的服務是否為集群服務,若是,修改數據包的目標IP地址為后端服務器IP,然后將數據包發至POSTROUTING鏈。 此時報文的源IPCIP,目標IPRIP;

4.POSTROUTING鏈通過選路,將數據包發送給Real Server;

5.Real Server比對發現目標為自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,目標IPCIP;

6.Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然后響應給客戶端。 此時報文的源IPVIP,目標IPCIP。

工作邏輯圖:

3.2 LVS-NAT模式特點

1)集群節點,必須在一個網絡中;

2)真實服務器必須將網關指向負載調度器;

3)RIP 通常都是私有 IP,僅用于各個集群節點通信;

4)負載調度器必須位于客戶端和真實服務器之間,充當網關;

5)支持端口映射;

6)負載調度器操作系統必須是 Linux ,真實服務器可以使用任意系統。

四、LVS-TUN模式

4.1 LVS-TUN工作原理

1.當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IPCIP,目標IPVIP;

2.PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈;

3.IPVS比對數據包請求的服務是否為集群服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,目標IPRIP。然后發至POSTROUTING鏈。 此時源IPDIP,目標IPRIP;

4.POSTROUTING鏈根據最新封裝的IP報文,將數據包發至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時通過隧道傳輸)。 此時源IPDIP,目標IPRIP;

5.RS接收到報文后發現是自己的IP地址,就將報文接收下來,拆除掉最外層的IP后,會發現里面還有一層IP首部,而且目標是自己的lo接口VIP,那么此時RS開始處理此請求,處理完成之后,通過lo接口送給eth0網卡,然后向外傳遞。 此時的源IP地址為VIP,目標IPCIP;

6.響應報文最終送達至客戶端。

工作邏輯圖:

4.2 LVS-TUN模式特點

1)集群節點不必位于同一個物理網絡但必須都擁有公網 IP(或都可以被路由);

2)真實服務器不能將網關指向負載調度器;

3)RIP 必須是公網地址;

4)負載調度器只負責入站請求;

5)不支持端口映射功能;

6)發送方和接收方必須支持隧道功能。

五、LVS-DR模式配置腳本

在lvs director上的腳本:

#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DRLOCK=/var/lock/ipvsadm.lock
VIP=192.168.95.10
RIP1=192.168.95.11
RIP2=192.168.95.12
DipName=ens33. /etc/rc.d/init.d/functions
start() {PID=`ipvsadm -Ln | grep ${VIP} | wc -l`if [ $PID -gt 0 ];thenecho "The LVS-DR Server is already running !"else#Set the Virtual IP Address/sbin/ifconfig ${DipName}:10 $VIP broadcast $VIP netmask 255.255.255.255 up/sbin/route add -host $VIP dev ${DipName}:10#Clear IPVS Table/sbin/ipvsadm -C#Set Lvs/sbin/ipvsadm -At $VIP:80 -s rr/sbin/ipvsadm -at $VIP:80 -r $RIP1:80 -g/sbin/ipvsadm -at $VIP:80 -r $RIP2:80 -g/bin/touch $LOCK#Run Lvsecho "starting LVS-DR Server is ok !"fi
}stop() {#clear Lvs and vip/sbin/ipvsadm -C/sbin/route del -host $VIP dev ${DipName}:10/sbin/ifconfig ${DipName}:10 down >/dev/nullrm -rf $LOCKecho "stopping LVS-DR server is ok !"
}status() {if [ -e $LOCK ];thenecho "The LVS-DR Server is already running !"elseecho "The LVS-DR Server is not running !"fi
}case "$1" instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo "Usage: $1 {start|stop|restart|status}"exit 1
esac
exit 0

RS上的腳本:

#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DR-RIPLOCK=/var/lock/ipvsadm.lock
VIP=192.168.95.10. /etc/rc.d/init.d/functions
start() {PID=`ifconfig | grep lo:10 | wc -l`if [ $PID -ne 0 ];thenecho "The LVS-DR-RIP Server is already running !"else/sbin/ifconfig lo:10 $VIP netmask 255.255.255.255 broadcast $VIP up/sbin/route add -host $VIP dev lo:10echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/eth0/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce/bin/touch $LOCKecho "starting LVS-DR-RIP server is ok !"fi
}stop() {/sbin/route del -host $VIP dev lo:10/sbin/ifconfig lo:10 down >/dev/nullecho "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/eth0/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announcerm -rf $LOCKecho "stopping LVS-DR-RIP server is ok !"
}status() {if [ -e $LOCK ];thenecho "The LVS-DR-RIP Server is already running !"elseecho "The LVS-DR-RIP Server is not running !"fi
}case "$1" instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo "Usage: $1 {start|stop|restart|status}"exit 1
esac
exit 0

六、LVS持久連接

(1)持久客戶端連接

定義:每客戶端持久。將來自于同一個客戶端的所有請求統統定向至此前選定的 RS ;也就是只要 IP 相同,分配的服務器始終相同。
演示代碼:
ipvsadm -A -t 172.16.0.8:0 -s wlc -p 120
# 添加一個 tcp 負載集群,集群地址為 172.16.0.8 ,算法為 wlc,持久化時間為 120s

(2)持久端口連接

定義:每端口持久。將來自于同一個客戶端對同一個服務 ( 端口 ) 的請求,始終定向至此前選定的 RS。
演示代碼:
ipvsadm -A -t 172.16.0.8:80 -s rr -p 120
# 添加一個 tcp 負載集群,集群地址為 172.16.0.8:80 ,算法為 wlc,持久化時間為 120s

(3)持久防火墻標記連接

定義:將來自于同一客戶端對指定服務 ( 端口 ) 的請求,始終定向至此選定的 RS。 不過它可以將兩個毫不相干的端口定義為一個集群服務。
演示代碼:
iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 80 -j MARK --set-mark 10 
# 添加一個防火墻規則,當目標地址為 172.16.0.8 并且 目標端口為 80 時給數據包打一個標記,設置mark 值為 10iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 443 -j MARK --set-mark 10
# 添加一個防火墻規則,當目標地址為 172.16.0.8 并且 目標端口為 443 時給數據包打一個標記,
設置mark 值為 10service iptables save 
# 保存防火墻規則持久化生效ipvsadm -A -f 10 -s wlc -p 120 
# 添加一個負載調度器,當 mark 值為 10 時進行負載均衡使用wlc 算法,持久化生效時間為 120s

七、LVS高可用性實現

LVS 不可用時:
Director 不可用,整個系統將不可用。
解決方案:高可用, keepalived heartbeat/corosync。
RS 不可用時:
RS 不可用時, Director 依然會調度請求至此 RS。
解決方案: 由 Director 對各 RS 健康狀態進行檢查,失敗時禁用,成功時啟用。
常用解決方案:
  • keepalived
  • heartbeat/corosync
  • ldirectord
檢測方式:
  • 網絡層檢測, icmp
  • 傳輸層檢測,端口探測
  • 應用層檢測,請求某關鍵資源
ldirectord 軟件:
ldirectord 是專門為 LVS 監控而編寫的,用來監控 lvs 架構中服務器池( server pool ) 的服務器狀態。ldirectord 運行在 IPVS 節點上, ldirectord 作為一個守護進程啟動后會對服務器池中的每個真實服務器發送請求進行監控, 如果 服務器沒有響應 lldirectord 的請求,那么 ldirectord 認為該服務器不可用,ldirectord 會運行 ipvsadm IPVS 表中該服務器進行刪除,如果等下次再次檢測有相應則通過 ipvsadm進行添加。
ldirectord :監控和控制 LVS 守護進程,可管理 LVS 規則
ldirectord 配置文件示例:
范例: DR 模型的 HTTP
[root@centos7 ~]#vim /etc/ha.d/ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=no     #當RS down時 yes將修改權重為0,此配置有bug ,no為從調度列表中刪除RS
virtual=192.168.150.100:80real=192.168.150.14 gate 1 #gate 表示DR模式,1 表示weightreal=192.168.150.15 gate 2fallback=127.0.0.1:80 gateservice=httpscheduler=wrr#persistent=600#netmask=255.255.255.255protocol=tcpchecktype=negotiatecheckport=80
范例: DR 模型的 FWM
[root@centos7 ~]# /etc/ha.d/ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=yes
logfile=“/var/log/ldirectord.log“ #日志文件
quiescent=no #當RS down時 yes將修改權重為0,此配置有bug ,no為從調度列表中刪除RS
virtual=66 #指定VS的FWM 或 IP:PORTreal=172.16.0.7:80 gate 2 #DR模型,權重為 2real=172.16.0.8:80 gate 1fallback=127.0.0.1:80 gate #sorry serverservice=httpscheduler=wrr#protocol=tcp #如果FWM模式,此行必須注釋掉checktype=negotiatecheckport=80request="index.html"receive=“Test Ldirectord"

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

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

相關文章

【2025深度學習系列專欄大綱:深入探索與實踐深度學習】

第一部分:深度學習基礎篇 第1章:深度學習概覽 1.1 深度學習的歷史背景與發展軌跡 1.2 深度學習與機器學習、傳統人工智能的區別與聯系 1.3 深度學習的核心組件與概念解析 神經網絡基礎 激活函數的作用與類型 損失函數與優化算法的選擇 1.4 深度學習框架簡介與選擇建議 第2…

Java與C語言中取模運算符%的區別對比

博客主頁: [小????????] 本文專欄: Java 文章目錄 💯前言💯C語言中的取模運算符 %基本行為示例 注意事項示例:負數取模 💯Java中的取模運算符 %基本行為示例 對浮點數的支持示例:浮點數取模 符…

OpenCV機器學習(4)k-近鄰算法(k-Nearest Neighbors, KNN)cv::ml::KNearest類

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::ml::KNearest 是 OpenCV 機器學習模塊中的一部分,它提供了實現 k-近鄰算法(k-Nearest Neighbors, KNN)的…

過于依賴chatgpt編程會有哪些弊端?

過于依賴ChatGPT編程可能會帶來以下問題: 1. 基礎不扎實,容易“變菜” 以前遇到代碼還會琢磨哪里不懂、怎么改,現在直接復制粘貼,時間長了可能連基本的語法和邏輯都搞不清楚。就像考試總抄答案,真讓你自己寫的時候腦子…

紅隊視角出發的k8s敏感信息收集——Kubernetes API 擴展與未授權訪問

針對 Kubernetes 第三方組件與 Operator 的詳細攻擊視角分析,涵蓋 Service Mesh、Helm Releases 和 Database Operators 的潛在風險及利用方法。 攻擊鏈示例 1. 攻擊者通過未授權的 Tiller 服務部署惡意 Helm Chart → 2. 創建后門 Pod 并橫向移動至 Istio 控制平…

3D與2D機器視覺機械臂引導的區別

3D與2D機器視覺在機械臂引導中的主要區別如下: 數據維度 2D視覺:僅處理平面圖像,提供X、Y坐標信息,無法獲取深度(Z軸)數據。 3D視覺:處理三維空間數據,提供X、Y、Z坐標及物體的姿態…

日常開發中,使用JSON.stringify來實現深拷貝的坑

使用JSON.stringify的方式來實現深拷貝的弊端 弊端一:無法拷貝NaN、Infinity、undefined這類值 無法拷貝成功的原因: 對于JSON來說,它支持的數據類型只有null、string、number、boolean、Object、Array,所以對于它不支持的數據類…

AI大模型(如GPT、BERT等)可以通過自然語言處理(NLP)和機器學習技術,顯著提升測試效率

在軟件測試中,AI大模型(如GPT、BERT等)可以通過自然語言處理(NLP)和機器學習技術,顯著提升測試效率。以下是幾個具體的應用場景及對應的代碼實現示例: 1. 自動生成測試用例 AI大模型可以根據需求文檔或用戶故事自動生成測試用例。 代碼示例(使用 OpenAI GPT API): …

【Linux】Ubuntu Linux 系統——Node.js 開發環境

??大家好,我是練小杰,今天星期五了,同時也是2025年的情人節,今晚又是一個人的舉個爪子!! 🙂 本文是有關Linux 操作系統中 Node.js 開發環境基礎知識,后續我將添加更多相關知識噢&a…

Dockerfile 編寫推薦

一、導讀 本文主要介紹在編寫 docker 鏡像的時候一些需要注意的事項和推薦的做法。 雖然 Dockerfile 簡化了鏡像構建的過程,并且把這個過程可以進行版本控制,但是不正當的 Dockerfile 使用也會導致很多問題。 docker 鏡像太大。如果你經常使用鏡像或者…

mysql 學習16 視圖,存儲過程,存儲函數,觸發器

視圖, 存儲過程, 存儲函數 觸發器

SpringBoot+Vue+數據可視化的動漫妝造服務平臺(程序+論文+講解+安裝+調試+售后等)

感興趣的可以先收藏起來,還有大家在畢設選題,項目以及論文編寫等相關問題都可以給我留言咨詢,我會一一回復,希望幫助更多的人。 系統介紹 在當今數字化高速發展的時代,動漫產業迎來了前所未有的繁榮,動漫…

rtsp rtmp 跟 http 區別

SDP 一SDP介紹 1. SDP的核心功能 會話描述:定義會話的名稱、創建者、時間范圍、連接地址等全局信息。媒體協商:明確媒體流的類型(如音頻、視頻)、傳輸協議(如RTP/UDP)、編碼格式(如H.264、Op…

Containerd 簡介、安裝與使用指南

1. Containerd 簡介 Containerd 是一個開源的容器運行時,專注于管理容器的生命周期。它最初是 Docker 的一部分,后來被分離出來成為一個獨立的項目,并成為 Kubernetes 和其他容器平臺的底層運行時。Containerd 提供了容器的創建、啟動、停止…

開源語音克隆項目 OpenVoice V2 本地部署

#本機環境 WIN11 I5 GPU 4060ti 16G 內存 32G #開始 git clone https://github.com/myshell-ai/OpenVoice.git conda create -n opvenv python3.9 -y conda activate opvenv pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/…

【Prometheus】prometheus結合domain_exporter實現域名監控

?? 歡迎大家來到景天科技苑?? ???? 養成好習慣,先贊后看哦~???? ?? 作者簡介:景天科技苑 ??《頭銜》:大廠架構師,華為云開發者社區專家博主,阿里云開發者社區專家博主,CSDN全棧領域優質創作者,掘金優秀博主,51CTO博客專家等。 ??《博客》:Python全…

rustdesk編譯修改名字

最近,我用Rust重寫了一個2W行C代碼的linux內核模塊。在此記錄一點經驗。我此前沒寫過內核模塊,認識比較疏淺,有錯誤歡迎指正。 為什么要重寫? 這個模塊2W行代碼量看起來不多,卻在線上時常故障,永遠改不完。…

在linux系統中安裝Anaconda,并使用conda

系統 : ubuntu20.04 顯卡:NVIDIA GTX1650 目錄 安裝Anaconda第一步:下載合適版本的Anconda1. 查看自己Linux的操作系統及架構命令:uname -a2. 下載合適版本的Anconda 第二步:安裝Aanconda1. 為.sh文件設置權限2. 執行.sh文件2.1 .…

(前端基礎)HTML(一)

前提 W3C:World Wide Web Consortium(萬維網聯盟) Web技術領域最權威和具有影響力的國際中立性技術標準機構 其中標準包括:機構化標準語言(HTML、XML) 表現標準語言(CSS) 行為標準&#xf…

【ISO 14229-1:2023 UDS診斷(會話控制0x10服務)測試用例CAPL代碼全解析③】

ISO 14229-1:2023 UDS診斷【會話控制0x10服務】_TestCase03 作者:車端域控測試工程師 更新日期:2025年02月15日 關鍵詞:UDS診斷、0x10服務、診斷會話控制、ECU測試、ISO 14229-1:2023 TC10-003測試用例 用例ID測試場景驗證要點參考條款預期…