目录

#1.1Keepalived双机热备基础知识

  1.1.1Keepalived概述及安装

  1.1.2Keepalived的热备方式

  1.1.3Keepalived的安装与服务控制

#2.1使用Keeplived实现双机热备

  2.1.1主服务器的配置

  2.1.2备用服务器的配置

  2.1.3测试双机热备功能

#3.1使用Keeplived实现双机热备的实验案例

  3.1.1基础环境配置

  3.1.2配置主调度器

  3.1.3配置从调度器

  3.1.4配置Web节点服务器

  3.1.5测试LVS+Keepalived高可用群集


1.1Keepalived双机热备基础知识

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

1.1.1Keepalived概述及安装

    Keepalived 的官方网站位于 Keepalived for Linux,本章将以 YUM 方式讲解 Keepalived 的安装、配置和使用过程。在非 LVS 群集环境中使用时,Keepalived 也可以作为热备软件使用。

1.1.2Keepalived的热备方式

   Keepalived 采用 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现 Linux 服务器的多机热备功能。VRRP 是针对路由器的一种备份解决方案 —— 由多台路由器组成一个热备组,通过共用的虚拟 IP 地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线 的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟 IP 地址,以继续提供服务,如图 3.1 所示。

    热备组内的每台路由器都可能成为主路由器,虚拟路由器的 IP 地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移 IP 地址。使用 Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如 ens33 :0),而是由 Keepalived 根据配置文件自动管理。

 

 

1.1.3Keepalived的安装与服务控制

(1)安装Keepalived

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

(2)控制Keepalived服务

[root@localhost ~]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

2.1使用Keepalived实现双机热备

     基于 VRRP 的热备方式,Keepalived 可以用作服务器的故障切换,每个热备组可以有 多台服务器 —— 当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟 IP 地址的漂移来实现,因此能够适用于各种应用服务器(不管是 Web、FTP、Mail,还是 SSH、DNS……)。
     本小节将通过一个简单的案例来说明 Keepalived 双机热备的配置方法。其中,主、备服务器的 IP 地址分别为 192.168.10.101 和 192.168.10.102,基于漂移地址 192.168.10.100 提供 Web 服务,如图 3.2 所示。

   主,备服务器中都安装Keepalived,使用DNF方式安装httpd提供Web服务。

2.1.1主服务器的配置

[root@localhost ~]# systemctl stop firewalld // 关闭防火墙
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R1 // 本路由器 (服务器) 的名称
}
vrrp_instance VI_1 { // 定义 VRRP 热备实例
state MASTER // 热备状态,MASTER 表示主服务器
interface ens33 // 承载 VIP 地址的物理接口
virtual_router_id 1 // 虚拟路由器的 ID 号,每个热备组保持一致
priority 100 // 优先级,数值越大优先级越高
advert_int 1 // 通告间隔秒数 (心跳频率)
authentication { // 认证信息,每个热备组保持一致
auth_type PASS // 认证类型
auth_pass 123456 // 密码字串
}
virtual_ipaddress { // 指定漂移地址 (VIP), 可以有多个
192.168.10.100
}
}
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:93:80:fb 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.100/32 scope global ens33 // 自动设置的 VIP 地址
valid_lft forever preferred_lft forever
inet6 fe80::56be:f27:2b9b:823e/64 scope link
valid_lft forever preferred_lft forever

2.1.2备用服务器的配置

[root@localhost ~]# systemctl stop firewalld // 关闭防火墙
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R2 // 本路由器 (服务器) 的名称
}
vrrp_instance VI_1 {
state BACKUP // 热备状态,BACKUP 表示备用服务器
priority 99 // 优先级,数值应低于主服务器
…… // 省略部分内容
}
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:d1:f0:b5 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.102/24 brd 172.16.16.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::1f08:ab66:736f:72eb/64 scope link
valid_lft forever preferred_lft forever

2.1.3测试双机热备功能

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

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

(2)Web 访问测试
     在 keepalived 运行的主机上启动 nginx 服务并写入不通的测试页面内容
Keepalived01

[root@localhost ~]# systemctl start nginx
[root@localhost ~]# echo “web01” >/usr/share/nginx/html/index.html

Keepalived02

[root@localhost ~]# systemctl start nginx
[root@localhost ~]# echo “web02” >/usr/share/nginx/html/index.html

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

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

