Keepalived 實戰

一、高可用集群基礎

核心概念與指標

  • 集群類型

    • LB(負載均衡):如 LVS、HAProxy、Nginx,提升吞吐量;
    • HA(高可用):保障核心服務(數據庫、Redis)連續性;
    • SPoF(單點故障):需通過冗余設計消除的風險點。
  • 可用性指標

    • 計算公式:A = MTBF / (MTBF + MTTR)(MTBF 為平均無故障時間,MTTR 為平均修復時間);
    • 常見標準:99.9%(年停機≤8.76 小時)、99.99%(≤52.56 分鐘)、99.999%(≤5.26 分鐘)。
  • 故障應對思路

    • 縮短 MTTR(故障恢復時間);
    • 冗余機制:主備(active/passive)或雙主(active/active)模式。

二、VRRP 協議與 Keepalived

VRRP 核心機制

  • 作用:將多節點虛擬為單一 "虛擬路由器",解決網關單點故障;
  • 關鍵術語
    • VRID(0-255):虛擬路由器唯一標識;
    • VIP(虛擬 IP):對外服務的 IP;
    • 角色:master(主節點,提供服務)、backup(備節點,待機接管);
    • 優先級:決定主備切換的權重(0-255)。
  • 工作方式:主節點廣播心跳,備節點監聽,故障時自動切換。

Keepalived 功能

  • VRRP 協議的軟件實現,核心功能包括:
    • VIP 地址漂移管理;
    • 后端服務器健康檢查;
    • 自動生成 IPVS 負載均衡規則;
    • 支持 Nginx、HAProxy 等高可用切換。

三、實戰部署

環境與基礎配置

  • 節點信息

    主機名IP 地址角色
    KA1172.25.254.50Keepalived 主節點
    KA2172.25.254.60Keepalived 備節點
    rs11/22172.25.254.10/20后端 Web 服務器
  • 部署步驟

    1. 后端服務器安裝 httpd 并啟動;
    2. KA1/KA2 安裝 Keepalived:dnf install keepalived -y
    3. 配置主節點(KA1):設置 MASTER 角色、VRID、優先級及 VIP;
    4. 配置備節點(KA2):角色設為 BACKUP,優先級低于主節點;
    5. 啟動服務:systemctl enable --now keepalived

四、Keepalived 實戰部署:從單主到雙主

4.1 環境準備

本次實戰涉及 4 臺主機,網絡配置如下:

主機名IP 地址角色
KA1172.25.254.50Keepalived 主節點
KA2172.25.254.60Keepalived 備節點
rs11172.25.254.10后端 Web 服務器(httpd)
rs22172.25.254.20后端 Web 服務器(httpd)

4.2 基礎部署步驟

  1. 部署后端服務:在 rs11 和 rs22 安裝 httpd 并啟動:

    bash

    dnf install httpd -y
    systemctl enable --now httpd
    
  2. 安裝 Keepalived:在 KA1 和 KA2 執行:

    bash

    dnf install keepalived -y
    
  3. 配置主節點(KA1):編輯/etc/keepalived/keepalived.conf

    conf

    global_defs {notification_email { 3036573531@qq.com }  # 通知郵箱notification_email_from 3036573431@qq.comsmtp_server 127.0.0.1router_id LVS_DEVEL  # 節點標識
    }# 健康檢查腳本(以HAProxy為例)
    vrrp_script CHECK_HAPROXY {script "/etc/keepalived/scripts/haproxy.sh"  # 檢查腳本路徑interval 1  # 檢查間隔(秒)weight -30  # 檢查失敗時優先級降低值fall 2      # 連續失敗次數閾值rise 2      # 恢復成功次數閾值
    }vrrp_instance WEB_VIP {state MASTER  # 角色:主節點interface eth0  # 綁定網卡virtual_router_id 51  # VRID(需與備節點一致)priority 100  # 優先級(高于備節點)advert_int 1  # 心跳間隔(秒)authentication {auth_type PASS  # 認證方式auth_pass 1111  # 認證密碼}track_script { CHECK_HAPROXY }  # 關聯健康檢查virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:0  # VIP配置}
    }
    
  4. 配置備節點(KA2):與主節點類似,僅需修改state BACKUPpriority 80

  5. 啟動服務

    bash

    systemctl enable --now keepalived.service
    

