一文带你快速了解——keepalived高可用集群

news2025/1/3 3:48:06

一、高可用集群

1.1 集群类型

  • LB:Load Balance 负载均衡
  • LVS/HAProxy/nginx(http/upstream, stream/upstream)
  • HA:High Availability 高可用集群 数据库、Redis
  • SPoF: Single Point of Failure,解决单点故障
  • HPC:High Performance Computing 高性能集群

1.2 系统可用性

SLA:Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能 等方面所达成的双方共同认可的协议或契约)

A = MTBF / (MTBF+MTTR) 

如:

99.95%:(60*24*30)*(1-0.9995)=21.6分钟 #一般按一个月停机时间统计

指标 :99.9%, 99.99%, 99.999%,99.9999%

1.3 系统故障

硬件故障:设计缺陷、wear out(损耗)、非人为不可抗拒因素

软件故障:设计缺陷 bug

1.4 实现高可用

提升系统高用性的解决方案:降低MTTR- Mean Time To Repair(平均故障时间)

解决方案:建立冗余机制

active/passive 主/备

active/active 双主

active --> HEARTBEAT --> passive

active <--> HEARTBEAT <--> activ

1.5.VRRP:Virtual Router Redundancy Protocol

虚拟路由冗余协议,解决静态网关单点风险

物理层:路由器、三层交换机

软件层:keepalive

1.5.1 VRRP 相关术语

虚拟路由器:Virtual Router

虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器

VIP:Virtual IP

VMAC:Virutal MAC (00-00-5e-00-01-VRID)

物理路由器:

master:主设备

backup:备用设备

priority:优先级

1.5.2 VRRP 相关技术

通告:心跳,优先级等;周期性

工作方式:抢占式,非抢占式

安全认证: 无认证 简单字符认证:预共享密钥 MD5

工作模式:

主/备:单虚拟路由器

主/主:主/备(虚拟路由器1),备/主(虚拟路由器2) 

二、Keepalived的部署

2.1、keepalived的简介

功能:

  • 基于vrrp协议完成地址流动
  • 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
  • 为ipvs集群的各RS做健康状态检测
  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

2.2、keepalived的架构

官方文档: https://keepalived.org/doc/

http://keepalived.org/documentation.html

用户空间核心组件:

  • vrrp stack:VIP消息通告
  • checkers:监测real server
  • system call:实现 vrrp 协议状态转换时调用脚本的功能
  • SMTP:邮件组件
  • IPVS wrapper:生成IPVS规则
  • Netlink Reflector:网络接口
  • WatchDog:监控进程

控制组件:提供keepalived.conf 的解析器,完成Keepalived配置

IO复用器:针对网络目的而优化的自己的线程抽象 

内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限 

2.3、环境准备

  •  各节点时间必须同步:ntp, chrony
  • 关闭防火墙及SELinux
  • 各节点之间可通过主机名互相通信:非必须
  • 建议使用/etc/hosts文件实现:非必须
  • 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须

需要两个realserver和两个Keepalived服务器

realserver配置如下:

realserver1:

设置ip,如果你有可以不改动
vmset.sh ens33 172.25.254.110 realserver1.timingzpy.org

下载apache

yum install httpd -y

写入文件
echo 172.25.254.110 > /var/www/html/index.html

启动httpd
systemctl enable --now httpd

realserver2:

设置ip,如果你有可以不改动
vmset.sh ens33 172.25.254.120 realserver1.timingzpy.org

下载apache

yum install httpd -y

写入文件
echo 172.25.254.120 > /var/www/html/index.html

启动httpd
systemctl enable --now httpd

2.4 Keepalived 相关文件

可通过这条命令查看

[root@ka1 ~]# rpm -ql keepalived 

  • 软件包名:keepalived
  • 主程序文件:/usr/sbin/keepalived
  • 主配置文件:/etc/keepalived/keepalived.conf
  • 配置文件示例:/usr/share/doc/keepalived/
  • Unit File:/lib/systemd/system/keepalived.service
  • Unit File的环境配置文件:/etc/sysconfig/keepalived

2.5、keepalived的实验环境

2.5.1 配置文件组成部分

配置文件:/etc/keepalived/keepalived.conf

配置文件组成

GLOBAL CONFIGURATION

Global definitions: 定义邮件配置,route_id,vrrp配置,多播地址等

VRRP CONFIGURATION VRRP