[root@localhost ~]# less /var/log/messages
…… // 省略部分信息
Sep 11 13:32:24 localhost Keepalived[18259]: Stopping Keepalived v1.2.13 (11/05,201
6)
Sep 11 13:32:24 localhost systemd: Stopping LVS and VRRP High Availability Monito
r...
Sep 11 13:32:24 localhost Keepalived_vrrp[18261]: VRRP_Instance(VI_1) sending 0 prio
rity
Sep 11 13:32:24 localhost Keepalived_vrrp [18261]: VRRP_Instance (VI_1) removing proto
col VIPs.
…… // 省略部分信息
Sep 11 13:36:42 localhost Keepalived_vrrp[18280]: VRRP_Instance(VI_1) Transition to
MASTER STATE
Sep 11 13:36:42 localhost Keepalived_vrrp[18280]: VRRP_Instance(VI_1) Received lower
prio advert, forcing new election
Sep 11 13:36:43 localhost Keepalived_vrrp[18280]: VRRP_Instance(VI_1) Entering MASTE
R STATE
Sep 11 13:36:43 localhost Keepalived_vrrp [18280]: VRRP_Instance (VI_1) setting protoc
ol VIPs.
…… // 省略部分信息

② 备用服务器中,状态先切换为 MASTER,待主服务器恢复后再交回控制权。

[root@localhost ~]# less /var/log/messages
…… // 省略部分信息
Sep 11 13:12:43 localhost Keepalived_vrrp[25338]: VRRP_Instance(VI_1) Transition to
MASTER STATE
Sep 11 13:12:44 localhost Keepalived_vrrp[25338]: VRRP_Instance(VI_1) Entering MASTE
R STATE
Sep 11 13:12:44 localhost Keepalived_vrrp [25338]: VRRP_Instance (VI_1) setting protoc
ol VIPs.
…… // 省略部分信息
Sep 11 13:14:23 localhost Keepalived_vrrp[25338]: VRRP_Instance(VI_1) Received highe
r prio advert
Sep 11 13:14:23 localhost Keepalived_vrrp[25338]: VRRP_Instance(VI_1) Entering BACKU
P STATE
Sep 11 13:14:23 localhost Keepalived_vrrp [25338]: VRRP_Instance (VI_1) removing proto
col VIPs.
…… // 省略部分信息

   通过上述测试过程,可以发现双机热备已经正常。客户机只要通过 VIP 地址就可以访问服务器所提供的 Web 等应用。其中,任何一台服务器失效,另一台服务器将会立即接替服务,从而实现高可用性。实际应用时,注意主、备服务器所提供的 Web 服务内容要保持一致。

3.1使用Keepalived实现双机热备的实验案例

    Keepalived 的设计目标是构建高可用的 LVS 负载均衡群集,可以调用 ipvsadm 工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用 Keepalived 构建 LVS 群集更加简便易用,主要优势体现在:对 LVS 负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

    在基于 LVS+Keepalived 实现的 LVS 群集结构中,至少包括两台热备的负载调度器,三台以上的节点服务器。本节将以 DR 模式的 LVS 群集为基础,增加一台从负载调度器,使用 Keepalived 来实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的 LVS 网站群集平台,如图 3.3 所示。

   使用 Keepalived 构建 LVS 群集时,也需要用到 ipvsadm 管理工具。但大部分工作会由 Keepalived 自动完成,不需要手动执行 ipvsadm(除了查看和监控群集以外)。下面主要讲解 Keepalived 的服务器池设置,关于 NFS 共享服务的配置、Keepalived 的热备配置等在此不再详细阐述。

操作系统配置主机名IP服务
OpenEuler242C4Glb01192.168.10.101Keepalived/ipvsadm
OpenEuler242C4Glb01192.168.10.102Keepalived/ipvsadm
OpenEuler242C4Gweb01192.168.10.103Nginx
OpenEuler242C4Gweb02192.168.10.104Nginx
OpenEuler242C4Gnfs-server192.168.10.105nfs-utils/rpcbind

 3.1.1基础环境配置

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

关闭内核安全机制

setenforce 0

安装Keepalived以及ipvsadm

dnf -y install keepalived ipvsadm

3.1.2配置主调度器

(1)全局配置,热备配置

