构建LVS集群

news2024/11/17 7:19:18

一、集群的基本理论
(一)什么是集群
人群或事物聚集:
在日常用语中,群集指的是一大群人或事物密集地聚在一起。例如,“人们群集在广场上”,这里的“群集”是指大量人群聚集的现象。

计算机技术中的集群:在计算机科学和信息技术领域,群集(Cluster)通常指的是多个独立的计算机系统通过网络连接起来协同工作,共同提供服务或者执行计算任务的一种技术架构。

这种群集可以实现负载均衡、高可用性、高性能计算等功能。

(二)集群的分类
负载均衡集群(LB Cluster):负载均衡是一种分布式计算技术,旨在通过一个或多个负载均衡器将网络流量和计算任务分配到后端的一组服务器上。这样,每个服务器只需处理一部分请求,避免了单个服务器过载,并且能够实现服务的水平扩展。在LVS集群中,Director节点就承担了负载均衡的角色。

高可用性集群(HA Cluster):高可用性是指系统设计的一种目标,即确保在正常运行期间尽可能减少服务中断时间,并在发生故障时快速恢复服务的能力。通过冗余硬件、软件和网络配置以及故障转移策略(如主备切换),可以消除SPOF(Single Point Of Failure,单点故障),提高系统的整体可用性。在LVS集群中,使用Heartbeat或keepalived等工具可以实现Director节点之间的高可用切换。

高性能计算集群(HPC Cluster):高性能计算指的是利用并行计算技术和超级计算机系统,解决科学、工程、商业等领域中的大规模复杂问题。HPC系统通常包括大量处理器核心、高速互连网络、高效存储系统以及针对特定应用优化的软件栈。虽然LVS主要用于负载均衡和服务分发,但它也可以作为构建HPC环境的一部分,例如在某些情况下用于管理和调度分散在网络中的计算资源。然而,LVS本身并不直接提供高性能计算功能,而是为高性能计算环境提供了更好的基础设施支持。

(三)LB Cluster 负载均衡集群
1.按实现方式划分

硬件:F5 Big-IP(F5服务器负载均衡模块)

软件:

lvs:Linux Virtual Server

nginx:支持七层调度

haproxy:支持七层调度

ats:Apache Traffic Server

2.按协议层划分
传输层(通用):DNAT 和 DPORT

LVS:

nginx:stream

haproxy:mode tcp

应用层(专用):针对特定协议,常称为 proxy server

http:nginx, httpd, haproxy(mode http), ...

fastcgi:nginx, httpd, ...

mysql:mysql-proxy, mycat...

(四)HA 高可用集群实现

keepalived:vrrp协议

Ais:应用接口规范

heartbeat

cman+rgmanager(RHCS)

coresync_pacemaker

二、LVS简介
(一)什么是LVS

LVS群集(Linux Virtual Server Cluster)是一种基于Linux操作系统内核的高性能、高可用网络服务负载均衡解决方案。它利用Linux内核的IP虚拟服务器(IPVS)模块,将一组物理服务器构成一个逻辑上的、单一且透明的高性能虚拟服务器集群。

(二)LVS工作原理
Linux Virtual Server(LVS)工作原理基于网络层(四层,传输层)的负载均衡技术,它通过内核级别的IP虚拟服务器(IPVS)模块实现透明的流量分发

架构组成

Director(负载均衡器/调度器):作为集群的前端入口节点,接收所有来自客户端的请求,并根据预设的策略将请求转发至后端服务器。

Real Server(真实服务器):一组实际提供服务的服务器,负责处理从Director转发过来的请求,并将响应数据返回给客户端。

(三)LVS集群类型中的术语

VS
'虚拟(代理)服务器。在LVS(Linux Virtual Server)负载均衡技术中,虚拟(代理)服务器是指
通过集群系统对外提供服务的逻辑实体,其IP地址通常被称为VIP(Virtual IP)'
 
RS
'真实服务器,是指参与LVS集群提供服务的一组物理或虚拟服务器。它们负责处理由Director转发
过来的客户端请求,并将响应数据返回给客户端'
 