instance(s): 定义每个vrrp虚拟路由器

LVS CONFIGURATION

Virtual server group(s)

Virtual server(s): LVS集群的VS和RS

2.5.2、Keepalived配置

KA1:

配置IP
vmset.sh ens33 172.25.254.10 ka1.timingzpy.org

安装keepalived
yum install keepalived -y
 

更改vim编写的tap缩进

vim ~/.vimrc
set ts=4 ai sw=4

更改配置文件,我的网卡名是ens33

vim /etc/keepalived/keepalived.conf

#全局配置
global_defs {
   notification_email {
   2931653102@qq.com
   }
   notification_email_from keepalived@timingzpy.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1.timingzpy.org
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0 
   vrrp_gna_interval 0
   vrrp_mcast_group4 224.0.0.18
}

#虚拟路由器配置
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev ens33 label ens33:1
    }
}

systemctl enable --now keepalived.service

为避免麻烦可以直接ka1的文件发送给ka2
scp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf

测试
 tcpdump -i ens33 -nn host 224.0.0.18

KA2:

配置IP
vmset.sh ens33 172.25.254.20 ka2.timingzpy.org

安装keepalived
yum install keepalived -y
 

更改vim编写的tap缩进

vim ~/.vimrc
set ts=4 ai sw=4

更改配置文件,我的网卡名是ens33

vim /etc/keepalived/keepalived.conf

#全局配置
global_defs {
   notification_email {
   2931653102@qq.com
   }
   notification_email_from keepalived@timingzpy.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1.timingzpy.org
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   #
   vrrp_gna_interval 0
   vrrp_mcast_group4 224.0.0.18
}

#虚拟路由器配置
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 100
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev ens33 label ens33:1
    }
}

systemctl enable --now keepalived.service
测试
 tcpdump -i ens33 -nn host 224.0.0.18

2.5.3、 使vip能够通信

如果要使vip可以通信

1、在全局中添加vrrp_iptables

2、在全局中将vrrp_strict注释掉

方法1、                                                                        方法2、 

2.5.4、独立Keepalived日志功能

1、编辑日志级别

vim /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS"-D -s 6"

 2、 指定采集方法

vim /etc/rsyslog.conf

local6.* /var/log/keepalived.log

systemctl resatrt rsyslog.service

systemctl restart keepalived.service

如果重启不了,说明文件没有成功生成,我们可以自己去touch一个Keepalived.log文件

3、查看日志是否生成

ll /var/log/keepalived.log

2.5.5、 实现独立子配置文件 

1、vim /etc/keepalived.keepalived

将虚拟路由器的配置注释掉

后添加

include "/etc/keepalived/conf.d/*.conf"

如果现在重启,就会报找不到这个文件

我们需要创建这个文件

medir /etc/keepalived/conf.d/

并将注释掉的虚拟路由器的配置粘贴过来

vim /etc/keepalived/conf.d/172.25.254.100.conf

后再重启

systemctl restart keepalived.service

查看IP

ifconfig

三、keepalived应用示例

3.1、抢占模式和非抢占模式 

3.1.1、非抢占模式 nopreempt

 

3.1.2、抢占延迟模式 preempt_delay

 

 3.2、VIP单播配置

默认keepalived主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量 

!!!注意:启用 vrrp_strict 时,不能启用单播 

KA1,KA2都要禁用掉 

 后重启

抓包查看单播效果

ka1:

tcpdump -i ens33 -nn src host 172.25.254.10 and dst 172.25.254.20

ka2:

tcpdump -i ens33 -nn src host 172.25.254.20 and dst 172.25.254.10

Vip在哪个KA服务器上,哪个KA服务器才能发送单播 

 

  3.3、Keepalived 通知脚本配置

 3.3.1、邮件通知配置

所有 keepalived节点都要配置:

yum install mailx -y

vim /etc/mail.rc

        set from=2931653102@qq.com
        set smtp=smtp.qq.com
        set smtp-auth-user=2931653102@qq.com
        set smtp-auth-password=cpcvhjhuqujrdhff
        set smtp-auth=login
        set ssl-verify=ignore

发送测试邮件

echo test message |mail -s test XXXX@qq.com(自己的邮箱地址)

 3.3.2、实现 Keepalived 状态切换的通知脚本

 在所有 keepalived节点配置如下

vim /etc//keepalived/mail.sh

 #!/bin/bash