[root@localhost ~]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_HA_R1 // 主调度器的名称
}
vrrp_instance VI_1 {
state MASTER // 主调度器的热备状态
interface ens33
virtual_router_id 1
priority 100 // 主调度器的优先级
advert_int 1
authentication { // 主、从热备认证信息
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { // 指定群集 VIP 地址
192.168.10.100
}
}

(2)Web服务器池配置

[root@localhost ~]# vi /etc/keepalived/keepalived.conf
…… #省略部分信息
virtual_server 192.168.10.100 80 {#虚拟服务器地址 (VIP)、端口
delay_loop 15 #健康检查的间隔时间 (秒)
lb_algo rr #轮询 (rr) 调度算法
lb_kind DR #直接路由 (DR) 群集工作模式
! persistence 60 #连接保持时间 (秒), 若启用请去掉!号
protocol TCP #应用服务采用的是 TCP 协议
real_server 192.168.10.103 80 { #第一个 Web 节点的地址、端口
weight 1 #节点的权重
TCP_CHECK { #健康检查方式
connect_port 80 #检查的目标端口
connect_timeout 3 #连接超时 (秒)
nb_get_retry 3 #重试次数
delay_before_retry 4 // 重试间隔 (秒)
}
}
}
real_server 192.168.10.104 80 { #第二个 Web 节点的地址、端口
…… #省略部分信息
}
}
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER # 两个 DS,一个为 MASTER 一个为 BACKUP
interface ens33 # 当前 IP 对应的网络接口,通过 ifconfig 查询
virtual_router_id 62# 虚拟路由 ID (0 - 255),在一个 VRRP 实例中主备服务器 ID 必须一样
priority 100 # 优先级值设定:MASTER 要比 BACKUP 的值大
advert_int 1 # 通告时间间隔:单位秒,主备要一致
authentication { # 认证机制,主从节点保持一致即可
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.100 # VIP,可配置多个
}
}
vim keepalived
virtual_server 192.168.10.100 80 {
delay_loop 3 # 设置健康状态检查时间
lb_algo rr # 调度算法,这里用了 rr 轮询算法
lb_kind DR # 这里测试用了 Direct Route 模式
persistence_timeout 50 # 持久连接超时时间,注意添加此项配置客户端连续请求时,请求到同一节点
protocol TCP
real_server 192.168.10.103 80 {
weight 1
TCP_CHECK {
connect_timeout 10
retry 3 # 旧版本为 nb_get_retry
delay_before_retry 3# 重试间隔 3 秒
connect_port 80
}
}
real_server 192.168.10.104 80 {
weight 1
TCP_CHECK {
connect_timeout 10
retry 3
delay_before_retry 3
connect_port 80
}
}
}

(3)重新启动Keepalived服务

   systemctl  restart keepalived

3.1.3配置从调度器

[root@localhost ~]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_HA_R2
// 从调度器的名称
}
vrrp_instance VI_1 {
state BACKUP // 从调度器的热备状态
priority 90 // 从调度器的优先级
…… // 省略部分信息
}
virtual_server 192.168.10.100 80 {
…… // 省略部分信息
}
[root@localhost ~]# systemctl restart keepalived

3.1.4配置Web节点服务器

bash
# 修改为自己的 VIP
vip=192.168.207.200
case $1 in
start)# 设置 ARP 参数echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announceecho "1" > /proc/sys/net/ipv4/conf/default/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/default/arp_announceecho "1" > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/lo/arp_announce# 临时添加 VIP(重启失效)sudo ip addr add ${vip}/32 dev lo label lo:0# 临时添加路由(重启失效)sudo ip route add local ${vip}/32 dev lo# 永久生效(通过 rc.local 或 NetworkManager 脚本)echo "ip addr add ${vip}/32 dev lo label lo:0" | sudo tee -a /etc/rc.localecho "ip route add local ${vip}/32 dev lo" | sudo tee -a /etc/rc.localsudo chmod +x /etc/rc.local;;
stop)# 恢复 ARP 参数echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/all/arp_announceecho "0" > /proc/sys/net/ipv4/conf/default/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/default/arp_announceecho "0" > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/lo/arp_announce# 移除临时添加的 VIPsudo ip addr del ${vip}/32 dev lo label lo:0# 移除临时添加的路由sudo ip route del local ${vip}/32 dev lo# 从 rc.local 中移除永久设置sudo sed -i "/ip addr add ${vip}\/32 dev lo label lo:0/d" /etc/rc.localsudo sed -i "/ip route add local ${vip}\/32 dev lo/d" /etc/rc.local;;
*)echo "Usage: $0 {start|stop}"exit 1
esac
exit 0

