LVS负载均衡超详细入门介绍

LVS

一、LVS入门介绍

1.1.LVS负载均衡简介

1.2.负载均衡的工作模式

1.2.1.地址转换NAT(Network Address Translation)

1.2.2.IP隧道TUN(IP Tunneling)

1.2.3.直接路由DR(Direct Routing)

1.3.LVS常用的负载调度算法

1.4.LVS管理工具ipvsadm

二、NFS共享存储服务

2.1.NFS简介

2.2.NFS共享存储服务实战

2.2.1.NFS服务器的安装配置

2.2.2.NFS客户端访问挂载

三、LVS负载均衡集群实战

3.1.地址转换模式(LVS-NAT)

3.1.1.案例描述

3.1.2.案例实施

3.1.3.验证测试

3.2.直接路由模式(LVS-DR)

3.2.1.案例描述

3.2.2.案例实施

3.2.3.验证测试

一、LVS入门介绍

1.1.LVS负载均衡简介

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法。

LVS现在已经成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够实现自动调用,在CentOS 7系列中通过“modprobe ip_vs”加载该模块。

lvs工作在四层,只转发请求不涉及流量,效率更高

nginx工作在七层能够针对域名、目录做特定转发,功能更全面

1.2.负载均衡的工作模式

关于集群的负载调度技术,可以基于IP、端口、内容等进行分发。其中基于IP的负载调度效率最高,基于IP的负载均衡模式中,常见的有地址转换、IP隧道和直接路由三种工作模式,如下图:

1.2.1.地址转换NAT(Network Address Translation)

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

1.2.2.IP隧道TUN(IP Tunneling)

采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 LVS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

1.2.3.直接路由DR(Direct Routing)

LVS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同LVS/TUN技术一样,LVS/DR技术可极大地 提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连 在同一物理网段上。

以上三种工作模式中,NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就采用这种方式;相对而言,DR模式和TUN模式负载能力更加强大,适合范围更广,但是节点的安全性要稍差一些。

1.3.LVS常用的负载调度算法

针对不同的网络服务和配置需要,LVS调度器提供多种不同的负载调度算法,其中最常见的如下所示:

轮询(Round Robin):

将收到的访问请求按照顺序轮流分配给集群中的各节点服务器,均等地对待每台节点服务器,而不考虑服务器实际的连接数和系统负载等条件;当所有节点服务器的配置都相近或一致时一般采用这种方式。

加权轮询(Weighted Round Bobin):

根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重。这样可以保证处理能力强的服务器承担更多的访问流量。

最少连接(Least Connections):

根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好地负载均衡。

加权最少连接(Weighted Least Connections):

在服务器节点的性能差异较大情况下,可以为真实服务器自动调整权重,权重较高的节点将承担更大比例的活动连接负载。

1.4.LVS管理工具ipvsadm

ipvsadm是在负载调度器上使用的LVS集群管理工具,通过调用ip_vs模块添加、删除、查看负载均衡集群运行状态。在CentOS 7系列中需要手动安装ipvsadm管理工具。

# modprobe ip_vs //加载LVS功能模块

# yum install -y ipvsadm //安装

# ipvsadm -v //查看已安装的ipvsadm版本

ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

# man ipvsadm //查询ipvsadm使用手册

创建虚拟服务器

若集群的VIP地址为192.168.1.100,针对TCP 80端口提供负载分流服务,使用的调度算法为轮询,则对应的ipvsadm命令操作如下,对于负载均衡调度器来说,VIP地址必须是本机实际已启用的IP地址。

# ipvsadm -A -t 192.168.1.100:80 -s rr

//-A /表示添加虚拟服务器

//-t /指定VIP地址以及端口

//-s /指定负载调度算法,轮询/rr、加权轮询/wrr、最少连接/lc、加权最少连接/wlc

添加节点服务器

为虚拟服务器192.168.1.100添加四个节点服务器,命令如下,若希望使用保持连接,还应添加“-p 60”选项,其中60为保持时间,单位为秒

# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -m -w 1

# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.30:80 -m -w 1

# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.40:80 -m -w 1

# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.50:80 -m -w 1

//-a /表示添加节点服务器

//-t /指定VIP地址以及端口

//-r /指定RIP地址以及端口

