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.mzph.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测试场景验证要点参考条款预期…