3.1.5测试LVS+Keepalived高可用群集   

       在客户机的浏览器中,能够通过 LVS+Keepalived 群集的 VIP 地址(192.168.10.100)正常访问 Web 页面内容。当主调度器任何一个失效时,Web 站点仍然可以访问(可能需要 刷新或者重新打开);只要服务器池有两台以上的实服务器可用,就可以实现故障的切换过程;通过主、从调度器的 /var/log/messages 日志文件,可以跟踪监视热备的迁移。若要查看负载情况,可以执行 “ipvsadm -ln”“ipvsadm -lnc” 等操作命令。最终可以验证 LVS+Keepalived 高可用负载均衡群集的健壮性。

   哇酷哇酷,今天的文章就分享到这了,感谢大家的支持~~~

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

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

相关文章

ros中相机话题在web页面上的显示,尝试js解析sensor_msgs/Image数据

ros中相机话题在web页面上的显示 思路&#xff1a; rosbridge websocket 开启ros与web的通路&#xff0c; 话题数据转换为image或者绘制在 canvas中。 话题格式&#xff1a; sensor_msgs/Image 测试数据编码类型为bgr8 尝试&#xff1a; 解析 为bitmap arraybuffer 写入bgr…

PowerShell批量处理文件名称/内容的修改

在日常的文件管理与处理中&#xff0c;常常需要对大量文件名或文件内容进行修改&#xff0c;而手动逐个操作既繁琐又容易出错。PowerShell作为一种强大的脚本语言&#xff0c;为我们提供了高效批量处理文件名及内容修改的解决方案。通过编写简单的PowerShell脚本&#xff0c;可…

GA3C(GPU/CPU混合式异步优势Actor-Critic)算法实现控制倒立摆

GA3C算法实现倒立摆 完整代码在文章结尾 GA3C算法 GPU/CPU混合式异步优势AC算法&#xff0c;是由A3C算法进一步优化而来&#xff0c;为了更好利用GPU计算资源。 GA3C理论上与A3C相同&#xff0c;属于On-Policy。但由于存在延迟更新问题&#xff0c;导致用于策略更新的数据并…

基础RAG实现,最佳入门选择(六)

带有问题生成的文档增强RAG 通过问题生成使用文档增强来实现增强的RAG方法。通过为每个文本块生成相关问题&#xff0c;改进了检索过程&#xff0c;从而从语言模型中获得更好的响应。 具体实现步骤 1.数据摄取&#xff1a;从PDF文件中提取文本。 2.chunking&#xff1a;将文本…

vue3 电商类网站实现规格的选择

目前有一个这样的需求 类似淘宝 京东选择 但是在人家大厂给的数据我不清除是什么样子的 我这边后端给的数据 一开始是想把规格全部显示出来的 发现实现不了 后端的数据有限 因为必须选择一个颜色 才可以对应的第二个规格 才知道有没有库存 因为这个库存 是由两个规格决定…

HarmonyOS5 音乐播放器app(一):歌曲展示与收藏功能(附代码)

鸿蒙音乐应用开发&#xff1a;从收藏功能实现看状态管理与交互设计 在移动应用开发中&#xff0c;收藏功能是用户体验的重要组成部分。本文将以鸿蒙OS音乐应用为例&#xff0c;详细解析如何实现具有动画效果的收藏功能&#xff0c;涉及状态管理、组件通信和交互动画等核心技术…

PHP函数大全参考代码

字符串相关操作函数 去除空格或其他字符 trim删除字符串两端空格或其他预定义字符rtrim删除字符串右边空格或其他预定义字符choprtrim() 的别名 chop() 与 Perl 的 chop() 函数有所不同&#xff0c;它会删除字符串的最后一个字符。ltrim删除字符串左边空格或其他预定义字符 字…

Flowise工作流引擎的本地部署与远程访问实践

文章目录 前言1. Docker安装Flowise2. Ubuntu安装Cpolar3. 配置Flowise公网地址4. 远程访问Flowise5. 固定Cpolar公网地址6. 固定地址访问 前言 当多数团队仍深陷传统数据处理框架的桎梏时&#xff0c;创新者已率先引入Flowise智能流程引擎&#xff0c;成功将面向大型语言模型…

端侧AI+OS垂直创新研究报告