CIP
'客户端IP地址,指请求LVS服务的客户端设备的网络IP地址。在某些情况下,可能需要在调度策略
或会话保持中考虑客户端IP以实现特定的功能需求。'
 
VIP
'虚拟IP地址,它是LVS集群对外提供的统一服务地址。客户端通过访问VIP来请求服务,而实际的请
求会被透明地分发到后端的Real Server上'
 
DIP
'Director IP地址,即负载均衡器的IP地址。在LVS架构中,Director节点也被称为负载均衡器,
它接收并根据预设策略分发客户端请求至后端的Real Server。'
 
RIP
'真实服务器IP地址,是指集群内各个Real Server各自的实际网络IP地址,这些服务器将直接处
理从Director节点转发过来的客户端请求。'

访问流程大体为

CIP访问VIP---->VIP进行调用转换发送给DIP----->DIP将请求交给真实服务器DIP----->DIP返还数据包交给DIP---->DIP将数据包交给客户端

根据不同的工作模式,访问的具体流程也不一样

三、LVS工作模式及相关命令
(一)工作模式
1.NAT 模式

在NAT(Network Address Translation) 模式下,客户端请求首先到达Director(负载均衡器,即LVS),Director将请求的目标IP地址修改为选定的Real Server的IP地址,并转发给Real Server。当Real Server处理完请求并返回响应时,响应包会发回给Director,Director再将其源IP地址更改为VIP(虚拟IP地址),然后将响应发送给客户端。这种方式下,Director节点承担了所有网络地址转换的工作,但其自身的网络性能可能会成为瓶颈。

NAT模式访问过程基本为

①客户端请求

客户端发起请求至服务集群的VIP(Virtual IP)

②Director处理

请求首先到达负载均衡器(Director),Director节点内核中的IPVS模块根据预设的调度算法选择一个后端Real Server。

③修改包信息转发

Director将客户端请求的目标IP地址从VIP更改为所选Real Server的实际IP地址,并且源IP地址也由客户端IP变为Director自己的IP地址(DNAT)。

④Real Server响应

请求被转发给选定的Real Server进行处理,Real Server处理完成后直接将响应发回给Director。

⑤再次修改包信息返回客户端

当Director接收到Real Server的响应时,它会重新更改响应报文的源IP地址为VIP,目标IP地址恢复为客户端IP地址(SNAT),然后将响应发送给客户端。

2.DR直接路由模式
在DR (Direct Routing) 模式中,Director并不修改数据包的内容,而是更改数据包的MAC地址信息,使得请求能够直接被送到指定的Real Server。这样,Real Server可以直接响应客户端,而无需经过Director再次转发。这种模式下,Director和Real Server必须在同一物理网络中,并且Director需要通过ARP代理来管理VIP在局域网中的MAC地址映射关系。

①客户端请求

客户端发起请求至服务集群的VIP(Virtual IP)

②Director节点处理

请求首先到达前端的Director节点,Director节点上的内核模块IPVS根据预设的调度算法选择一个合适的后端真实服务器(Real Server)。

③MAC地址修改转发

在DR模式下,Director不改变数据包的目标IP地址(仍为VIP),而是修改其MAC地址,将数据包的MAC地址更改为所选Real Server的MAC地址。这样,当数据包在网络中传播时,会直接被送到指定的Real Server,而不是再次经过Director。

④Real Server响应

Real Server收到请求后进行正常的业务处理,并将响应直接返回给客户端,响应报文中的源IP仍然是VIP,目标IP是客户端的IP地址。

⑤网络层透明传输

因为在整个过程中,客户端始终认为它是在与VIP通信,所以对于客户端而言,整个过程是完全透明的,从而实现了负载均衡的效果。

在DR模式下,Director和Real Server需要位于同一物理网络中,通常还需要启用ARP代理或者IP伪装功能来确保网络设备正确地将VIP的MAC地址映射到Director节点上,以便能将请求定向到正确的Real Server。

其特点为:

Director和各RS都配置有VIP