//-m /表示使用NAT集群模式,-g为DR模式、-i为TUN模式

//-w /指定权重,权重值越高被分配的用户请求数量就越多,权重为0时,表示停用该节点服务器

查看LVS集群状态

# 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.1.100:80 rr

  -> 192.168.1.20:80              Masq    1      0          0         

  -> 192.168.1.30:80              Masq    1      0          0         

  -> 192.168.1.40:80              Masq    1      0          0         

  -> 192.168.1.50:80              Masq    1      0          0      

Forward :负载均衡集群模式,Masq为NAT,Route为DR模式,Tunnel为TUN模式

Weight :权重,该值越大被分配的请求就越多,都一致时,表示均匀地接受请求

ActiveConn :活跃的连接数

InActConn:已处理的连接数

删除集群相关条目

# ipvsadm -d -r 192.168.1.20:80 -t 192.168.1.100:80 //删除单条节点服务器

# ipvsadm -D -t 192.168.1.100:80 //删除虚拟服务器,包括所有节点服务器

二、NFS共享存储服务

2.1.NFS简介

NFS是Network File System的缩写,中文意思是网络文件系统。它的主要功能是通过TCP/IP网络让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为‘应用/节点’服务器)可以通过mount挂载的方式将NFS服务器端共享的存储目录挂载到NFS客户端本地系统中,从客户端本地来看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。在互联网中小型网站集群架构后端常用NFS进行数据共享,如果是大型网站,可能还会用到更复杂的分布式文件系统。例如Moosefs/MFS、GlusterFS、FastDFS。

NFS服务的实现依赖于RPC(Remote Process Call,远程过程调用)机制,以完成远程到本地的映射过程,在CentOS 7系列系统中,需要安装nfs-utils、rpcbind软件包来提供NFS共享服务。前者用于NFS共享发布和访问,后者用于RPC支持。

NFS的RPC服务的主要功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而确保客户端可以连接到正确的NFS端口上去,达到实现数据传输交互数据目的,这个RPC服务类似NFS服务器端和NFS客户端之间的一个中介。

2.2.NFS共享存储服务实战

案例描述:

通过NFS服务实现共享文件,使得两台Web服务器能够同时访问该共享获取同样的数据。

案例环境:

主机

操作系统

IP地址

主要软件

NFS Server

CentOS 7.5_64

192.168.1.14/24

nfs-utils、rpcbind

Web Client_1

CentOS 7.5_64

192.168.1.12/24

Web Client_2

CentOS 7.5_64

192.168.1.13/24

2.2.1.NFS服务器的安装配置

# yum install -y nfs-utils rpcbind

# systemctl enable nfs

# systemctl enable rpcbind

NFS设置共享目录

# mkdir -p /var/www/html

# echo "这是NFS存储服务器!" > /var/www/html/index.html

# vim /etc/exports //该文件用于设置NFS共享项目,指定共享目录、权限等

/var/www/html    192.168.1.0/24(rw,sync,no_root_squash)

或者

/var/www    192.168.1.0/24(rw) ,192.168.2.1(ro)

编辑以上配置文件时客户机可以是主机名、IP地址、网段、且允许使用*、?

通配符

权限中rw表示读写、ro表示只读,sync表示同步写入,no_root_squash表示>

当客户机用root登录时赋予本地root权限

# systemctl restart rpcbind  //先启动该服务

# systemctl restart nfs

查看本地共享的项目:

# showmount -e

"clnt_create: RPC: Unknown host" //首次查看时可能会报此错误

解决方法:

# vim /etc/hosts

192.168.1.14    pillarx1m //加入当前主机IP地址与对应的主机名

# showmount -e //再次查看当前服务器的共享项目

Export list for pillarx1m:

/var/www/html 192.168.1.0/24

2.2.2.NFS客户端访问挂载

NFS协议的目标是提供一种网络文件系统因此对NSF共享的访问也使用mount命令来进行挂载,对应的文件系统类型为nfs。即可以手动挂载也可以加入fstab配置文件实现开机自动挂载,考虑到集群系统网络稳定性,NFS服务器和NFS客户端之间最好是使用专用网络来进行连接。

# yum install -y nfs-utils rpcbind  //rpcbind客户机必须安装,nfs用于支持showmount命令