mail_dst="XXXX@qq.com"
send_message()
{
    mail_sub="$HOSTNAME to be $1 vip move"
    mail_msg="`date +%F\ %T`:vrrp move $HOSTNAME  chage $1"
    echo %mail_msg | msil -s "$mail_sub" $mail_dst
}
case $1 in 
    master)
    send_message master
    ;;
    backup)
    send_message backup
    ;;
    fault)
    send_message fault
    ;;
    *)
    ;;
esac

给执行权限

chmod +x /etc/keepalived/mail.sh

vim /etc/keepalived/keepalived.conf 

添加

notify_master "/etc/keepalived/mail.sh master"

notify_backup "/etc/keepalived/mail.sh backup"

notify_fault "/etc/keepalived/mail.sh fault"

测试:
可以关掉现vip所在的服务器,来测试

systemctl stop keepalived.service

关掉后,它会给你的邮箱发送一条消息

3.4、实现 master/master 的 Keepalived 双主架构 

 ka1:

vim /etc/keepalived/keepalived.conf

添加

vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 200
    priority 800
    #preempt_delay 5s
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.200/24 dev ens33 label ens33:2
    }
    unicast_src_ip 172.25.254.10
    unicast_peer {
        172.25.254.20
    }

ka2:

 vim /etc/keepalived/keepalived.conf

添加

vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 200
    priority 100
    #preempt_delay 5s
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.200/24 dev ens33 label ens33:2
    }
    unicast_src_ip 172.25.254.20
    unicast_peer {
        172.25.254.10
    }
}

3.5、实现IPVS的高可用性

3.5.1、虚拟服务器的定义格式

virtual_server IP port #定义虚拟主机IP地址及其端口

virtual_server fwmark int #ipvs的防火墙打标,实现基于防火墙的负载均衡集群 virtual_server group string #使用虚拟服务器组

 3.5.2、虚拟服务器设置

3.5.2.1、 虚拟服务器配置

 virtual_server IP port {         #VIP和PORT

                delay_loop         #检查后端服务器的时间间隔

                lb_algo rr|wrr|lc|wlc|lblc|sh|dh         #定义调度方法

                lb_kind NAT|DR|TUN         #集群的类型,注意要大写

                persistence_timeout         #持久连接时长

                protocol TCP|UDP|SCTP         #指定服务协议,一般为TCP

                sorry_server         #所有RS故障时,备用服务器地址

                real_server {         #RS的IP和PORT

                        weight         #RS权重

                        notify_up         #RS上线通知脚本

                        notify_down        #RS下线通知脚本                                                  HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK { ... }                                #定义当前主机健康状 态检测方法

                }

}

#注意:括号必须分行写,两个括号写在同一行,如: }} 会出错

3.5.2.2、 应用层检测:HTTP_GET|SSL_GE

HTTP_GET|SSL_GET {

        url {

                    path         #定义要监控的URL

                    status_code         #判断上述检测机制为健康状态的响应码,一般为 200

                }

        connect_timeout         #客户端请求的超时时长, 相当于haproxy的timeout server         nb_get_retry         #重试次数

        delay_before_retry         #重试之前的延迟时长

        connect_ip         #向当前RS哪个IP地址发起健康状态检测请求

        connect_port         #向当前RS的哪个PORT发起健康状态检测请求

        bindto         #向当前RS发出健康状态检测请求时使用的源地址

        bind_port         #向当前RS发出健康状态检测请求时使用的源端口  

}

3.5.2.3、传输层检测:TCP_CHECK 

 TCP_CHECK {

                connect_ip         #向当前RS的哪个IP地址发起健康状态检测请求

                connect_port         #向当前RS的哪个PORT发起健康状态检测请求

                bindto         #发出健康状态检测请求时使用的源地址

                bind_port         #发出健康状态检测请求时使用的源端口

                connect_timeout         #客户端请求的超时时长

                                                    #等于haproxy的timeout server

}

3.5.3、实例

3.5.3.1、实现单主的 LVS-DR 模式

准备web服务器并使用脚本绑定VIP至web服务器lo网卡 

rs1/2:(都做一下操作)

[root@realserver1 ~]# ip addr add 172.25.254.100/32 dev lo
[root@realserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@realserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@realserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@realserver1 ~]# systemctl restart httpd

配置keepalived 

ka1/2:

vim /etc/keepalived/keepalived.conf