确保前端路由器将目标IP为VIP的请求报文发往Director

RS和Director要在同一个物理网络

请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

不支持端口映射(端口不能修改)

客户端获取Director(LVS)的MAC地址

由于Director与真实服务器都设置了相同的VIP地址,为防止IP冲突,需要关闭服务端的ARP响应

路由器发起ARP广播,只有Director回复,从而获取Director的MAC地址

优点

负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

缺点

需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

3.TUN隧道模式
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持“IP Tunneling"。

NFSTUNDR
优点端口转换WAN性能最好
缺点性能瓶颈服务器支持隧道模式不支持跨网段
真实服务器要求anyTunnelingNON-arp device
支持网络privateLAN/WANLAN
真实服务器数量low(10~20)High(100)High(100)
真实服务器网关lvs内网地址Own router(网工定义)Own router

(二)调试算法
ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态

分为两种:静态方法和动态方法

仅根据算法本身进行调度

静态

RR:roundrobin,轮询,较常用

WRR:Weighted RR,加权轮询,较常用

SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存

动态

主要根据每RS当前的负载状态及调度算法进行调度Overhead=value 较小的RS将被调度

LC:least connections 适用于长连接应用

算法为:Overhead=activeconns*256+inactiveconns

WLC:Weighted LC,默认调度方法,较常用

算法为:Overhead=(activeconns*256+inactiveconns)/weight

SED:Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接

算法为:Overhead=(activeconns+1)*256/weight

NQ:Never Queue,第一轮均匀分配,后续SED

LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等

LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,,实现Web Cache等

(三)ipvsadm 工具
ipvsadm工具 是Linux中用于管理IPVS(IP Virtual Server)负载均衡服务的核心工具。IPVS是Linux内核中的一种虚拟服务器实现,它允许将一组物理服务器集群作为单一的、逻辑上的高性能和高可用虚拟服务器对外提供服务。

ipvsadm工具的主要功能包括:

1.添加和删除服务

-A 参数用于在内核中添加新的虚拟服务器。
-D 参数用于删除已存在的虚拟服务器配置。

2.设置调度算法

使用 -s 参数可以指定虚拟服务器使用的负载均衡调度算法,如轮询(rr)、加权轮询(wrr)、最少连接(lc)、加权最少连接(wlc)等。

-w: 设置权重(权重为0时表示暂停节点)

3.添加和删除后端真实服务器

-a 参数用于向现有虚拟服务器添加真实服务器。
-d 参数用于从虚拟服务器中删除指定的真实服务器。

4.查看当前配置

-L 或 --list 参数用于显示当前所有的IPVS规则和服务定义。

5.持久化保存和恢复规则

-S  用于保存当前所有IPVS规则到标准输出或文件。
-R  则可以从之前保存的规则文件中恢复IPVS规则。

6.LVS伪装类型

-m  表示使用NAT群集模式
-g   表示使用DR模式
-i    表示使用TUN模式

7.指定端口

-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口

通过ipvsadm工具,管理员可以方便地创建、修改和监控基于LVS的负载均衡系统,并根据业务需求调整流量分发策略,从而确保整个集群系统的稳定性和高效运行。

四、NAT模式 LVS负载均衡部署

外网客户端12.0.0.1
web服务器1192.168.83.20
web服务器2192.168.83.30
网关服务器

192.168.83.40

12.0.0.10

NFS服务器192.168.83.50

(一)配置NFS服务器

1.建立共享文件

首先在NFS服务器上建议共享文件与目录

如果没有安装nfs、rpcbind。执行下面这条命令进行安装

yum install nfs-utils rpcbind -y

安装完毕之后,构建挂载目录与访问数据

2.共享目录

编辑/etc/exports文件,语法格式为:共享目录路径   可以访问的IP地址(权限)

例如指定一个地址对共享目录有读写权限,文件内容可编辑为:/nfs   192.168.83.30(rw)

编写完文件后开启服务

systemctl start  nfs
systemctl start  rpcbind

如果服务已经开启,执行:exportfs -r  刷新文件

(二)配置网关服务器

