KeepAlived的介紹

来源:https://www.cnblogs.com/shenxm/archive/2018/02/23/8463157.html
-Advertisement-
Play Games

KeepAlived介紹 keepalived 相關縮略詞 術語 keepalived的主要作用 keepAlived有三個進程 keepAlived組件 ...


KeepAlived介紹

keepalived

    keepalived是一個類似於layer3, 4 & 7交換機制的軟體,也就是我們平時說的第3層、第4層和第7層交換。
    Keepalived的作用是檢測伺服器的狀態,如果有一臺web伺服器宕機或工作出現故障,Keepalived將檢測到,會將有故障的伺服器從系統中剔除,同時使用其他伺服器代替該伺服器的工作,當伺服器工作正常後Keepalived自動將伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修複故障的伺服器。
    Keepalived是一個基於VRRP協議來實現的WEB 服務高可用方案,可以利用其來避免單點故障。
        一個WEB服務至少會有2台伺服器運行Keepalived,一臺為主伺服器(MASTER),一臺為備份伺服器(BACKUP),但是對外表現為一個虛擬IP,主伺服器會發送特定的消息給備份伺服器,當備份伺服器收不到這個消息的時候,即主伺服器宕機的時候,備份伺服器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。
    keepAlived和LVS完全不是同一個概念,它們是獨立互不影響的完成自己的工作。
        keepAlived是工作在LVS之上的,所謂的工作在之上,是keepAlived自身的模塊通過配置文件調用ipvsadm命令對LVS進行配置,實現負載均衡。
        LVS通過負載均衡實現對伺服器的高擴展性。
        keepAlived通過自身的子進程對LVS進行健康檢查,實現LVS的高可用性(即防止LVS崩潰,發送主從伺服器的健康狀態和通知切換主從LVS)。
    
    Layer3,4&7工作在IP/TCP協議棧的IP層,TCP層,及應用層,原理分別如下:
        Layer3,網路層:
            Keepalived使用Layer3的方式工作式時,Keepalived會定期向伺服器群中的伺服器發送一個ICMP的數據包(既我們平時用的Ping程式),如果發現某台服務的IP地址沒有激活,Keepalived便報告這台伺服器失效,並將它從伺服器群中剔除,這種情況的典型例子是某台伺服器被非法關機。
            Layer3的方式是以伺服器的IP地址是否有效作為伺服器工作正常與否的標準。
        Layer4,傳輸層:
            Layer4主要以TCP埠的狀態來決定伺服器工作正常與否。
            如web server的服務埠一般是80,如果Keepalived檢測到80埠沒有啟動,則Keepalived將把這台伺服器從伺服器群中剔除。
        Layer7,應用層:
            Layer7就是工作在具體的應用層了,比Layer3,Layer4要複雜一點,在網路上占用的帶寬也要大一些。
            Keepalived將根據用戶的設定檢查伺服器程式的運行是否正常,如果與用戶的設定不相符,則Keepalived將把伺服器從伺服器群中剔除。

相關縮略詞

    VRRP    virtual router redundancy protocol  虛擬路由器冗餘協議
    NQA network quality analyzer    網路質量分析
    BFD bidirectional forwarding detection  雙向轉發檢測
    IRDP    icmp router discovery protocol  icmp 路由發現協議
    VRID    virtual router id   虛擬路由器號
    AVF active virtual forwarder    活動虛擬路由轉發器
    LVF listening virtual forwarder 監聽虛擬路由轉發器

術語

    虛擬路由器:
        Virtual Router,由一個Master路由器和多個Backup路由器組成,主機將虛擬路由器當作預設網關。
    虛擬路由器標識:
        VRID(0-255),唯一標識虛擬路由器,有相同的VRID的一組路由器構成一個虛擬路由器。
    master路由器:
        主設備,虛擬路由器中承擔報文轉發任務的路由器
    backup路由器:
        備用設備,master路由器出現故障時,能夠代替master路由器工作的路由器
    VIP :
        Virtual IP,虛擬路由器的ip地址,一個虛擬路由器可以有一個或多個ip地址
    VMAC :
        Virutal MAC (00-00-5e-00-01-VRID),一個虛擬路由器擁有一個虛擬MAC地址,虛擬MAC地址的格式為00-00-5E-00-01-{VRID}。
        通常情況,虛擬路由器回應ARP請求使用的是虛擬MAC地址,只有虛擬路由器做特殊配置的時候,才回應介面的真實MAC地址。
    priority :
        優先順序,VRRP根據優先順序來確定虛擬路由器中每台路由器的地址。
    通告:
        心跳,優先順序等;周期性
    工作方式:
        搶占式,非搶占式
    安全工作,認證:
        無認證
        簡單字元認證,預共用密鑰
        MD5
    工作模式:
        主/備:單虛擬路徑器
        主/主:主/備(虛擬路徑器1),備/主(虛擬路徑器2)