# systemctl enable rpcbind

# systemctl start rpcbind

# showmount -e 192.168.1.14 //查询NFS服务器的共享项目

Export list for 192.168.1.14:

/var/www/html 192.168.1.0/24

客户端手动挂载NFS服务器共享的目录

# mkdir /var/www

# mount 192.168.1.14:/var/www/ /var/www

查看客户机中的网页是否为NFS服务器的内容:

# cat /var/www/html/index.html

这是NFS存储服务器!

此时通过# mount 命令同样可以查看到已挂载的项目中有当前的NFS项目

客户端实现开机自动挂载:

# vim /etc/fstab

192.168.1.14:/var/www /var/www/        nfs     rw              0 0

添加开机自动挂载配置文件后,重启电脑后可以查看到该项目已经挂载

也可以在当前状态下输入# mount -a实现立即加载fstab配置文件

三、LVS负载均衡集群实战

3.1.地址转换模式(LVS-NAT)

3.1.1.案例描述

在NAT模式的集群中,LVS负载调度器是所有节点访问互联网的网关服务器,其外网地址192.168.1.10同时也作为整个集群的VIP地址,LVS服务器具备两块网卡,分别连接内网和外网。关于客户机访问服务器的数据流量的大致流向是这样的:

client --> LVS --> RS --> LVS --> client。此外,在接下来的案例中,均不再结合NFS共享存储,原因是加上NFS后当客户端访问服务器时,无论如何都只会显示一个网页内容,因此验证效果不明显。

案例架构图如下:

案例环境:

主机

操作系统

IP地址

主要软件

LVS Server

CentOS 7.5_64

192.168.1.10/24

192.168.2.10/24

ipvsadm

Web Server_1

CentOS 7.5_64

192.168.2.20/24

httpd-2.4.6-45.el7.centos.x86_64

Web Server_2

CentOS 7.5_64

192.168.2.30/24

3.1.2.案例实施

对于LVS负载调度器来说,需要开启路由转发规则,以便节点服务器能够访问到互联网,所有的节点服务器、共享存储均位于内网中,其默认网关设置为LVS负载调度器的内网IP地址(192.168.2.10)。

LVS Server操作

开启路由转发:

# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

# sysctl -p

配置负载分配策略

# yum install -y ipvsadm

# ipvsadm -A -t 192.168.1.10:80 -s rr

# ipvsadm -a -t 192.168.1.10:80 -r 192.168.2.20:80 -m -w 1

# ipvsadm -a -t 192.168.1.10:80 -r 192.168.2.30:80 -m -w 1

若要验证权重分配几率,最好是采用wrr来实现,CentOS 7中通过rr无法体现出权重的几率

# 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.1.10:80 rr

  -> 192.168.2.20:80              Masq    1      0          0         

  -> 192.168.2.30:80              Masq    1      0          0     

两台Web Server配置

Web Server_1配置:

指定网关为LVS服务器的内网IP地址:

# vim /etc/sysconfig/network-scripts/ifcfg-ens33

GATEWAY="192.168.2.10"

# systemctl restart network

安装配置提供给客户端的应用服务程序

# yum install -y httpd

# systemctl enable httpd

# systemctl start httpd

# mkdir -p /var/www/html/

# echo "LVS负载均衡集群之Web Server_1" > /var/www/html/index.html

Web Server_2配置:

指定网关为LVS服务器的内网IP地址:

# vim /etc/sysconfig/network-scripts/ifcfg-ens33

GATEWAY="192.168.2.10"

# systemctl restart network

安装配置提供给客户端的应用服务程序

# yum install -y httpd

# systemctl enable httpd

# systemctl start httpd

# mkdir -p /var/www/html/

# echo "LVS负载均衡集群之Web Server_2" > /var/www/html/index.html

3.1.3.验证测试

外网客户机测试:

通过外网客户机访问集群VIP地址访问集群,发现不断刷新或重新连接能够出现不同的页面信息,不过这些信息都来自于节点服务器中的数据,此时再查看LVS服务器的负载情况,也是有所变化的:

# 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.1.10:80 rr

  -> 192.168.2.20:80              Masq    1      0          6         

  -> 192.168.2.30:80              Masq    1      0          5    