1.下载ipvsadm服务

首先安装ipvsadm服务:yum install ipvsadm.x86_64 -y

安装完之后直接启动服务会报错,因为找不到/etc/sysconfig/ipvsadm文件

这是一个配置信息文件,需要手动生成,使用ipvsadm-save命令

2.添加网卡

网关服务器准备两块网卡,分别设置一个公网IP地址与私网IP地址,并将网关设置为自己

重启网卡后,使用route -n命令查看网关是否生效

3.开启路由转发

在/etc/sysctl.conf文件中添加net.ipv4.ip_forward = 1

4.设置ipvsadm策略

首先清空ipvsadm策略:ipvsadm -C,使用ipvsadm -ln查看策略

添加策略

ipvsadm -A -t 12.0.0.10:80 -s rr
 
'这条命令用于添加一个新的虚拟服务器(VIP),即在LVS中创建一个服务入口点。
-A 参数表示添加新的虚拟服务器,
-t 12.0.0.10:80 表示VIP地址和端口是12.0.0.10上的TCP 80端口。
-s rr 表示使用轮询(Round Robin)调度算法进行负载均衡,即请求会按顺序依次分发到后端服务器。'
 
 
ipvsadm -a -t 12.0.0.10:80 -r 192.168.83.20:80 -m
 
'这条命令用于将一个真实服务器添加到已有的虚拟服务器上。
-a 参数表示向已有虚拟服务器添加真实服务器记录,
-t 12.0.0.10:80 是指向已经创建好的VIP地址和端口,
-r 192.168.83.20:80 表示要添加的真实服务器地址和端口也是TCP 80端口。 
-m 参数表示采用NAT模式进行转发,这意味着来自客户端的请求将会被改写目标地址为真实的服务器地址'
 
 
ipvsadm -a -t 12.0.0.10:80 -r 192.168.83.30:80 -m
 
'同上一个'

(三)配置服务器

1.服务器1

首先使用showmount  -e命令查看NFS服务器共享情况

使用mount命令将共享目录挂载到web服务的站点目录下

将本机的网关设置为网关服务器的私网地址,并重启网卡生效

2.服务器2

查看NFS服务器共享目录

开启web服务并进行挂载

将本机的网关设置为网关服务器的私网地址,并重启网卡生效

(四)配置公网客户端

配置好模拟公网的IP地址及网关

在实际环境中基本上是无法设置公网的网关的,只能通过路由一次次转发到达

访问网关服务器

#LVS的负载调度算法有四种最常用的:轮询算法(rr)、加权轮询(wrr)、最少轮询(lc)、
#加权最少轮询(wlc)
 
#创建虚拟服务器(注意:NAT模式要两块网卡,调度器的地址是外网口地址)
#群集的VIP地址为12.0.0.10,针对TCP 80端口提供负载分流服务,使用的轮询调度算法。
#对于负载均衡调度器来说,VIP必须是本机实际已启用的IP地址
ipvsadm -A -t 12.0.0.10:80 -s rr
 
#选项 
'"-A"表示添加虚拟服务器,
 "-t"用来指定VIP地址及TCP端口,
 "-s"用来指定负载调度算法——rr、wrr、lc、wlc'
 
#添加服务器节点
ipvsadm -a -t 12.0.0.10:80 -r 192.168.83.20:80 -m
ipvsadm -a -t 12.0.0.10:80 -r 192.168.83.20:80 -m
 
'选项 
"-a"表示添加真实服务器
"-t"用来指定VIP地址及TCP端口
"-r"用来指定RIP地址及TCP端口
"-m"表示使用NAT群集模式("-g"是DR模式,"-i"是TUN模式)
{ -m参数后面还可以跟-w的参数,这里没有做的"-w"用来设置权重(权重为0时表示暂停节点)}'
 
#删除服务器节点
ipvsadm -d -r 192.168.83.20:80 -t 12.0.0.10:80
 