virtual_server 172.25.254.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP
    real_server 172.25.254.110 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.254.120 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

测试

ka1/2:

下载ipvsadm来查看当前的负载均衡配置

 yum install ipvsadm -y

3.6、实现其它应用的高可用性 VRRP Script

 keepalived利用 VRRP Script 技术,可以调用外部的辅助脚本进行资源监控,并根据监控的结果实现优先 动态调整,从而实现其它应用的高可用性功能 参考配置文件:/usr/share/doc/keepalived/keepalived.conf.vrrp.localcheck

3.6.1、VRRP Script 配置 

1、定义脚本 

  • vrrp_script:自定义资源监控脚本,vrrp实例根据脚本返回值,公共定义,可被多个实例调用,定 义在vrrp实例之外的独立配置块,一般放在global_defs设置块之后。
  • 通常此脚本用于监控指定应用的状态。
  • 一旦发现应用的状态异常,则触发对MASTER节点的权重减至 低于SLAVE节点,从而实现 VIP 切换到 SLAVE 节点 。

vrrp_script name {         #定义一个检测脚本,在global_defs 之外配置

        script         #shell命令或脚本路径 interval #间隔时间,单位为秒,默认1秒

        timeout         #超时时间

        weight             #默认为0,如果设置此值为负数,

                                #当上面脚本返回值为非0时

                                #会将此值与本节点权重相加可以降低本节点权重,即表示fall.

                                #如果是正数,当脚本返回值为0,会将此值与本节点权重相加可以提高本节点权重

                                #即表示 rise.通常使用负值

        fall         #执行脚本连续几次都失败,则转换为失败,建议设为2以上

        rise         #执行脚本连续几次都成功,把服务器从失败标记为成功

        user USERNAME [GROUPNAME]         #执行监测脚本的用户或组

        init_fail         #设置默认标记为失败状态,监测成功之后再转换为成功状态

}

2、调用脚本

  • track_script:调用vrrp_script定义的脚本去监控资源,定义在VRRP实例之内,调用事先定义的 vrrp_script 

vrrp_instance VI_1 {
    …………
    track_script{
        name
    }
}

3.6.2、利用脚本实现主从角色切换 

 [root@ka1 ~]# vim /etc/keepalived/test.sh
[root@ka1 ~]# sh /etc/keepalived/test.sh
[root@ka1 ~]# echo $?
0
[root@ka1 ~]# touch /mnt/zpy
[root@ka1 ~]# sh /etc/keepalived/test.sh
[root@ka1 ~]# echo $?
1
[root@ka1 ~]# chmod +x /etc/keepalived/test.sh
[root@ka1 ~]# cat /etc/keepalived/test.sh
#!/bin/bash
[ ! -f /mnt/zpy ]

vrrp_script check_zpy {
    script "/etc/keepalived/test.sh"
    interval 1
    weight -30
    fall 2
    rise 2
    timeout 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 100
    priority 80
    #preempt_delay 5s
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev ens33 label ens33:1
    }
    unicast_src_ip 172.25.254.20
    unicast_peer {
        172.25.254.10
    }
    track_script{
        check_zpy
    }
}

测试:

它会检测有没有这个文件,没有这个文件,就没问题,vip就会一直在ka1上

一旦检测到这个文件,vip就切换到ka2上。

 3.6.3、实现HAProxy高可用

注:如果做了前文中的LVS-DR模式的话,需要将那些配置删除掉,如虚拟服务器的配置,realserver的内核参数 arp_ignore & arp_announce全部设为0,删除临时的环回路由(ip a d 172.25.254.100/32 dev lo)。或者用之前双主的另一个网卡来做。

ka1/2:

yum install haproxy -y
vim /etc/sysctl.conf
在两个ka1和ka2两个节点启用内核参数
net.ipv4.ip_nonlocal_bind = 1
sysctl -p
vim /ect/haproxy/haproxy.cfg

添加

listen webcluster
    bind 172.25.254.100:80
    mode http
    balance roundrobin
    server web1 172.25.254.110:80 check inter 3 fall 2 rise 5
    server web2 172.25.254.120:80 check inter 3 fall 2 rise 5

通过这个查看一下端口

netstat -antlupe | grep haproxy

这时就可以重启Keepalived和haproxy,测试一下,是否连上了

 

这样就连接上了

编写检测脚本

 vim /etc/keepalived/test.sh

#!/bin/bash