keepalived的主要作用

    主要用作RealServer的健康狀態檢查以及LoadBalance主機和BackUP主機之間failover的實現。
    vrrp 協議完成地址流動
    為vip 地址所在的節點生成ipvs 規則(在配置文件中預先定義)
    為ipvs 集群的各RS 做健康狀態檢測
    基於腳本調用介面通過執行腳本完成腳本中定義的功能,進而影響集群事務,以此支持nginx、haproxy等服務
    高可用web架構是LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可選可不選)

keepAlived有三個進程

    VRRP協議子進程(VRRP child),healthcheck子進程(Healthchecking child),WatchDog父進程。
    每個子進程都有其獨立的多連接I/O調度方式,這種設計一方面有利於優化VRRP調度的穩定性,同時也有利於避免進程自身可能存在的因素導致調度不穩定甚至失靈。
    1》父進程是全局進程,專門負責forked子進程並且監控子進程的狀態,也就是管理兩個子進程。
        父進程的監控框架被命名為WatchDog,其工作原理是,每個子進程open一個UNIX-doman socket套接字,然後父進程會連接這些套接字,並以5s為周期發送hello信息給子進程來檢查進程是否存活。
        如果不能發送hello了,其會重啟子進程。
        WatchDog有兩個好處,一個是所有的hello包是通過I/O多鏈路的方式調度給子進程,這種方式可以及時發現子進程的調度體繫結構是否死迴圈,另一個是使用sysV的信息檢測子進程的調度體系。
    2》VRRP協議子進程負責VRRP框架,負責實現VRRP協議及主從之間的通信。
    3》healthcheck子進程輔助檢查LVS和HTTP的健康狀態。

