小阿轩yx-LVS+Keepalived群集

小阿轩yx-LVS+Keepalived群集

Keepalived 双机热备份基础知识

  • 起初是专门针对 LVS 设计的一款强大的辅助工具
  • 主要用来提供故障切换(Failover)和健康检査(HealthChecking)功能—判断LVS 负载调度器、节点服务器的可用性
  • 当 master 主机出现故障及时切换到backup 节点保证业务正常
  • 当master 故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点

Keepalived 概述及安装

官方网站 http://www.keepalived.org/

  • 非 LVS 群集环境中使用时,Keepalived 也可以作为热备软件使用
Keepalived 的热备方式
  • 采用 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。
  • VRRP是针对路由器的一种备份解决方案—由多台路由器组成一个热备组,通过共用的虚拟 IP地址对外提供服务;
  • 每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。
  • 若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务
  • 热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,别称:漂移 IP地址
  • 使用 Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如 ens33:0),而是由Keepalived 根据配置文件自动管理。

Keepalived 的安装与服务控制

安装 Keepalived

首先关闭防火墙、内核机制,还要再关闭网络软件包

[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

安装 Keepalived ipvsadm 所需软件包 

[root@localhost ~]# yum -y install keepalived ipvsadm

安装之后设置开机启动

[root@localhost ~]# systemctl enable keepalived

使用 Keepalived 实现双机热备

  • 基于 VRRP的热备方式,Keepalived可以用作服务器的故障切换
  • 每个热备组可以有多台服务器—最常用的就是双机热备
  • 双机热备方案中,故障切换主要针对虚拟 IP地址的漂移来实现,因此能够适用于各种应用服务器(不管是 Web、FTP、Mail,还是 SSH、DNS……)。
  • 主、备服务器中都需要安装Keepalived,使用 YUM 方式安装 httpd 提供 Web 服务。

主服务器的配置
  • Keepalived 服务的配置目录位于/etc/keepalived/。
  • keepalived.conf 是主配置文件。
  • 另外包括一个子目录 samples/
  • 在 Keepalived 的配置文件中,使用“global defs {…}”区段指定全局参数,使用vrrp_instance 实例名称{…}”区段指定 VRRP 热备参数,注释文字以“!”符号开头。

关闭防火墙

[root@localhost ~]# systemctl stop firewalld

进入keepalived文件 

[root@localhost ~]# cd /etc/keepalived/

复制keepalived文件 

[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak

  全局定义又包括两个子配置

[root@localhost keepalived]# vim keepalived.conf
//全局定义
global_defs {
     //本路由器(服务器)的名称
     router_id HA_TEST_R1
     notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_01
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

//定义 VRRP 热备实例
vrrp_instance VI_1 {
    //热备状态,MASTER 表示主服务器
    state MASTER
    //承载 VIP 地址的物理接口
    interface ens33
    //虚拟路由器的ID号,每个热备组保持一致
    virtual_router_id 1
    //优先级,数值越大优先级越高
    priority 100
    //通告间隔秒数(心跳频率)
    advert_int 1
    //认证信息,每个热备组保持一致
    authentication {
        //认证类型
        auth_type PASS
        //密码字串
        auth_pass 1111
    }
    //指定漂移地址(VIP),可以有多个
    virtual_ipaddress {
        192.168.10.172
    }
}

vrrp_strict #严格执行VRRP协议规范,此模式不支持节点单播,如果配置了此参数,vip可以漂移到这台服务器,但是ping vip不通,因此需要将此参数去掉

notification_email: 表示keepalived在发生诸如切换操作时需要发送email通知以及email发送给哪些邮件地址邮件地址可以多个每行一个

notification_email_from admin@example.com: 表示发送通知邮件时邮件源地址是谁

smtp_server 127.0.0.1: 表示发送email时使用的smtp服务器地址这里可以用本地的sendmail来实现

smtp_connect_timeout 30: 连接smtp连接超时时间

router_id node1: 机器标识,fa

启动 Keepalived 服务

[root@localhost keepalived]# systemctl start keepalived

用 ip 命令查看自动添加 VIP 地址

[root@localhost keepalived]# ip a
2: ns33: <BROADCAST,MULTICAST,UP, LOWER UP>mtu 1500 qdisc pfifo fast state UP qlen1000
    link/ether 00:0c:29:93 :80:fb brd ff:ff:ff:ff:ff:ff
    inet 172.16.16.173/24 brd 172.16.16.255 scope global ens33
        valid lft forever preferred lft forever
    //自动设置的 VIP 地址
    inet 172.16.16.172/32 scope global ens33
        valid lft forever preferred lft forever
    inet6 fe80::56be:f27:2b9b:823e/64 scope link
        valid lft forever preferred lft forever
备用服务器的配置 

同一个 Keepalived 热备组中,所有服务器 Keepalived 配置文件基本相同,包括虚拟路由器

  • ID 号
  • 认证信息
  • 漂移地址
  • 心跳频率

不同之处主要在于

  • 路由器名称
  • 热备状态
  • 优先级

路由器名称

  • 建议为每个参与热备的服务器指定不同的名称

热备状态

  • 至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为 BACKUP

优先级

  • 数值越大则取得 VIP 控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺 VIP 控制权时发生冲突

配置备用服务器(可以有多台)时,可以参考主服务器的keepalived.conf 配置文件内容

只需修改

  • 路由器名称
  • 热备状态
  • 优先级

关闭防火墙、内核机制,还要再关闭网络软件包

[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

进入 keepalived

[root@localhost ~]# cd /etc/keepalived/

 复制 keepalived 文件

[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak

修改 keepalived 文件

[root@localhost keepalived]# vi keepalived.conf
global_defs {
     //本路由器(服务器)的名称
     router_id HA_TEST_R2
}
     notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   #vrrp_strict
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_02
}

vrrp_instance VI_1 {
    //热备状态,BACKUP表示备用服务器
    state BACKUP
    interface ens33
    virtual_router_id 1
    //优先级,数值应低于主服务器
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.172
    }
}

启动 Keepalived 服务

[root@localhost ~]# systemctl start keepalived

使用 ip 命令查看地址

[root@localhost keepalived]# ip a
2: ns33: <BROADCAST,MULTICAST,UP, LOWER UP>mtu 1500 qdisc pfifo fast state UP qlen1000
    link/ether 00:0c:29:93 :80:fb brd ff:ff:ff:ff:ff:ff
    inet 172.16.16.174/24 brd 172.16.16.255 scope global ens33
        valid lft forever preferred lft forever
    inet6 fe80::56be:f27:2b9b:823e/64 scope link
        valid lft forever preferred lft forever

使用 curl 命令测试虚拟  ip 连通性

[root@localhost ~]# curl 192.168.10.172
测试双机热备功能

Keepalived 的日志消息保存在/var/log/messages 文件中,在测试主、备故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。以针对连通性和 Web 服务的测试为例

连通性测试

  • 在客户机中执行“ping-t 172.16.16.172”命令,能够正常、持续 ping通,根据以下操作继续观察测试结果。
  • 停止启用主服务器的 Keepalived 服务,发现 ping 测试只中断了1或2个包即恢复正常,说明己有其他服务器接替 VIP地址,并及时响应客户机请求。
  • 重新启用主服务器的 Keepalived 服务,发现 ping 测试再次中断1或2个包即恢复正常,说明主服务器已恢复正常,并夺回 VIP 地址的控制权。

web访问测试

  • 客户机中访问 http://172.16.16.172/,将看到由主服务器 172.16.16.173 提供的网页文档
  • 停止启用主服务器的Keepalived 服务,再次访问上述 Web 服务,将看到由备用服务器 172.16.16.174 提供的网页文档,说明 VIP 地址已切换至备用服务器
  • 重新启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到重新由主服务器 172.16.16.173 提供的网页文档,说明主服务器已重新夺取 VIP 地址

查看日志记录

  • 在执行主、备服务器故障切换的过程中,分别观察各自的/var/log/messages 日志文件,可以看到 MASTER、SLAVE 状态的迁移记录。
  • 主服务器中,Keepalived 服务状态先变为“stop”,移除 VIP 地址,恢复后重新变为 MASTER
  • 备用服务器中,状态先切换为 MASTER,待主服务器恢复后再交回控制权

LVS+Keepalived 高可用群集

  • Keepalived 的设计目标是构建高可用的 LVS 负载均衡群集
  • 可以调用 ipvsadm 工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。
  • 使用Keepalived 构建 LVS 群集更加简便易用

主要优势体现

  • 对LVS负载调度器实现热备切换,提高可用性;
  • 对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

  • 使用 Keepalived 构建 LVS 群集时,也需要用到 ipvsadm 管理工具
  • 但大部分工作会由 Keepalived 自动完成

配置主调度器

全局配置、热备配置

关闭防火墙、内核机制,还要关闭网络软件包

[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

安装 Keepalived ipvsadm 软件包

[root@localhost ~]# yum -y install keepalived ipvsadm

启动 Keepalived 服务

[root@localhost ~]# systemctl start keepalived

 进入 Keepalived 目录并复制 Keepalived 文件

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak

主服务器 Keepalived 配置

[root@localhost keepalived]# vim keepalived.conf
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   //注释掉
   #vrrp_strict
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   //主调度器的名称
   router_id LVS_01
}

vrrp_instance VI_1 {
    //主调度器的热备状态
    state MASTER
    interface ens33
    virtual_router_id 51
    //主调度器的优先级
    priority 100
    advert_int 1
    authentication {
        //主、从热备认证信息
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        //指定群集 VIP 地址
        192.168.10.172
    }
}

virtual_server 192.168.10.172 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
!    persistence_timeout 50
    protocol TCP

    real_server 192.168.10.103 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.10.104 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

persistence_timeout 50:这个参数的意义是保持客户端的请求在这个时间段内全部发到同一个真实服务器

主服务器内核参数配置

[root@localhost ~]# vim /etc/sysctl.conf
//在末尾添加
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

重载 

[root@localhost ~]# sysctl -p

重启 Keepalived 服务

[root@localhost keepalived]# systemctl restart keepalived
[root@localhost keepalived]# ip add show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ae:7f:64 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.101/24 brd 172.16.16.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.10.172/32 scope global ens33
       valid_lft forever preferred_lft forever

配置从调度器

与主调度器基本相同,也包括

  • 全局配置
  • 热备配置
  • 服务器池配置

只需调整下面参数

  • router_id
  • state
  • priority

关闭防火墙、内核机制,还要关闭 NetworkManager

[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

安装 Keepalived 服务

[root@localhost ~]# yum -y install keepalived ipvsadm

启动服务

[[root@localhost ~]# systemctl start keepalived

进入 Keepalived 目录

[root@localhost ~]# cd /etc/keepalived/

复制 Keepalived 文件 

[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak

修改 Keepalived 文件

[root@localhost keepalived]# vim keepalived.conf
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   #vrrp_strict
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   //从调度器名称
   router_id LVS_02
}

vrrp_instance VI_1 {
    //从调度器热备状态
    state BACKUP
    interface ens33
    virtual_router_id 51
    //从调度器优先级
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.172
    }
}

virtual_server 192.168.10.172 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
!    persistence_timeout 50
    protocol TCP

    real_server 192.168.10.101 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.10.102 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

从调度器内核参数的配置

[root@localhost ~]# vim /etc/sysctl.conf
//在末尾添加
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

重载 

[root@localhost ~]# sysctl -p

重启 Keepalived 服务

[root@localhost keepalived]# systemctl restart keepalived
服务器池配置

web01 服务器配置

关闭防火墙

[root@localhost ~]# systemctl stop firewalld

安装 httpd 服务

[root@localhost ~]# yum -y install httpd

进入网络目录

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

复制 lo 文件

[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0

修改 lo:0 文件

[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.10.172
NETMASK=255.255.255.255
ONBOOT=yes

添加配置文件 

[root@localhost network-scripts]# vim /etc/rc.local
/sbin/route add -host 192.168.10.172 dev lo:0

添加路由

[root@localhost network-scripts]# route add -host 192.168.10.172 dev lo:0

 内核参数设置 

[root@localhost ~]# 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

添加测试页面 

[root@localhost ~]# vim /var/www/html/index.html
test web01

重启网络服务

[root@localhost network-scripts]# systemctl restrt network

web02 服务配置

关闭防火墙

[root@localhost ~]# systemctl stop firewalld

安装 httpd 服务 

[root@localhost ~]# yum -y install httpd

进入 network 目录

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

复制 lo 文件

[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0

修改 lo:0 文件

[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.10.172
NETMASK=255.255.255.255
ONBOOT=yes

添加配置文件

[root@localhost network-scripts]# vim /etc/rc.local
/sbin/route add -host 192.168.10.172 dev lo:0

内核参数设置 

[root@localhost ~]# 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

添加测试页面 

[root@localhost ~]# vim /var/www/html/index.html
test web02

 添加路由

[root@localhost network-scripts]# route add -host 192.168.10.172 dev lo:0

重启服务 

[root@localhost network-scripts]# systemctl restrt network
测试LVS+Keepalived高可用性

客户端访问网站

[root@localhost ~]# curl 192.168.10.172

刷新页面并观察网页的变化

客户端使用脚本测试

[root@localhost ~]# for i in $(seq 10);do curl http://192.168.10.172;done

生产环境中可以使用NFS服务器保证网站代码的一致性,在测试环境中为了观察效果,web服务器池中的网站代码可以不一样,更加便于观察实验效果。

测试计算机不要使用master调度器,在master调度器上访问VIP时,调度器不会将访问的请求调度到web服务器,而是自己尝试解析;在web服务器上测试时只能访问到自己的网页,无法实现调度。所以客户端一定要使用独立的测试计算机,或者使用处于BACKUP状态的调度器。

小阿轩yx-LVS+Keepalived群集

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

溶解氧(DO)理论指南(1)

转载自梅特勒官网资料&#xff0c;仅用于学习交流&#xff0c;侵权则删&#xff01; 溶解氧理论指南 1 溶解氧(DO)原理1.1 溶解氧和分压1.2 氧气在水中的溶解度1.3 溶解氧对生物的重要性1.4 溶解氧对工业的重要性 1 溶解氧(DO)原理 氧是宇宙中第三大常见元素&#xff0c;也是…

10.09面试题目记录

艾融软件 - 线上面试题 排序算法的时间复杂度 O(n^2&#xff09;&#xff1a;冒泡&#xff0c;选择&#xff0c;插入 O(logn&#xff09;&#xff1a;折半插入排序 O(nlogn)&#xff1a;希尔&#xff0c;归并&#xff0c;快速&#xff0c;堆 O(nk)&#xff1a;桶&#xff0c;…

PY32F030高性能单片机,主频高达48M,最大64 KB 闪存,8 KB SRAM

PY32F030是普冉的一颗32位高性能MCU&#xff0c;采用32 位 ARM Cortex-M0 内核&#xff0c;高达16~64 Kbytes Flash 和 2~8 Kbytes SRAM 存储器&#xff0c;最高 48 MHz 工作频率。PY32F030 单片机的工作温度范围为 -40 ~ 105 C&#xff0c;工作电压范围为1.7 ~ 5.5 V&#xff…

gda动态调试-cnblog

忽的发现gda有动态调试功能 动态监听返回值 框柱指定方法&#xff0c;选择调试方法&#xff0c;gda会自动监听函数的返回值&#xff0c;例如 自定义frida脚本 gda会自动生成hook该函数的frida脚本

证券交易系统中服务器监控系统功能设计

1.背景介绍 此服务器监控系统的目的在于提高行情服务器的监管效率&#xff0c;因目前的的行情服务器&#xff0c;包括DM、DT、DS配置数量较多&#xff0c;巡回维护耗时较多&#xff0c;当行情服务器出现异常故障&#xff0c;或者因为网络问题造成数据断线等情况时&#xff0c;监…

卫星网络——Walker星座简单介绍

一、星座构型介绍 近年来&#xff0c;随着卫星应用领的不断拓展&#xff0c;许多任务已经无法单纯依靠单颗卫星来完成。与单个卫星相比&#xff0c;卫星星座的覆盖范围显著增加&#xff0c;合理的星座构型可以使其达到全球连续覆盖或全球多重连续覆盖&#xff0c;这样的特性使得…

VSCode远程服务器

一、安装VSCode Windows安装Visual Studio Code(VS Code)-CSDN博客 二、VSCode中安装Remote-SSH插件 1、在应用商店中搜索Remote - SSH并安装 2、安装后会出现下面标注的图标 三、开始SSH连接 1、点击加号&#xff0c;创建SSH连接 2、输入地址&#xff0c;格式是&#xff1a;…

第三十四篇-学习构建自己的Agent

agentica v0.1 版本升级&#xff1a; https://github.com/shibing624/agentica &#xff08;原项目名&#xff1a;actionflow&#xff09; agentica是一个Agent构建工具&#xff0c;功能&#xff1a; 简单代码快速编排Agent&#xff0c;支持 Reflection(反思&#xff09;、P…

Vivado FFT IP核使用

1. 今日摸鱼任务 学习Vivado FFT IP核的使用 Vivado_FFT IP核 使用详解_vivado fft ip核-CSDN博客 这篇写的很详细啦 简单做一点笔记进行记录 2. FFT IP核 xfft_0 ff (.aclk(aclk), // input wire aclk.aresetn(aresetn)…

JS+CSS+HTML项目-中国国家图书馆

页面做的不多&#xff0c;CSS效果请看哔哩哔哩

每天五分钟深度学习框架pytorch:tensor向量的统计函数的运算

本文重点 给定一个向量,我们如何才能获取到这个向量中重要的那部分呢?比如均值,最大值等等,我们可以使用pytorch中已经封装好的方法来完成这些任务。 常用的统计方法 L1范式 L1范式就是将向量中所有元素的绝对值相加求和,以上是对a、b、c三个向量求L1范式,都是8 L2范数…

NFT Insider #137:Polygon链上NFT销售额破7800万美元,TheSandbox通过创作者挑战推动社区参与

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members &#xff08;https://twitter.com/WHALEMembers&#xff09;、BeepCrypto &#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜…

UML2.0-系统架构师(二十四)

1、&#xff08;重点&#xff09;系统&#xff08;&#xff09;在规定时间内和规定条件下能有效实现规定功能的能力。它不仅取决于规定的使用条件等因素&#xff0c;还与设计技术有关。 A可靠性 B可用性 C可测试性 D可理解性 解析&#xff1a; 可靠性&#xff1a;规定时间…

Linux 内核 GPIO 用户空间接口

文章目录 Linux 内核 GPIO 接口旧版本方式&#xff1a;sysfs 接口新版本方式&#xff1a;chardev 接口 gpiod 库及其命令行gpiod 库的命令行gpiod 库函数的应用 GPIO&#xff08;General Purpose Input/Output&#xff0c;通用输入/输出接口&#xff09;&#xff0c;是微控制器…

Linux 端口

什么是虚拟端口 计算机程序之间的通讯&#xff0c;通过IP只能锁定计算机&#xff0c;但是无法锁定具体的程序。通过端口可以锁定计算机上具体的程序&#xff0c;确保程序之间进行沟通。 IP地址相当于小区地址&#xff0c;在小区内可以有许多用户&#xff08;程序&#xff09;&…

AI绘画Stable Diffusion 双重曝光-神秘意境和难以言喻的视觉体验,SD提示词轻松搞定

大家好&#xff0c;我是画画的小强 今天给大家介绍AIGC绘图提示语使用常见摄影手法&#xff1a;双重曝光。双重曝光摄影效果是一种摄影爱好所热衷的常见摄影手法之一。通过双重曝光摄影手法&#xff0c;能够为图同摄影图像引入神秘的意境感和一种难以言喻的视觉体验&#xff0…

android应用的持续构建CI(二)-- jenkins集成

一、背景 接着上一篇文章&#xff0c;本文我们将使用jenkins把所有的流程串起来。 略去了对android应用的加固流程&#xff0c;重点是jenkins的job该如何配置。 二、配置jenkins job 0、新建job 选择一个自由风格的软件项目 1、参数赋值 你可以增加许多参数&#xff0c;这…

Windows环境使用SpringBoot整合Minio平替OSS

目录 配置Minio环境 一、下载minio.exe mc.exe 二、设置用户名和密码 用管理员模式打开cmd 三、启动Minio服务器 四、访问WebUI给的地址 SpringBoot整合Minio 一、配置依赖&#xff0c;application.yml 二、代码部分 FileVO MinioConfig MinioUploadService MinioController 三…

c++习题05-斐波那契数列

目录 一&#xff0c;问题 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;问题 二&#xff0c;思路 根据题目&#xff0c;可以自己列出斐波那契数列&#xff08;前四个&#xff09;如下&#xff1a; 通过列出来的值&#xff0c;可以发现&#xff0c;前两个都是1&…

如何优化圆柱晶振32.768KHz的外壳接地?

圆柱晶振32.768KHz在电子设备中扮演着重要的角色&#xff0c;其精确的时钟信号对于许多应用至关重要。为了确保晶振的稳定性和准确性&#xff0c;外壳接地是一个关键步骤。 一、外壳接地的目的 外壳接地的主要目的是为了防止信号干扰。当晶振的外壳接地后&#xff0c;它相当于…