killall -0 haproxy

chmod +x /etc/keepalived/test.sh

ka1/2:

vrrp_script check_haproxy {
    script "/etc/keepalived/test.sh"
    interval 1
    weight -30
    fall 2
    rise 2
    timeout 2
}

虚拟路由器中添加
track_script {
        check_haproxy
    }

这样就算配置好了

测试:
[root@ka1 ~]# systemctl stop haproxy.service
[root@ka1 ~]# systemctl start haproxy.service

ka1的haproxy服务down后,就会使用ka2执行。 

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

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

相关文章

Java_finalize

目录 finalize方法 案例演示 finalize方法 当垃圾回收器确定不存在对该对象的更多引用时&#xff0c;由对象的垃圾回收器调用此方法。 当对象被回收时&#xff0c;会自动调用&#xff0c;子类可以重写该方法&#xff0c;做一些释放资源的操作。 案例演示 可以使用快捷键进行…

一台电脑同时开多个微信

这几天闲没事&#xff0c; 就在网上查了一些相关的一台电脑同时开多个微信。经测试&#xff0c;确实可以做的&#xff0c;而且一点了不麻烦。经本人测试&#xff0c;把信息补全一些... 同时登录了两个微信&#xff0c;为什么只能两个微信&#xff0c;因为我只有两个微信。废话少…

leetcode412. Fizz Buzz,简单遍历

leetcode412. Fizz Buzz 给你一个整数 n &#xff0c;找出从 1 到 n 各个整数的 Fizz Buzz 表示&#xff0c;并用字符串数组 answer&#xff08;下标从 1 开始&#xff09;返回结果&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。 answ…

0到1学习Google广告(2):掌握展示位置及排名规则丨出海笔记

大家好, 我是专注谷歌广告和谷歌SEO的谷哥哥哥&#xff0c;感谢出海笔记Alan邀请。今天我们来聊聊广告界的大拿——谷歌广告。在这个数字营销的黄金时代&#xff0c;无论是B2B、B2C还是品牌类客户&#xff0c;谷歌广告都是一个不容忽视的战场。那么&#xff0c;如何在这个战场上…

得物Flink内核探索实践

一、前言 随着大数据技术的飞速发展&#xff0c;实时处理能力变得越来越重要。在众多实时处理框架中&#xff0c;Apache Flink以其强大的流处理能力和丰富的功能集&#xff0c;受到了广泛关注和应用。在实时业务日益增长的趋势下&#xff0c;这促使我们深入探索Flink的内核&am…

程序员的第一法则:DRY —— 永远不要重复自己

1. 前言 在编程的世界里&#xff0c;有一条被广泛接受且极其重要的法则&#xff0c;它简明扼要&#xff0c;却道出了高效编程的核心&#xff1a;DRY&#xff0c;即 Don’t Repeat Yourself&#xff08;不要重复自己&#xff09;。这不仅仅是一句口号&#xff0c;而是每个程序员…

解锁微信公众号超强功能,让你的品牌火遍朋友圈!

微信公众号是微信官方提供的一种自媒体平台&#xff0c;允许个人和企业在微信上创建自己的公众号&#xff0c;并通过公众号发布文章、图片、视频等多种形式的内容。 微信公众号主要分为订阅号、服务号等类型。企业和个人可以使用公众号吸引关注者&#xff0c;与关注者进行互动…

计算机网络 DNS HTTP HTTPS,缓存

文章目录 输入URL之后的全过程URL URI DNS (Domain Name System)为什么分布式域名的层级关系解析过程递归查询和迭代查询 HTTP特性版本演变0.91.01.1问题优化 2兼容改变推送实现与HTTP1对比并发实现缺陷 3特点QUIC协议 缓存强制缓存协商缓存基于Last-Modified和If-Modified-Sin…

海外问卷调查的目的与动态IP的需求

海外问卷调查是一种重要的市场调研方式&#xff0c;被广泛应用于企业和组织对特定市场、产品或服务的深入了解。这种调研方法通过向目标市场的消费者发放问卷&#xff0c;收集他们对某一产品、服务或市场的看法和意见&#xff0c;从而帮助企业或组织更好地把握市场需求&#xf…

Stable Diffusion 必学技能——从零开始训练专属 Lora 模型!