此外,还可以直接查看节点服务器的访问日志,由于此种集群方式采用的是转发请求,因此在节点服务器日志中是能够看到外网客户机访问的。

# cat /etc/httpd/logs/access_log

192.168.1.253 - - [11/Nov/2018:12:04:15 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0"

默认lvs会话保持为五秒。

会话保持时间设置:

节点服务器:KeepAliveTimeout 10

lvs调度服务器:

# ipvsadm --list --timeout

# ipvsadm --set 720 120 300

3.2.直接路由模式(LVS-DR)

3.2.1.案例描述

在DR模式的集群中,LVS负载调度器作为集群的访问入口,但不作为网关使用;服务器池中的所有节点服务器各自接入互联网,发送给客户机的Web响应数据包不需要经过LVS负载调度器。这种方式入站、出站访问数据被分别处理,因此LVS负载调度器和所有的节点服务器都需要配置VIP地址,以便响应对整个集群的访问,考虑到数据存储安全性,共享存储设备会放在内部专用网络中。关于客户机访问服务器的数据流量的大致流向是这样的:client --> LVS --> RS --> client。此外,在接下来的案例中,均不再结合NFS共享存储,原因是加上NFS后当客户端访问服务器时,无论如何都只会显示一个网页内容,因此验证效果不明显。

案例架构图如下:

案例环境:

3.2.2.案例实施

LVS Server操作

配置虚拟IP地址

采用虚接口的方式(ens32:0)为网卡ens32绑定一个VIP地址,以便响应集群访问,配置结果为ens32:192.168.1.10、ens32:0:192.168.1.100

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-ens32 ifcfg-ens32:0

# vim ifcfg-ens32:0 //只修改以下三部分内容即可

NAME=ens32:0

DEVICE=ens32:0

IPADDR=192.168.1.100

# ifup ens32:0

# ifconfig ens32:0

ens32:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255

        ether 00:0c:29:99:f9:ca  txqueuelen 1000  (Ethernet)

调整/proc响应参数

对于DR集群来说,由于LVS负载调度器和各节点需要共用VIP地址,应该关闭Linux内核的重定向参数响应。

# vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens32.send_redirects = 0 //此接口地址为lvs服务器正在使用的物理接口

# sysctl -p

配置负载分配策略

# yum install -y ipvsadm

# ipvsadm -A -t 192.168.1.100:80 -s rr

# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20 -g -w 1

# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.30 -g -w 1

# 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.1.100:80 rr

  -> 192.168.1.20:80              Route   1      0          0         

  -> 192.168.1.30:80              Route   1      0          0  

两台Web Server配置

使用DR模式时,节点服务器也需要配置VIP地址,并调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突,除此之外,WEB服务器的配置与NAT模式配置类似。

节点服务器配置VIP地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发),因此使用虚接口lo:0来承受VIP地址,并为本机添加一条路由记录,将访问VIP地址的数据限制在本地,避免通信紊乱。

Web Server_1配置:

设置VIP地址:

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-lo ifcfg-lo:0

# vim ifcfg-lo:0 //只修改以下三部分内容即可

DEVICE=lo:0

IPADDR=192.168.1.100

NETMASK=255.255.255.255

# ifup lo:0

# ifconfig lo:0

添加路由

# /sbin/route add -host 192.168.1.100 dev lo:0

# vim /etc/rc.local

/sbin/route add -host 192.168.1.100 dev lo:0

调整/proc相应参数

# 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 = 2

# sysctl -p

安装配置提供给客户端的应用服务程序

# yum install -y httpd

# systemctl enable httpd

# systemctl start httpd

# mkdir -p /var/www/html/

# echo "LVS负载均衡集群之Web Server_1" > /var/www/html/index.html

Web Server_2配置:

设置VIP地址:

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-lo ifcfg-lo:0

# vim ifcfg-lo:0 //只修改以下三部分内容即可

DEVICE=lo:0

IPADDR=192.168.1.100

NETMASK=255.255.255.255

# ifup lo:0

# ifconfig lo:0

添加路由

# /sbin/route add -host 192.168.1.100 dev lo:0

# vim /etc/rc.local

/sbin/route add -host 192.168.1.100 dev lo:0

调整/proc相应参数

# 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 = 2

# sysctl -p