keepAlived組件

        參考文檔:
            http://www.keepalived.org/documentation.html
        核心組件:
            vrrp stack
            ipvs wrapper
            checkers
        控制組件:配置文件分析器
        IO 復用器
        記憶體管理組件
        Control Plane :
            Keepalived配置通過文件keepalived.conf完成。
            編譯器設計用於解析。
            解析器使用關鍵字樹層次結構將每個配置關鍵字映射到具體的處理程式。
            中央多級遞歸函數讀取配置文件並遍歷關鍵字樹。
            在解析期間,配置文件被轉換為內部存儲器表示。
        Scheduler - I/O Multiplexer :
            所有事件都安排在同一進程中。
            Keepalived是一個單一的過程。
            Keepalived是一個網路路由軟體,它對I / O非常封閉。
            這裡使用的設計是一個中央選擇(...),負責調度所有的內部任務。
            POSIX線程庫不被使用。
            該框架為網路目的提供了自己的線程抽象優化。
        Memory Management :
            這個框架提供了一些通用的記憶體管理功能,如分配,重新分配,發佈等。
            這個框架可以在兩種模式下使用:normal_mode&debug_mode。
            當使用debug_mode時,它提供了一種強有力的方法來消除和跟蹤記憶體泄漏。
            這個低級別環境通過跟蹤分配記憶體併發布來提供緩衝區欠運行保護。
            所有使用的緩衝區都是長度固定的,以防止最終的緩衝區溢出。
        Core components :
            此框架定義了所有代碼中使用的一些常用和全局庫。
            這些庫是:html解析,鏈接列表,定時器,向量,字元串形成,緩衝區轉儲,網路工具,守護進程管理,pid處理,低級TCP層4。
            這裡的目標是將代碼分解為最大限度地將代碼重覆,以增加模塊化。
        WatchDog:
            此框架提供子進程監視(VRRP和Healthchecking)。
            每個子進程接受連接到自己的看門狗unix域套接字。
            父進程向該子進程unix域套接字發送“hello”消息。
            Hello消息使用父節點上的I / O多路復用器發送,並使用I / O多路復用器進行接收/處理。
            如果父進程檢測到斷開的管道,如果子進程仍然存在並重新啟動,則使用sysV信號進行測試。
        Checkers :
            這是Keepalived的主要功能之一。
            Checkers負責realserver健康檢查。
            如果realserver存在,則進行檢查測試,此測試以二進位決定結束:從LVS拓撲中刪除或添加realserver。
            內部檢查器設計是實時網路軟體,它採用完全多線程的FSM設計(有限狀態機)。
            此檢查器堆棧提供LVS拓撲操作,以按層4到層5/7測試結果。
            它在一個由父進程監視的獨立進程中運行。
        VRRP Stack :
            其他最重要的Keepalived功能。
            VRRP(虛擬路由器冗餘協議:RFC2338)專註於導演接管,為路由器備份提供低級設計。
            它實現了完整的IETF RFC2338標準,具有LVS和防火牆設計的一些規定和擴展。
            它實現了vrrp_sync_group擴展,保證協議接管後的持久路由路徑。
            它使用MD5-96位密碼提供實現IPSEC-AH,用於保護協議廣告交換。
            有關VRRP的更多信息,請閱讀RFC。
            重要的事情:VRRP代碼可以在沒有LVS支持的情況下使用,它被設計為獨立使用。
            它運行在由父進程監視的獨立進程中。
        System call :
            該框架提供了啟動額外系統腳本的功能。
            它主要用於MISC檢查器。
            在VRRP框架中,它提供了在協議狀態轉換期間啟動額外腳本的功能。
            系統調用完成到一個分叉進程,不能全局調度定時器。
        Netlink Reflector :
            與IPVS包裝器相同。
            Keepalived工作與自己的網路介面表示。
            IP地址和介面標誌通過內核Netlink通道進行設置和監控。
            Netlink消息傳遞子系統用於設置VRRP VIP。
            另一方面,Netlink內核消息廣播功能用於反映我們的用戶空間Keepalived內部數據表示與介面相關的任何事件。
            因此,任何其他用戶空間(其他程式)netlink操作通過Netlink內核廣播(RTMGRP_LINK和RTMGRP_IPV4_IFADDR)反映到我們的Keepalived數據表示。
        SMTP:
            SMTP協議用於管理通知。
            它實現了IETF RFC821 使用多線程FSM設計。
            發送管理通知用於healthcheckers活動和VRRP協議狀態轉換。
            SMTP是常用的,可以與任何其他通知子系統(如GSM-SMS,尋呼機,...)進行介面
        IPVS wrapper :
            此框架用於向內核IPVS代碼發送規則。
            它提供了Keepalived內部數據表示和IPVS rule_user表示之間的轉換。
            它使用IPVS libipvs來保持與IPVS代碼的通用集成。
        IPVS:Wensong
            從LinuxVirtualServer.org OpenSource Project 提供的Linux內核代碼。
        NETLINK:
            由Alexey Kuznetov提供的Linux內核代碼,其非常好的高級路由框架和子系統功能。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 2 3 ' /> 4 ' CommandName="btnUpdate" /> 5 6 7 8 string Id = e.CommandArgument.ToString(); 9 ... ...
  • 1. 資料庫訪問性能優化 資料庫的連接和關閉 訪問資料庫資源需要創建連接、打開連接和關閉連接幾個操作。這些過程需要多次與資料庫交換信息以通過身份驗證,比較耗費伺服器資源。ASP.NET中提供了連接池(Connection Pool)改善打開和關閉資料庫對性能的影響。系統將用戶的資料庫連接放在連接池中 ...
  • 運行程式,如果資料庫已經存在,則刪除重建。當打開 連接以及單獨使用OpenAsync和ExecuteNonQueryAsync方法執行SQL命令時,我們使用了I/O非同步操作。 在這個任務完成後,我們創建了一張新的表並插入了一些數據,除了之前提到的方法,我們還使用了ExceuteS... ...
  • 2017晃眼就過去了,2018開工了。閑暇之餘,我想為自己訂個小小目標。 作為一名.NET菜逼程式員。 肯定是希望自己在2018學的更多,做的更多,具體的我想了想: 2017年工作也算比較順利,換了兩家公司,感覺任務都不是特別繁重,也很少加班。第一家公司是做WPF的,我之前沒有做過,但公司願意給我時 ...
  • 1、破解版下載&安裝 參考:https://bbs.feng.com/read htm tid 6939481.html 2、session導入 查看 SecureCRT Preferences General Configuration Paths ,就可以查看session具體目錄,將已有ses ...
  • 前言 今天部門老大開了一個會,期間說到,以後我們部署東西,都是純粹命令部署的,但是用習慣了windows的自己,剛開始用Linux真的是一種折磨,但是折磨歸折磨,想進步就要能夠忍受折磨,所以,還能怎麼辦呢?只好在虛擬機中裝一個沒有界面的centOS,然後藉助secureCRT進行相關連接了.... ...
  • HAProxy介紹 HAProxy HAProxy支持兩種主要的代理模式 HAProxy負載均衡策略非常多 HAProxy優缺點 HAProxy功能 HAProxy 組成 ...
  • 1、簡介: RCU(Read-Copy Update)是數據同步的一種方式,在當前的Linux內核中發揮著重要的作用。 RCU主要針對的數據對象是鏈表,目的是提高遍歷讀取數據的效率,為了達到目的使用RCU機制讀取數據的時候不對鏈表進行耗時的加鎖操作。這樣在同一時間可以有多個線程同時讀取該鏈表,並且允 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...