接触AI绘画的小伙伴&#xff0c;一定听过Lora。 Lora模型全称是&#xff1a;Low-Rank Adaptation of Large Language Models&#xff0c;可以理解为Stable-Diffusion中的一个插件&#xff0c;在生成图片时&#xff0c;Lora模型会与大模型结合使用&#xff0c;从而实现对输出图…

AVAX雪崩协议/网络 详解及价格预测

AVAX是否能继续增长&#xff0c;关键看它能否在与以太坊等其他区块链的竞争中占据更大的份额。 以下内容涉及技术原理&#xff0c;经济模型及锁仓价值&#xff0c;与其他公链的对比。 来整体多维度的分析雪崩网络AVAX的未来及价格预测。 核心团队 Avalanche 的创建团队是 Ava …

【图形学】TA之路-矩阵

在 Unity 中&#xff0c;矩阵广泛用于处理各种图形变换&#xff0c;例如平移、旋转、缩放等。矩阵的使用不仅限于三维空间&#xff0c;还可以应用于二维空间的操作。了解矩阵及其运算对于游戏开发和计算机图形学非常重要。Unity 中使用的是行向量不是列向量&#xff0c;这个要注…

中职物联网实训室

一、中职物联网实训室建设背景 在当今科技日新月异的浪潮中&#xff0c;物联网技术以其迅猛的发展势头&#xff0c;成为了撬动数字化转型的关键杠杆&#xff0c;深刻地重塑着经济社会的面貌。面对这一变革&#xff0c;社会对精通物联网技术的应用型人才需求激增。鉴于此&#x…

高等数学:每日一题1/判断极值点和驻点数目

函数 ( ) A. 1个驻点&#xff0c;1一个极值点 B. 1个驻点&#xff0c;2一个极值点 C. 2个驻点&#xff0c;1一个极值点 D. 2个驻点&#xff0c;2一个极值点 知识点&#xff1a; 1.驻点与极值点的定义 2.极值点的充分条件与必要条件 本题的解题思路是对上述函数进行分段&#…

公网kafka消费者账号密码spring项目对接

公网kafka消费者带有账号密码方式的spring项目对接 最近接到一个对接的活&#xff0c;对方公司给出的是公网kafka模式&#xff0c;就是不断给你配置的消费者推送消息&#xff0c;并且是带有指定的账号密码方式。下面就给大家具体说一说我是怎么配置的和我配置过程中遇到的问题。…

【git】将本地文件上传到github

安装git 选择一个文件夹作为git仓库&#xff0c;cd到文件夹输入 git init文件夹出现.git文件夹&#xff0c;该文件夹默认为隐藏文件夹&#xff0c;设置为不隐藏 在cmd中输入 ssh-keygen -t rsa -C "xxxxxx.com"该邮箱为github邮箱&#xff0c;然后一路enter出现以…

并查集-应用方向以及衍生汇总+代码实现(c++)-学习一个数据结构就会做三类大题!

并查集的核心功能&#xff0c;合并集合&#xff0c;查找元素&#xff0c;这两个最基本的功能相关题目本文不列举了&#xff0c;主要是一些和图相关的&#xff1a; 并查集的核心母题 一、连通性检测&#xff1a; 问题&#xff1a;判断在一个图中&#xff0c;任意两点是否连通。…

《Python爬虫逆向实战》绕过debugger的方法汇总

禁用断点 打开控制台&#xff0c;点击右边的禁用断点按钮。 点击之后再刷新下&#xff0c;就会发现debugger失效了。 注&#xff1a;这种方法有个 弊端&#xff0c;就是我们在代码中下的断点也都将失效。 Add script to ignore list 在代码文件中任意位置右键&#xff0c;然…

SpringBoot读取resources下文件,不区分window和Linux系统

起因 每次发布读取项目下的文件总是要区分系统环境&#xff0c;烦人。 解决 log.info("读取excel开始");//获取文件路径ClassLoader classLoader getClass().getClassLoader();//获取文件流InputStream stream classLoader.getResourceAsStream("1.xlsx&qu…

PHP西陆多城市多门店多端健身系统小程序源码

&#x1f3cb;️‍♀️全国畅练无阻&#xff01;探索“多城市多门店多端健身系统”的无限可能&#x1f3c3;‍♂️ &#x1f30d; 开篇&#xff1a;跨越地域的健身自由 你是否曾因工作调动、旅行或是居住地变化而烦恼健身计划的中断&#xff1f;别担心&#xff0c;“多城市多…