4.3 核心功能配置

  • 日志分離:通過修改啟動參數將日志獨立存儲:

    bash

    # 在/etc/sysconfig/keepalived中添加
    KEEPALIVED_OPTIONS="-D -S 6"  # 日志設備號6
    # 在/etc/rsyslog.conf中添加
    local6.* /var/log/keepalived.log  # 日志路徑
    systemctl restart rsyslog keepalived
    
  • 非搶占模式:避免主節點恢復后頻繁切換,在配置中添加:

    conf

    vrrp_instance WEB_VIP {...nopreempt  # 開啟非搶占
    }
    
  • 單播模式:適用于跨網段部署,指定通信節點:

    conf

    vrrp_instance WEB_VIP {...unicast_src_ip 172.25.254.50  # 本地IPunicast_peer { 172.25.254.60 }  # 對端IP
    }
    
  • 郵件通知:故障時發送告警,配置腳本與觸發機制:

    bash

    # 編輯通知腳本/etc/keepalived/mail.sh
    #!/bin/bash
    mail_dest='3036573431@qq.com'
    mail_subj="$HOSTNAME 狀態切換為 $1"
    echo "時間: $(date) 節點 $HOSTNAME 狀態變為 $1" | mail -s "$mail_subj" $mail_dest# 在vrrp_instance中關聯腳本
    notify_master "/etc/keepalived/mail.sh master"
    notify_backup "/etc/keepalived/mail.sh backup"
    

4.4 雙主架構實現

單主架構中備節點長期閑置,雙主架構通過兩個 VRID 實現資源利用率最大化:

  1. KA1 配置

    conf

    # 虛擬路由器1(主節點)
    vrrp_instance WEB_VIP {state MASTERvirtual_router_id 51priority 100virtual_ipaddress { 172.25.254.100/24 }
    }# 虛擬路由器2(備節點)
    vrrp_instance DB_VIP {state BACKUPvirtual_router_id 52priority 80virtual_ipaddress { 172.25.254.200/24 }
    }
    
  2. KA2 配置

    conf

    # 虛擬路由器1(備節點)
    vrrp_instance WEB_VIP {state BACKUPvirtual_router_id 51priority 80virtual_ipaddress { 172.25.254.100/24 }
    }# 虛擬路由器2(主節點)
    vrrp_instance DB_VIP {state MASTERvirtual_router_id 52priority 100virtual_ipaddress { 172.25.254.200/24 }
    }
    
  3. 測試驗證
    • 正常狀態:KA1 持有 172.25.254.100,KA2 持有 172.25.254.200;
    • 故障模擬:關閉 KA2 的 keepalived,KA1 會自動接管 172.25.254.200;
    • 恢復驗證:重啟 KA2 的 keepalived,VIP 會自動回切。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91197.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91197.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91197.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

窗口函數替代子查詢的復雜查詢簡化技巧