端侧AIOS垂直创新研究报告 摘要 端侧AIOS研究背景、核心创新点及产业价值 研究背景 随着AI技术的快速发展&#xff0c;端侧AI已成为2025年的重要技术趋势[4]。端侧AI是指将AI计算能力从云端迁移到终端设备上&#xff0c;实现本地化的智能处理。这一技术变革主要受到隐私安全…

【JVM 07-运行时常量池重要组成部分-StringTable】

StringTable 笔记记录 1. 常量池、运行时常量池与字符串常量池(StringTable)的关系2. String str"a"放入字符串常量池的过程3. 常见面试题4. StringTable特性5.StringTable的位置变更5.1 为什么位置变换&#xff1f;5.2 位置变更演示 6. StringTable垃圾回收7. Strin…

算法-每日一题(DAY10)打家劫舍

1.题目链接&#xff1a; 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 2.题目描述&#xff1a; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xf…

android UI 布局

一&#xff1a;约束布局 参考&#xff1a; 【约束布局】ConstraintLayout 约束布局 ( 简介 | 引入依赖 | 基本操作 | 垂直定位约束 | 角度定位约束 | 基线约束 )_韩曙亮-2048 AI社区 以下是一个基于 ConstraintLayout 的简单 Android 示例&#xff0c;包含三个控件&#xff0…

【K8S】详解Labels​​ 和 ​​Annotations

在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;​​Labels&#xff08;标签&#xff09;​​ 和 ​​Annotations&#xff08;注解&#xff09;​​ 都是用于为资源对象&#xff08;如 Pod、Service、Deployment&#xff09;附加元数据的机制&#xff0c;但它们在设计…

系统模块编程与实现

设备类&#xff08;Device Class&#xff09;​​ 和 ​​设备节点&#xff08;Device Node&#xff09;​​是深入 Linux 设备管理和驱动模型的核心基础。它们就像“骨骼”与“门户”&#xff0c;共同构建了 Linux 与硬件交互的核心桥梁。 一、设备类与设备节点 1. ​​设备…

视频压缩、码率与流媒体传输知识总结

&#x1f3a5; 视频压缩、码率与流媒体传输知识总结 本笔记整理了 I/P/B 帧结构、码率计算、文件大小估算、压缩格式对比、推流带宽建议等视频工程常见技术要点。 一、单帧与未压缩视频数据量估算 分辨率&#xff1a;19201080&#xff08;1080p&#xff09; 色深&#xff1a;…

嵌入式C++学习路线

&#x1f680; 嵌入式C学习路线图 从C语言基础到嵌入式C高手的完整路径 &#x1f4cb; 学习进度追踪 总体目标&#xff1a; 20-26周完成全部学习内容 前置条件&#xff1a; C语言基础 STM32开发经验 学习方式&#xff1a; 理论学习 实践项目 阶段1: C基础过渡 (2-3周) 目标…

VSCode1.101.1Win多语言语言编辑器便携版安装教程

软件下载 【名称】&#xff1a; VSCode1.101.1 【大小】&#xff1a; 120M 【语言】&#xff1a; 简体中文 【安装环境】&#xff1a; Win10/Win11 【迅雷网盘下载链接】&#xff08;务必手机注册&#xff09;&#xff1a; 迅雷 【网站下载链接】: 其他网盘 软件介绍 VSCod…

ssh 服务和 rsync 数据同步

目录 一、ssh服务 1、概述 2、命令解析 远程登录命令 远程拷贝命令 3、登录方式配置 1、用户名密码登录 2、公钥验证登录 二、rsync 数据同步 1、rsync概述 2、rsync运行原理 3、rsync部署 一、ssh服务 1、概述 ssh服务&#xff0c;一种远程管理连接工具&#xf…

使用随机森林实现目标检测

核心实现思路 滑动窗口策略&#xff1a;在图像上滑动固定大小的窗口&#xff0c;对每个窗口进行分类多维特征提取&#xff1a;结合统计特征、纹理特征、边缘特征、形状特征等随机森林分类&#xff1a;训练二分类器判断窗口是否包含目标后处理优化&#xff1a;使用非极大值抑制…

3.6 move_base导航初体验

1.环境搭建 在工作空间src下git wpr_simulation&#xff0c;安装install_for_noetic.sh&#xff0c;然后再回退工作空间进行编译 下载参数文件 git clone https://github.com/6-robot/wpb_home.git下载需要魔法&#xff0c;在这里可以使用手机热点进行平替 进入脚本文件夹 …