日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

keepalive学习之软件设计

發布時間:2025/4/5 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keepalive学习之软件设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

軟件架構如下圖所示:

?

Keepalived 完全使用標準的ANSI/ISO C寫出. 該軟件主要圍繞一個中央I/O復用分發器而設計,這個I/O復用分發器提供網絡實時功能. 主要設計目標著重于從所有的模塊抽取一個公共模塊,所有模塊衍生于公共模塊, 這是核心庫產生的意義所在———降低代碼的重復.?另一方面,設計目標是使用安全和有保障的的代碼來保證生產的穩定性和健壯性。

為了保證的穩定性和健壯性, 后臺程序被分解為3個不同的進程. 全局設計思想是一個簡約的父進程來負責監控它創建的子進程。父進程創建了2個子進程,一個負責VRRP框架,一個負責健康檢查。每個子進程都有自己調度的I/O復用分發器,注意VRRP調用器Jitter的優先級高,因為VRRP調度比健康檢查更重要和敏感。 On the other hand this split design minimalize for healthchecking the usage of foreign librairies and minimalize its own action down to and idle mainloop in order to avoid malfunctions caused by itself. 父進程監控框架被稱為看門狗, 設計思路如下 : 每個子進程打開一個unix監聽套接字,當后臺程序啟動后,父進程連接到字進程的監聽套接字,然后周期的(5s)發送hello報文包給子進程。如果父進程不能發送hello報文包到已經建立連接的字進程監聽套接字,就直接重啟子進程。這種看門狗設計方式主要有兩個好處: 第一,所有從父進程發送到遠程連接到子進程的hello報文包都是通過I/O復用分發調度器來完成,這樣做的好處是它可以檢測到子進程調度框架的死循環。第二個好處是由使用sysV信號檢測子進程存活狀態帶來的。 keepalived運行時,可以查看到如下進程 :

?PID??
?111Keepalived<-- Parent process monitoring children
?112\_ Keepalived<-- VRRP child
?113\_ Keepalived<-- Healthchecking child

所有的原子模塊如下面介紹所示:

控制面板 :
Keepalived的配置通過keepalived.conf文件來完成. 一個編譯器用來解析這個文件.編譯器讀取關鍵字層次樹,關鍵字層次樹將配置文件中的關鍵字和響應的處理方法映射到一起。 一個中央、多級、遞歸函數讀取配置文件,轉換為關鍵字樹。在解析過程中,讀取配置文件到內存中。

內存管理 :

這個框架提供了一些通用的存儲器存取管理功能如分配,再分配,釋放,…等等。可以工作在兩種模式:normal_mode和debug_mode。當使用debug_mode提供強有力的辦法消除和跟蹤內存泄漏。這種底層環境級別通過追蹤內存的分派和釋放來提供低運行緩存保護。這些使用的緩存的長度是固定,原因是為了防止事件性的緩存泄露。

WatchDog :

這個框架提供了子進程的監控(VRRP和健康檢查)。每一個子進程打開自己的看門狗unix域套接字連接,父進程發送hello消息到子進程unix域套接字,hello消息經由父進程的I/O復用分發器發送到子進程的I/O復用分發器接受處理。如果子進程仍然存活,但父進程使用sysV系統監測到管道破壞時,就重啟子進程。

VRRP 棧:

keepalived另一個最重要功能。VRRP(虛擬路由冗余協議:?RFC2338)是一種選擇協議,它可以把一個虛擬路由器的責任動態分配到局域網上的?vrrp?路由器中的一臺。它為路由備份提供了底層設計。它不但完整實現了RFC2338得標準,還為lvs及防火墻提供了一些準備和擴展設計。它實現了vrrp_sync_group擴展來保證協議接管后的路由保持。它使用MD5-96位密碼設置實現了IPSEC-AH來保證廣告交換的安全性。VRRP更多消息請閱讀RFC.提醒:VRRP代碼可以單獨使用而不需要LVS支持,這個特性為獨立用戶設計。它運行在一個父進程監控的獨立子進程中。

Netlink 反射器:

類似于IPVS包裝器。keepalived有自己的網絡接口結構,核心netlink通道設置ip地址和接口標志和監控。netlink消息子系統用來設置VRRP的vip。netlink 核心消息廣播用來映射成事件相關接口的keepalived自定義用戶空間的數據結構。因此通過netlink核心廣播(RTMGRP_LINK & RTMGRP_IPV4_IFADDR),可以將任意的用戶空間(別的程序)的netlink操作映射到keeaplived 數據結構。

IPVS :
linux核心代碼,貢獻者 Wensong,LinuxVirtualServer.org?開源工程

NETLINK :

linux核心代碼,貢獻者Alexey Kuznetov,它擁有優美、先進的路由框架和子系統能力。

調度器 - I/O 復用器 :

所有的事件被調度到同一個進程進行處理。keepalive是單進程的。它是一個網絡路由軟件,和I/O密切相關。這里的設計方式是中央select(...),它負責調度所有內部task。沒有使用POSIX線程庫。因網絡原因,這個框架提供了自己的線程抽象優化。

核心組件 :

這個框架定義了可以在所有代碼中用到的一些通用的及一些全局庫,這些庫有:html解析,link-list,定時器,向量,字符串格式,buffer dump,網絡工具類,后臺程序管理,pid處理,底層4層tcp層。這里的全局庫通過工廠化方式盡量減少代碼的重復來提高系統的模塊性。

Checkers :

這是keepalived最重要的功能點之一。檢查器對真實服務器進行健康檢測。只要真實服務器存活著,一個檢測器就一直進行檢測,當從LVS拓撲結構中移除或者加入一個真實服務器時該檢測器停止工作。內部檢測器設計成一個網絡實時軟件,它完全使用多線程FSM(有限狀態機)設計。這個檢測器棧根據四層或者5/7層測試結果對LVS拓撲進行操作。?它運行在一個獨立的進程中,該進程被父進程所監控。

系統調用:

該框架提供啟動額外的系統腳本的能力。主要是用在MISC?檢查器。在VRRP框架協議狀態轉換中,提供執行額外的腳本的能力。系統調用通過生成一個子進程完成的,不干擾全局調度計時器。

SMTP :
SMTP協議用來管理通知,使用多線程有限狀態機設計,滿足IETF?RFC821?標準. 管理通知用來發送健康檢測活動和VRRP協議狀態轉換信息。SMTP非常通用,它也可以和其他通知子系統進行交互,如GSM短消息接口,尋呼機,…等等

IPVS 包裝器 :
該框架用來發送規則到IPVS核心代碼. 它作為keepalived內部數據結構和IPVS 規則_用戶結構的轉換橋梁。使用IPVS?libipvs和IPVS代碼保持通用的集成

?

官方文檔地址:http://www.keepalived.org/documentation.html

以上翻譯以官方為準,如翻譯不當,請輕拍。

?

轉載于:https://www.cnblogs.com/davidwang456/p/3540285.html

總結

以上是生活随笔為你收集整理的keepalive学习之软件设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。