Keepalived 多主模型與 LVS 高可用

一.Keepalived多主模型

Keepalived多主模型概念

如上圖,keepalived主從架構性能損耗較嚴重,如果業務分類明確,則可以配置keepalived多主模型降低損耗,兩臺keepalived互為主備,如:訂單業務走keepalived1,keepalived2做備,商品業務走keepalived2,keepalived1做備。也就是keepalived1和keepalived2各拿一份vip

Keepalived多主模型配置

keepalived1訂單業務:

vrrp_instance VI_2 {state BACKUP   #設置為BACKUPinterface ens33virtual_router_id 55priority 80advert_int 1authentication {auth_type PASSauth_pass 111156}virtual_ipaddress {192.168.80.40/24192.168.80.41/24192.168.80.42/24}notify_master "/root/sendemail.sh master"notify_backup "/root/sendemail.sh backup"notify_fault  "/root/sendemail.sh fault"
}

?

keepalived1商品業務:?

vrrp_instance VI_1 {state MASTER   #設置為MASTER   interface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.80.50/24192.168.80.51/24192.168.80.52/24}notify_master "/root/sendemail.sh master"notify_backup "/root/sendemail.sh backup"notify_fault  "/root/sendemail.sh fault"
}

keepalived2訂單業務:

vrrp_instance VI_2 {state MASTERinterface ens33virtual_router_id 55priority 80advert_int 1authentication {auth_type PASSauth_pass 111156}virtual_ipaddress {192.168.80.40/24192.168.80.41/24192.168.80.42/24}notify_master "/root/sendemail.sh master"notify_backup "/root/sendemail.sh backup"notify_fault  "/root/sendemail.sh fault"}

?keepalived2商品業務:

vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.80.50/24192.168.80.51/24192.168.80.52/24}notify_master "/root/sendemail.sh master"notify_backup "/root/sendemail.sh backup"notify_fault  "/root/sendemail.sh fault"}

驗證

?如上圖,keepalived是商品業務的主節點,拿到商品業務的vip,keepalived2是訂單業務的主節點,拿到訂單業務的vip,并且互為主備。

如果此時一個keepalived壞了,另一個keepalived將擁有兩個業務的vip

?

二.實現IPVS 高可用

在分布式系統架構中,高可用性設計始終是核心命題。當我們使用 Keepalived 實現 VIP 飄移時,本質上只是解決了 IP 層的可用性問題,這就像為建筑搭建了穩固的地基,但要讓大樓真正運轉起來,還需要在服務層構建完整的容錯機制。LVS(Linux Virtual Server)正是實現這一目標的關鍵組件,它與 Keepalived 的 VRRP 協議形成了完美的能力互補。

虛擬服務器配置

virtual_server IP port {                # 定義虛擬服務器,指定監聽的IP和端口delay_loop<INT>                    # 健康檢查的時間間隔(單位:秒)lib_algo rr|wr1|cln1c|lib|cln1dh    # 負載均衡算法(rr=輪詢,wr1=加權輪詢,cln1c=最少連接,cln1dh=目標地址哈希)lib_kind NAT|ON|TUN                 # 數據包轉發模式(NAT=網絡地址轉換,TUN=隧道模式,ON=直接路由)persistence_timeout <INT>           # 會話保持時間(單位:秒,0表示不啟用)protocol TCP|USIP|SCTP              # 協議類型(TCP/USIP[UDP]/SCTP)sorry_server <IPADDR> <PORT>        # 備用服務器地址,當所有真實服務器宕機時啟用real_server <IPADDR> <PORT> {       # 定義真實服務器(后端節點)weight <INT>                    # 服務器權重(權重越高分配的請求越多)notify_up <STRING>              # 服務器上線時觸發的腳本/命令notify_down <STRING>            # 服務器下線時觸發的腳本/命令# 健康檢查方法(只能選其一):HTTP_GET|SSL_GET {              # HTTP/HTTPS 檢查(需配置具體URL和狀態碼)url { path <PATH> }         # 示例:url { path "/health" status_code 200 }}TCP_CHECK { ... }               # TCP端口檢查(默認檢測端口連通性)SNTP_CHECK { ... }              # SNTP協議檢查(用于時間服務器)MISC_CHECK { ... }             # 自定義腳本檢查(需指定外部腳本路徑)}
}

?例如:

vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100}
}virtual_server 192.168.1.100 80 {delay_loop 6lb_algo wrrlb_kind DRprotocol TCPreal_server 192.168.1.101 80 {weight 3TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

?該配置展示了

  • VRRP 實現 VIP(192.168.1.100) 的飄移

  • LVS 使用 DR 模式進行流量分發

  • 基于 TCP 連接的健康檢查機制

  • 權重為 3 的服務器優先級設置

當某臺真實服務器不可達時,LVS 會自動將其移出服務池,同時 Keepalived 通過 VRRP 協議維護 VIP 的可用性,形成雙重保障機制。

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

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

相關文章

RISCV虛擬化環境搭建

概要 本文記搭建 RISCV 虛擬化環境的流程。 整體架構 我們使用 QEMU 來模擬 RISCV 的各種硬件擴展環境&#xff0c;通過 QEMU 啟動 Ubuntu 作為我們的 Host 來在 Host 之中通過 KVMTOOL 來運行 Guest&#xff0c;學習 RISCV 的虛擬化。 目前我的 X86_64 主機使用的是 Ubunt…

書摘 ASP.NET Core技術內幕與項目實戰:基于DDD與前后端分離

IT行業的發展瞬息萬變,新技術層出不窮,很多技術人員出于個人興趣、個人職業發展等考慮而選擇一些流行的新技術,他們會把各種復雜的架構模式、高精尖的技術都加入架構中,這增加了項目的復雜度、延長了交付周期、增加了項目的研發成本。有些技術并不符合公司的情況,最后項目…

神策數據接入 DeepSeek,AI 賦能數據分析與智能運營

在 AI 技術迅猛發展的浪潮下&#xff0c;神策數據正在加速推進人工智能在數據分析和智能運營領域的深度應用。近日&#xff0c;神策數據宣布全面接入 DeepSeek&#xff0c;為企業客戶帶來更加智能化、高效的數據分析與智能運營服務。這一舉措展現了神策數據在人工智能方向的探索…

c++ 類和對象 —— 中 【復習筆記】

1. 類的默認成員函數 如果一個類什么成員都沒有&#xff0c;簡稱空類。但實際上&#xff0c;任何類在不寫成員時&#xff0c;編譯器會自動生成6個默認成員函數&#xff08;用戶未顯式實現&#xff0c;編譯器生成的成員函數&#xff09; 這6個成員函數可分為三類&#xff1a; …

數學建模:MATLAB循環神經網絡

一、簡述 1.循環神經網絡 循環神經網絡&#xff08;RNN&#xff09;是一種用于處理序列數據的神經網絡。不同于傳統的前饋神經網絡&#xff0c;RNN在隱藏層中加入了自反饋連接&#xff0c;使得網絡能夠對序列中的每個元素執行相同的操作&#xff0c;同時保持一個“記憶”狀態…

在windows10系統上安裝docker,然后在容器中運行GPU版本的Pytorch,并使用vscode連接該容器

一 . 安裝Docker Desktop 首先打開網址https://docs.docker.com/desktop/install/windows-install/ 下載完后&#xff0c;雙擊下面的exe文件進行安裝&#xff0c;默認情況下&#xff0c;Docker Desktop 安裝在C:\Program Files\Docker\Docker 出現提示時&#xff0c;請確保…

基于SpringBoot + Vue 的房屋租賃系統

基于springboot的房屋租賃管理系統-帶萬字文檔 SpringBootVue房屋租賃管理系統 送文檔 本項目有前臺和后臺兩部分、多角色模塊、不同角色權限不一樣 共分三種角色&#xff1a;用戶、管理員、房東 管理員&#xff1a;個人中心、房屋類型管理、房屋信息管理、預約看房管理、合…

C++特性——智能指針

為什么需要智能指針 對于定義的局部變量&#xff0c;當作用域結束之后&#xff0c;就會自動回收&#xff0c;這沒有什么問題。 當時用new delete的時候&#xff0c;就是動態分配對象的時候&#xff0c;如果new了一個變量&#xff0c;但卻沒有delete&#xff0c;這會造成內存泄…

C語言之 循環語句:程序運行的核心動力(上)

個人主頁&#xff1a;strive-debug 在 C 語言中&#xff0c;分支結構可以通過 if、switch 語句來實現&#xff0c;循環結構則可以通過 for、while、do while 語句來實現。 if 語句 if 語句的語法形式如下&#xff1a; if (表達式)語句; 如果表達式成立&#xff08;為真&am…

FreeRTOSBug解析:一個任務printf打印一半突然跳轉另一個任務,導致另一個任務無法打印

bug現象&#xff1a; key任務&#xff1a; 默認任務&#xff1a; 此時兩個任務的優先級相同&#xff0c;搶占式調度&#xff0c;時間片輪轉&#xff0c;空閑任務讓步。 但是會出現一個問題&#xff0c;key任務在發送完隊列之后不會立即跳轉到默認任務的隊列接收函數后的print…

操作系統八股文整理(一)

操作系統八股文整理 一、進程和線程的區別二、進程與線程的切換過程一、進程切換進程切換的步驟&#xff1a; 二、線程切換線程切換的步驟&#xff1a; 三、進程切換與線程切換的對比四、上下文切換的優化 三、系統調用一、系統調用的觸發二、從用戶空間切換到內核空間三、執行…

卷積神經網絡(CNN)之 EfficientNet

在深度學習領域&#xff0c;模型的計算效率與性能之間的平衡一直是一個核心挑戰。隨著卷積神經網絡&#xff08;CNN&#xff09;在圖像分類、目標檢測等任務中取得顯著成果&#xff0c;模型的復雜度和計算需求也急劇增加。2019年&#xff0c;Google Research 提出的 EfficientN…

學生選課管理系統數據庫設計報告

學生選課管理系統數據庫設計報告 一、需求分析 &#xff08;一&#xff09;項目背景 學生選課管理系統是高校教學管理的重要組成部分&#xff0c;旨在實現學生選課、課程管理、成績錄入與查詢等功能的自動化和信息化。通過該系統&#xff0c;學生可以方便地選擇課程&#xf…

工具介紹《Awsome-Redis-Rogue-Server 與 redis-rogue-server》

1. 核心功能與攻擊場景 redis-rogue-server 基于Redis主從復制漏洞&#xff08;CVE未公開&#xff09;&#xff0c;針對Redis 4.x~5.0.5版本設計&#xff0c;通過偽造惡意主節點強制同步惡意模塊&#xff08;.so文件&#xff09;實現遠程代碼執行&#xff08;RCE&#xff09;。…

Razor C# 變量

Razor C# 變量 引言 在ASP.NET MVC和Razor視圖引擎中,變量是構建動態網頁的基礎。理解Razor C#變量的使用對于開發者來說至關重要。本文將詳細介紹Razor C#變量的概念、類型、作用域以及如何在實際項目中有效使用它們。 一、Razor C# 變量的概念 Razor C# 變量是存儲在Raz…

【QA】模板方法模式在Qt中有哪些應用?

在 Qt 框架中&#xff0c;模板方法模式&#xff08;Template Method Pattern&#xff09;被廣泛應用于框架的設計中&#xff0c;通過定義算法骨架并允許子類在不改變結構的情況下重寫部分步驟。以下是 Qt 中典型的應用場景及示例&#xff1a; 1. 事件處理&#xff08;Event Ha…

有趣的算法實踐:整數反轉與回文檢測(Java實現)

題目描述&#xff1a;整數反轉與回文檢測 要求實現兩個功能&#xff1a; 將輸入的整數反轉&#xff08;保留符號&#xff0c;如輸入-123返回-321&#xff09;判斷反轉后的數是否為回文數&#xff08;正反讀相同&#xff09; 示例&#xff1a; 輸入&#xff1a;123 → 反轉結…

【協作開發】低成本一鍵復刻github的gitea

在閱讀 next-public 時&#xff0c;反思原本的需求&#xff0c;是否本未倒置&#xff0c;故而重新調研當下開源現狀。發現 gitea 完全滿足商業軟件的開發要求&#xff0c;并且價格足夠低&#xff0c;使用足夠方便&#xff0c;其他同類軟件完全不用看了&#xff0c;真是世界級的…

基于“動手學強化學習”的知識點(二):第 15 章 模仿學習(gym版本 >= 0.26)

第 15 章 模仿學習&#xff08;gym版本 &#xff1e; 0.26&#xff09; 摘要 摘要 本系列知識點講解基于動手學強化學習中的內容進行詳細的疑難點分析&#xff01;具體內容請閱讀動手學強化學習&#xff01; 對應動手學強化學習——模仿學習 # -*- coding: utf-8 -*-import gy…

JAVA面試_進階部分_Java JVM:垃圾回收(GC 在什么時候,對什么東西,做了什么事情)

在什么時候&#xff1a; 首先需要知道&#xff0c;GC又分為minor GC 和 Full GC&#xff08;major GC&#xff09;。Java堆內存分為新生代和老年代&#xff0c;新生代 中又分為1個eden區和兩個Survior區域。 一般情況下&#xff0c;新創建的對象都會被分配到eden區&#xff…