安装配置提供给客户端的应用服务程序

# yum install -y httpd

# systemctl enable httpd

# systemctl start httpd

# mkdir -p /var/www/html/

# echo "LVS负载均衡集群之Web Server_2" > /var/www/html/index.html

3.2.3.验证测试

外网客户机测试:

通过外网客户机访问集群VIP地址访问集群,发现不断刷新或重新连接能够出现不同的页面信息,不过这些信息都来自于节点服务器中的数据,此时再查看LVS服务器的负载情况,也是有所变化的:

# ipvsadm -ln

此外,还可以直接查看节点服务器的访问日志,由于此种集群方式采用的是转发请求,因此在节点服务器日志中是能够看到外网客户机访问的。

# cat /etc/httpd/logs/access_log

192.168.1.253 - - [11/Nov/2018:12:04:15 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Wind ows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ThingsBoard版本控制配合Gitee实现版本控制

1、概述 2、架构 3、导出设置 4、仓库 5、同步策略 6、扩展 7、案例 7.1、首先需要在Giitee上创建对应同步到仓库地址 ​7.2、giit仓库只能在租户层面进行配置 7.3、 配置完成后&#xff1a;检查访问权限。显示已成功验证仓库访问&#xff01;表示配置成功 7.4、添加设…

”数组指针变量与函数指针变量“宝典

大家好呀&#xff0c;我又来啦&#xff01;最近我很高效对不对&#xff0c;嘿嘿&#xff0c;被我自己厉害到了。 这一节的内容还是关于指针的&#xff0c;比上一期稍微有点难&#xff0c;加油&#xff01;&#xff01;&#xff01; 点赞收藏加关注&#xff0c;追番永远不迷路…

AI大事记(持续更新)

文章目录 前言 一、人工智能AI 1.基本概念 2.相关领域 2.1基础设施 2.2大模型 2.3大模型应用 二、大事记 2024年 2024-05-14 GPT-4o发布 2024-02-15 Sora发布 2023年 2023-03-14 GPT-4.0发布 2022年 2022-11-30 ChatGPT发布 总结 前言 2022年11月30日openai的…

从零开始学习Linux(6)----进程控制

1.环境变量 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;我们在编写C/C代码时&#xff0c;链接时我们不知道我们链接的动态静态库在哪里&#xff0c;但可以连接成功&#xff0c;原因是环境变量帮助编译器进行查找&#xff0c;环境变量通常具有…

【爬虫之scrapy框架——尚硅谷(学习笔记two)--爬取电影天堂(基本步骤)】

爬虫之scrapy框架--爬取电影天堂——解释多页爬取函数编写逻辑 &#xff08;1&#xff09;爬虫文件创建&#xff08;2&#xff09;检查网址是否正确&#xff08;3&#xff09;检查反爬&#xff08;3.1&#xff09; 简写输出语句&#xff0c;检查是否反爬&#xff08;3.2&#x…

电力系统潮流计算的计算机算法(一)——网络方程、功率方程和节点分类

本篇为本科课程《电力系统稳态分析》的笔记。 本篇为这一章的第一篇笔记。下一篇传送门。 实际中的大规模电力系统包含成百上千个节点、发电机组和负荷&#xff0c;网络是复杂的&#xff0c;需要建立复杂电力系统的同一潮流数学模型&#xff0c;借助计算机进行求解。 简介 …

免费Premiere模板,几何图形元素动画视频幻灯片模板素材下载

Premiere Pro模板&#xff0c;几何图形元素动画视频幻灯片模板 &#xff0c;组织良好&#xff0c;易于自定义。包括PDF教程。 项目特点&#xff1a; 使用Adobe Premiere Pro 2021及以上版本。 19201080全高清。 不需要插件。 包括帮助视频。 免费下载&#xff1a;https://prmu…

Fabric实现多GPU运行

官方的将pytorch转换为fabric简单分为五个步骤&#xff1a; 步骤 1&#xff1a; 在训练代码的开头创建 Fabric 对象 from lightning.fabric import Fabricfabric Fabric() 步骤 2&#xff1a; 如果打算使用多个设备&#xff08;例如多 GPU&#xff09;&#xff0c;就调用…

高级个人主页

高级个人主页 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1, use…

ESP32重要库示例详解(四):获取NTP时间之time库

在物联网项目中&#xff0c;时间同步和管理是至关重要的功能之一&#xff0c;特别是在需要执行定时任务或记录事件时间戳的场景下。Arduino平台通过其内置的<time.h>库提供了强大的时间处理能力&#xff0c;使得开发者能够方便地与网络时间协议&#xff08;NTP&#xff0…

PDF文件转换为CAD的方法

有时候我们收到一个PDF格式的设计图纸&#xff0c;但还需要进行编辑或修改时&#xff0c;就必须先将PDF文件转换回CAD格式。分享两个将PDF转换回CAD的方法&#xff0c;一个用到在线网站&#xff0c;一个用到PC软件&#xff0c;大家根据情况选择就可以了。 ☞在线CAD网站转换 …

css超出部分省略(单行、多行,多种方法实现)

HTML <p class"text">这是一行测试数据,这是一行测试数据,这是二行测试数据,这是一行测试数据,这是三行测试数据,这是四行测试数据</p>1.单行 .text{width: 200px;border: 1px solid #000000;white-space: nowrap; /* 控制元素不换行 */overflow: hi…

Django图书馆综合项目-学习(2)

接下来我们来实现一下图书管理系统的一些相关功能 1.在书籍的book_index.html中有一个"查看所有书毂"的超链接按钮&#xff0c;点击进入书籍列表book_list.html页面. 这边我们使用之前创建的命名空间去创建超连接 这里的book 是在根路由创建的namespacelist是在bo…

6. RedHat认证-基于公钥的认证方式

6. RedHat认证-基于公钥的认证方式 主要学习客户端访问服务端的时候&#xff0c;免密登录这一方式 注意: 免密登录只是基于公钥认证的一个附带属性(基于公钥认证的方式更加安全&#xff0c;防止黑客暴力破解) 第一步&#xff1a;将客户端生成的秘钥传送到服务器 在客户端通过…

2024中国(厦门)国际医用消毒及感控设备展览会

2024中国&#xff08;厦门&#xff09;国际医用消毒及感控设备展览会 2024 China (Xiamen) International Medical Disinfection And Infection Control Exhibition 致力于打造医用消毒及感控设备产业采购一站式平台 时 间&#xff1a;2024年11月1-3日 November 1-3, 2024 …

一文扫盲(13):电商管理系统的功能模块和设计要点

电商管理系统是一种用于管理和运营电子商务平台的软件系统。它提供了一系列功能模块&#xff0c;帮助企业进行商品管理、订单管理、会员管理、营销推广、数据分析等工作。本文将从以下四个方面介绍电商管理系统。 一、什么是电商管理系统 电商管理系统是一种集成了各种功能模块…

免费的集成组件有哪些?

集成组件是指将多个软件或系统进行整合&#xff0c;以实现更高效、更可靠的数据处理和管理。在数据管理和分析领域&#xff0c;集成组件是不可或缺的工具之一。 在当今高度信息化的时代&#xff0c;集成组件在各行各业的应用中扮演着举足轻重的角色。集成组件能够将不同来源的…

企业安全必备利器:专业级加密软件介绍

随着信息技术的迅猛发展&#xff0c;数据安全问题日益凸显&#xff0c;专业级加密软件应运而生&#xff0c;成为保护数据安全的重要工具。本文将对专业级加密软件进行概述&#xff0c;分析其特点、应用场景及分享。 一、专业级加密软件概述 专业级加密软件是指那些采用高级加密…

三分钟了解计算机网络核心概念-数据链路层和物理层

计算机网络数据链路层和物理层 节点&#xff1a;一般指链路层协议中的设备。 链路&#xff1a;一般把沿着通信路径连接相邻节点的通信信道称为链路。 MAC 协议&#xff1a;媒体访问控制协议&#xff0c;它规定了帧在链路上传输的规则。 奇偶校验位&#xff1a;一种差错检测方…

uniapp怎么使用jsx

安装vitejs/plugin-vue-jsx npm install vitejs/plugin-vue-jsx -Dvite.config.js配置 import { defineConfig } from "vite"; import uni from "dcloudio/vite-plugin-uni"; import vueJsx from vitejs/plugin-vue-jsxexport default defineConfig({plu…