高性能群集部署技術-LVS+Keepalived高可用群集

目錄

#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;在這里可以使用手機熱點進行平替 進入腳本文件夾 …