'需要从服务器池中删除某一个节点时,使用选项"-d"。
执行删除操作必须指定目标对象,包括节点地址、虚拟IP地址。
如上所示的操作将会删除LVS群集12.0.0.10:80中的节点192.168.83.20:80
若需要删除整个虚拟服务器时,使用选项-D并指定虚拟IP地址即可,无需要指定节点。
例如:“ipvsadm -D -t 12.0.0.10:80",则删除此虚拟服务器。'
 
ipvsadm -l	#查看节点状态,加个"-n"将以数字形式显示地址、端口信息
ipvsadm-save  > /etc/sysconfig/ipvsadm	#保存策略
 
#使用导出/导入工具ipvsadm-save/ipvsadm-restore可以保存、恢复LVS策略,
#方法类似于iptables的规则的导出、导入

五、DR模式部署

环境部署

C/SIP地址安装软件
DR服务器192.168.83.40;VIP:192.168.83.200
ipvsadm
web服务器192.168.83.60;VIP:192.168.83.200httpd
web服务器2192.168.83.100;VIP:192.168.83.200httpd
客户端192.168.83.30

1.客户端发起请求,直接访问虚拟IP(VIP)

2.路由器发起ARP广播,获取调度服务器的MAC地址

3.LVS的调度器接受请求之后,根据算法选择一台后端的真实服务器,请求转发到后端真实服务器,把请求报文的目的MAC地址,修改成后端真实服务器的MAC地址,然后转发

4.后端真实F服务器接受请求,处理完成之后。由后端服务器直接把响应结果转发给客户端,响应报文中的目的MAC地址修改成客户端的MAC地址,直接把响应报文转发到客户端

VIP的作用:(设置相同的VIP地址)

1、标识后端的真实服务器

2、保证调度器和后端服务器之间的通信,保证请求可以正确的转发到后端服务器

3、实现高可用和故障转移

解决IP地址冲突问题

在真实服务器上修改内核参数,使真实服务器只对自己服务器上的真实IP地址响应ARP解析。

(二)配置DR服务器
下载ipvsdam工具:yum install ipvsadm.x86_64 -y

1.配置虚拟VIP

想要永久保存VIP,可以添加网卡,或写一个ens33:0的配置文件保存

添加虚拟网卡,注意子网掩码为32,表示该地址为一个固定地址

2.调整/proc响应参数

net.ipv4.ip_forward = 0
'这个参数用于控制IP转发功能。当其值为0时,表示关闭IP层的路由转发功能。这意味着系统不
会接受来自其他子网的流量并将其转发到另一个子网,通常在主机仅作为终端节点而不是路由器
或网关时设置。'
 
net.ipv4.conf.all.send_redirects = 0
'这个参数控制是否发送ICMP重定向消息。当其值为0时,禁止所有接口(包括以后可能新增的)
发送ICMP重定向消息。ICMP重定向消息通常用于通知主机其发送数据包的目标路由可以直接到达
,无需通过当前网关。禁用此功能可以防止潜在的安全攻击,并且在某些网络架构中避免不必要的
重定向'
 
net.ipv4.conf.default.send_redirects = 0
'类似于上一个参数,但作用于未来新建的接口。它将默认设置新创建的网络接口不发送ICMP重定向消息'
 
net.ipv4.conf.ens33.send_redirects = 0
'此参数针对具体的网络接口“ens33”,确保该接口也不发送ICMP重定向消息'

3.配置ipvsadm规则

ipvsadm-save >/etc/sysconfig/ipvsadm  #生成配置信息文件
systemctl start ipvsadm.service              #启动服务

ipvsadm -A -t 192.168.83.200:80 -s rr
'这条命令创建了一个新的虚拟服务器(VIP),IP地址为192.168.83.200,监听端口为80并设置调度算
法为 rr(轮询),这意味着所有到这个VIP和端口的请求将按照轮询的方式被分发到后端的real Server'
 
ipvsadm -a -t 192.168.83.200:80 -r 192.168.83.60:80 -g
'这条命令向刚才创建的虚拟服务器添加了一个真实服务器(real Server),其IP地址为
 192.168.83.60,监听的端口也是 80。参数 -g 表示使用 DR 模式,即直接路由模式,意味着请求