窗口函數通過單次掃描完成分析計算,能大幅簡化子查詢結構并提升性能,尤其在排名、累計計算等場景?15。以下是核心優化技巧:一、排名場景替代方案?部門工資排名?傳統子查詢需自連接和聚合計數:sqlSELECT e1.name, e1.salary, (S…

深度學習:預訓練和warm up的區別

“預訓練(Pre-training)”和“Warm-up(預熱)”是深度學習中常見的兩個訓練策略,它們雖然都在訓練初期起作用,但本質和目的完全不同。一、預訓練(Pre-training)1. 定義預訓練是指&…

Apache Ignite中分布式信號量(Distributed Semaphore)的說明和使用示例

這段內容是關于 Apache Ignite 中 分布式信號量(Distributed Semaphore) 的說明和使用示例。我們來一步步解析,幫助你深入理解它的含義和用途。🔹 一、什么是 Semaphore(信號量)? 在并發編程中&…

怎么提升服務器的防攻擊能力!

提升服務器的防攻擊能力需要從??架構設計、技術防護、運維管理??等多維度入手,覆蓋網絡層、系統層、應用層及數據層的安全防護。以下是具體的策略和實踐方法:??一、基礎安全加固:消除自身漏洞??服務器自身的脆弱性是最常見的攻擊入口…

vscode配置rust環境

1.官網下載vscode,安裝 2.vscode命令行運行: Invoke-WebRequest https://win.rustup.rs/x86_64 -OutFile rustup-init.exe然后: .\rustup-init.exe3.驗證 先配置path: $env:Path ";$env:USERPROFILE\.cargo\bin"查看是…

最新版 HarmonyOS NEXT 開發工具安裝教程:如何在 macOS 系統安裝 DevEco Studio 5.0.3 編輯器?

最新版 HarmonyOS NEXT 開發工具安裝教程:如何在 macOS 系統安裝 DevEco Studio 5.0.3 編輯器? 什么是 DevEco Studio? DevEco Studio 是華為為 HarmonyOS 開發的強大集成開發環境(IDE),專為開發 Harmony…

電商項目統一認證方案設計與實戰

1. 微服務網關整合 OAuth2.0 設計思路分析 網關整合 OAuth2.0 有兩種思路,一種是授權服務器生成令牌, 所有請求統一 在網關層驗證,判斷權限等操作;另一種是由各資源服務處理,網關只做請求 轉發 。 比較常用的是第一種&#xf…

學習Markdown

標題一 標題二 標題三 標題四 標題五 標題六這是一段引用文本直接編寫,段落換行是末尾兩個以上的空格+回車 或者在段落后加一個空行 粗體語法:使用兩個星號 ** 或兩個下劃線 __ 包圍文字:這是粗體文字使用星號 這是__粗體文字__使…

劇本殺系統 App 開發:科技賦能,重塑劇本殺游戲體驗

在科技飛速發展的當下,各個行業都在積極尋求與科技的融合,以實現創新和升級。劇本殺行業也不例外,劇本殺系統 App 的開發正是科技賦能的生動體現,它重塑了傳統的劇本殺游戲體驗,為玩家帶來了全新的感受。劇本殺系統 Ap…

wvp-gb28181-pro 只用jar運行

編譯前端后npm install --global yarnyarn --registryhttps://registry.npmjs.org installyarn run build,生成的前端文件,會在wvp-GB28181-pro\src\main\resources\static,因為是在resources中,打maven打包后會一起打到jar中&…

深度學習(魚書)day06--神經網絡的學習(后兩節)

深度學習(魚書)day06–神經網絡的學習(后兩節)一、梯度 像 這樣的由全部變量的偏導數匯總而成的向量稱為梯度(gradient)。 梯度實現的代碼: def numerical_gradient(f, x):h 1e-4 # 0.0001grad…

學習嵌入式的第三十四天-數據結構-(2025.7.29)數據庫

數據庫基礎概念 數據庫是用于存儲和管理海量數據的應用程序,提供數據增刪改查及統計功能(如最大值、最小值、平均數等)。通過SQL語句操作數據,以表格形式管理存儲。 數據庫分類 關系型數據庫 Oracle(大型&#xff0…

STM32——HAL庫

總:STM32——學習總綱 一、簡介 1.1 CMIS簡介 所有廠家為了市場兼容性推出的標準 arm架構 1.2 HAL庫簡介 1.2.1 各種庫優缺點 二、 STM32 Cube固件包 ST公司為CMSIS 中間層開發的pack,包含HAL。 2.1 獲取方式 ST官網:st.com/content/st_c…

數據結構-圖的相關定義

圖-多對多Graph(V,E),圖(頂點Vertex,邊Edge)圖可以沒有邊,只有一個頂點也叫圖,但是單獨的一條邊,或者一個頂點連一條邊,不能叫圖有向圖:無向圖&am…

B 站搜一搜關鍵詞優化:精準觸達用戶的流量密碼

在 B 站內容生態中,搜一搜功能是用戶主動獲取信息的重要渠道,而關鍵詞優化則是讓你的視頻在搜索結果中脫穎而出的關鍵。通過合理優化關鍵詞,能提升視頻曝光率,吸引精準流量,為賬號發展注入強勁動力。以下從關鍵詞挖掘、…

Python爬蟲實戰:研究purl庫相關技術

1. 引言 隨著互聯網數據量的爆炸式增長,網絡爬蟲已成為數據采集、輿情分析和學術研究的重要工具。Python 憑借其豐富的庫生態和簡潔語法,成為開發爬蟲的首選語言。本文提出的爬蟲系統結合 requests 進行 HTTP 請求、BeautifulSoup 解析 HTML,并創新性地引入 purl 庫處理復雜…

OpenCV 學習探秘之三:從圖像讀取到特征識別,再到機器學習等函數接口的全面實戰應用與解析

一、引言 1.1介紹 OpenCV(Open Source Computer Vision Library)是一個功能強大的開源計算機視覺庫,廣泛應用于圖像和視頻處理、目標檢測、機器學習等領域。本文將全面解析 OpenCV 中常用的函數接口,幫助讀者快速掌握 OpenCV 的…

Umi從零搭建Ant Design Pro項目(3)集成 openapi 插件

1. 安裝插件 pnpm add umijs/max-plugin-openapi pnpm add swagger-ui-dist如果不安裝swagger-ui-dist,不會影響運行。但會報錯。 2.配置文件export default defineConfig({// umi插件配置plugins: [umijs/max-plugin-openapi],// openAPI配置openAPI: {requestLibP…

Flutter開發實戰之狀態管理深入解析

第4章:狀態管理深入解析 前言 想象一下,你正在開發一個購物車應用。用戶在商品頁面添加商品,然后去購物車頁面查看,最后到結算頁面付款。在這個過程中,購物車的數據需要在多個頁面之間保持同步和一致。這就是狀態管理要解決的核心問題。 狀態管理是Flutter開發中最重要…

組件化(一):重新思考“組件”:狀態、視圖和邏輯的“最佳”分離實踐

組件化(一):重新思考“組件”:狀態、視圖和邏輯的“最佳”分離實踐 引子:組件的“內憂”與“外患” 至此,我們的前端內功修煉之旅已經碩果累累。我們掌握了組件化的架構思想,擁有了高效的渲染引擎,還探索…