通过Director节点时不改变目标IP地址,仅修改MAC地址指向实际处理请求的真实服务器'
 
ipvsadm -a -t 192.168.83.200:80 -r 192.168.83.100:80 -g
'类似地,这条命令添加了另一个真实服务器,IP地址为 192.168.83.100,同样以 DR 模式运行在端
口 80 上。这样,在此配置下,来自客户端对 VIP (192.168.83.200:80) 的请求将会被轮流分配给两
个真实服务器进行处理。'

(三)配置web服务

配置web服务器1

1.启用web服务

首先安装web服务:yum  install  httpd -y

启动服务并建立数据文件

2.添加虚拟IP

添加虚拟网卡,为回环口,与LVS调度服务器建立连接

3.调整内核参数

net.ipv4.conf.all.arp_ignore 和 net.ipv4.conf.default.arp_ignore
'设置为1表示节点将更严格地处理ARP请求。在某些情况下,系统不会响应非本地IP地址的ARP请求
这有助于防止IP地址冲突,并且可以用于LVS DR模式下的Director节点,以避免对外直接响应ARP请求'
 
net.ipv4.conf.all.arp_announce 和 net.ipv4.conf.default.arp_announce
'设置为2表示节点在发送ARP应答时总是使用其主接口上的最具体的地址(即,优先级最高的源IP地址)
这同样对LVS DR模式很有用,确保Director节点在回应ARP请求时只使用VIP,而不是实际的物理接
口地址。'

4.web服务器2配置与web服务器1相同使用客户端访问虚拟IP(VIP)

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

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

相关文章

吴恩达机器学习-可选实验室:逻辑回归(Logistic Regression))

在这个不评分的实验中,你会探索sigmoid函数(也称为逻辑函数)探索逻辑回归;哪个用到了sigmoid函数 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from plt_one_addpt_onclick import plt_one_addpt_onclick from lab_utils_common impor…

批量提取PDF指定区域内容到 Excel 以及根据PDF里面第一页的标题来批量重命名-附思路和代码实现

首先说明下,PDF需要是电子版本的,不能是图片或者无法选中的那种。 需求1:假如我有一批数量比较多的同样格式的PDF电子文档,需要把特定多个区域的数字或者文字提取出来 需求2:我有一批PDF文档,但是文件的名…

【CSP试题回顾】202006-1-线性分类器

CSP-202006-1-线性分类器 解题思路 线性分类问题,即根据给定的数据点和分类界限,判断是否存在一条线能够将属于不同类别的点完全分开。具体来说,数据点被分为两类,标记为A和B,我们要找出是否存在一个线性决策边界&…

神经网络实战前言

应用广泛 从人脸识别到网约车,在生活中无处不在 未来可期 无人驾驶技术便利出行医疗健康改善民生 产业革命 第四次工业革命——人工智能 机器学习概念 机器学习不等价与人工智能20世纪50年代,人工智能是说机器模仿人类行为的能力 符号人工智能 …

官方安装配置要求服务器最低2核4G

官方安装配置要求服务器至少2核、4G。 如果服务器低于这个要求,就没有必要安装,因为用户体验超级差。 对于服务器CPU来说,建议2到4核就完全足够了,太多就浪费了,但是内存越大越好,最好是4G以上。 如果服务器…

XSS攻击场景分析

XSS攻击场景分析 在目前这个时间节点还是属于一个排位比较高的漏洞,在OWASP TOP10 2021中隶属于注入型漏洞,高居TOP3的排位,可见这个漏洞的普遍性。跨站脚本攻击的学习中我们主要需要明白的是跨站的含义,以及XSS的核心。XSS主流分…

CentOS 7安装MySQL及常见问题与解决方案(含JDBC示例与错误处理)

引言 MySQL是一个流行的开源关系型数据库管理系统,广泛应用于各种业务场景。在CentOS 7上安装MySQL后,我们通常需要使用JDBC(Java Database Connectivity)连接MySQL进行后端操作。 目录 引言 CentOS 7安装MySQL 使用JDBC连接My…

LLM Drift(漂移), Prompt Drift Cascading(级联)

原文地址:LLM Drift, Prompt Drift & Cascading 提示链接可以手动或自动执行;手动需要通过 GUI 链构建工具手工制作链。自治代理在执行时利用可用的工具动态创建链。这两种方法都容易受到级联、LLM 和即时漂移的影响。 2024 年 2 月 23 日 在讨论大型…

Java对接(BSC)币安链 | BNB与BEP20的开发实践(二)BNB转账、BEP20转账、链上交易监控

上一节我们主要是环境搭建,主要是为了能够快速得去开发,有些地方只是简单的介绍,比如ETH 、web3j等等这些。 这一节我们来用代码来实现BNB转账、BEP20转账、链上交易监控 话不多说,我们直接用代码实现吧 1. BNB转账 /*** BNB转…

Python判断语句+循环语句

一、Python判断语句 1.1 布尔类型和比较运算符 # 定义变量存储布尔类型的数据 bool_1 True bool_2 False print( f"bool_1变量的内容是:{ bool_1 },类型为:{ type( bool_1 ) }" ) print( f"bool_2变量的内容是:{…

打卡--MySQL8.0 一(单机部署)

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除! MySQL 8.0 简介 MySQL 8.0与5.7的区别主要体现在:1、性能提升;2、新的默认…

ELFK 分布式日志收集系统

ELFK的组成: Elasticsearch: 它是一个分布式的搜索和分析引擎,它可以用来存储和索引大量的日志数据,并提供强大的搜索和分析功能。 (java语言开发,)logstash: 是一个用于日志收集,处理和传输的…

04hive数仓内外部表复杂数据类型与分区分桶

hive内部表和外部表 默认为内部表,外部表的关键字 :external内部表:对应的文件夹就在默认路径下 /user/hive/warehouse/库名.db/外部表:数据文件在哪里都行,无须移动数据 # students.txt 1,Lucy,girl,23 2,Tom,boy,2…

2023年终总结——跌跌撞撞不断修正

目录 一、回顾1.一月,鼓足信心的开始2.二月,焦躁不安3.三月,路还是要一步一步的走4.四月,平平淡淡的前行5.五月,轰轰烈烈的前行6.六月,看事情更底层透彻了7.七月,设计模式升华月8.八月&#xff…

加速 Webpack 构建:提升效率的秘诀

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

LCR 112. 矩阵中的最长递增路径【leetcode】/dfs+记忆化搜索

LCR 112. 矩阵中的最长递增路径 给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 不能 在 对角线 方向上移动或移动到 边界外(即不允…

【C语言基础】:深入理解指针(终篇)

文章目录 深入理解指针一、函数指针变量4.1 函数指针变量的创建4.2 函数指针变量的使用4.3 typedef关键字 二、函数指针数组三、转移表四、回调函数4.1 什么是回调函数4.2 qsort使用举例4.2.1 使用qsort函数排序整形数据4.2.2 使用qsort排序结构数据4.2.3 qsort函数的模拟实现 …

贝叶斯优化的门控循环神经网络BO-GRU(时序预测)的Matlab实现

贝叶斯优化的门控循环神经网络(BO-GRU)是一种结合了贝叶斯优化(Bayesian Optimization, BO)和门控循环单元(Gated Recurrent Unit, GRU)的模型,旨在进行时序预测。这种模型特别适用于时间序列数…

python文件组织:包(package)、模块(module)、文件(file)

包: 模块所在的包,创建一个包用于组织多个模块,包文件夹中必须创建一个名为’__init__.py’的文件,以将其识别为包,否则只能算作是一个普通的目录。在使用该包时,init自动执行。 包可以多层嵌套&#xff…

C++变参模板

从c11开始&#xff0c;模板可以接受一组数量可变的参数&#xff0c;这种技术称为变参模板。 变参模板 下面一个例子&#xff0c;通过变参模板打印一组数量和类型都不确定的参数。 #include <iostream> #include <string>void print(void) {std::cout<<&quo…