keepalived學習總結
「Keepalived是一個C語言寫的路由軟體,它的主要目標是向linux系統和基礎組件提供簡單而健壯的負載均衡和高可用設施。負載均衡框架依賴於廣泛使用的LVS(IPVS)內核,它提供了layer4(傳輸層)負載均衡。keepalived實現了一組檢測器(checkers),根據負載均衡器的健康狀態,動態的、自適應的維護管理它們。另一方面,高可用性是通過VRRP協議實現,VRRP協議是路由器(router,具有路由功能的軟硬體,比如LVS)failover的基石。此外,keepalived實現了一組hooks,hooks關係到一些VRRP狀態機,這些狀態機提供了底層的、高速的協議交互。Keepalived框架能夠獨立使用(LVS不是必須的),或者與其他系統一起來提供彈性的基礎架構。」
簡單而言,keepalived基於VRRP協議,實現了路由器故障轉移,解決了負載均衡器的單點故障問題,實現了高可用性。我們需要首先簡單了解一下VRRP協議的基本工作原理。
VRRP,全稱「Virtual Router Redundancy Protocol」,即虛擬路由器冗餘協議。路由器將會把接收到的數據包發送給目標伺服器,如果目標地址不在本網段,則路由給下一個路由器;當路由器故障時,那麼本網段內所有以此路由器作為默認路由的下一跳的主機將無法與外部通訊,即單點問題。VRRP就是為了解決此問題而提出的,它為具有多播組播或者廣播能力的區域網設計。
VRRP將區域網中的一組路由器組成一個虛擬路由器,它包括一個Master(活躍的)和多個Backup(備份)路由器,為了便於理解,這裡的路由器,我們暫且認為是部署keepalived的伺服器節點。每個路由器都有自己的IP,此外還有一個VIP,此IP由Master持有,網路主機與持有VIP的路由器通訊。如果Master故障,那麼backup將通過選舉策略選出一個新的Master,重新持有此虛擬IP,繼續向網路內的主機提供路由服務,從而避免了路由器的單點問題。
VRRP路由器組中,按照優先順序選擇Master,優先順序為0~255,0表示VIP持有者主動放棄Master角色;優先順序較高的路由器將會綁定到VIP上,此後Master將周期性的發送VRRP通知報文(廣播),如果backup在連續三個通知間隔時間內收不到VRRP或者收到優先順序為0的通知,則啟動新一輪的VRRP選舉。
為了安全,VRRP路由器組中的路由器,都需要明確指定VRID和報文加密的密碼,以避免惡意修改VRRP通知信息。這些我們都可以在keepalived配置方式中得以體現。
一、Keepalived簡介
Keepalived由原生的ANS/IOS C編寫,此軟體圍繞一個中央IO復用器,以提供實時的網路設計;設計的重點就是在各個元素之間提供模塊化,這就是創建一個核心libary的原因,以移除重複的代碼。另一方面,主要目標就是創建一個安全、穩定的代碼,以確保產品的健壯性和穩定性。
為了確保其健壯性和穩定性,守護進程(daemon)被拆分為3個不同的進程;整體設計是一個輕量級的父進程負責監控2個forked子進程。這兩個子進程,一個負責VRRP框架,另一負責健康監測(healthchecking);每個子進程都有自己的調度IO復用器,這樣VRRP調度的抖動(jitter)進行了優化,因為VRRP調度,比healthcheckers更加合理和重要;同時這種設計,最小化了健康監測進程對外部librairies的使用,最小化了子進程自己的操作和空主輪詢(idle mainloop)以避免內部故障。父進程監控框架稱之為watchdog,設計方式為:每個子進程打開一個accpet unix domain socket,父進程與這些socket建立鏈接,並間歇性發送「hello」數據包,如果父進程不能通過鏈接將hello數據包發給子進程,那麼它只需簡單的重啟子進程即可。watchdog的這種設計有2個好處,首先所有的hello數據包均是由父進程通過IO復用器調度器(scheduler)發送給子進程,這樣它可以檢測到子進程調度框架的死鎖(然後重啟它們),此外可以通過「sysV」信號檢測死的子進程。
Keepalived可以不需要LVS的支持,即可單獨使用。
二、安裝與配置
宿主機器:Centos 2.6.32 64位。(通過「uname -r」指令查看)
1、下載最新版keepalived,解壓。
2、執行「./configure --prefix=/usr/local/keepalived」,此處最好指定prefix的路徑,以便維護。如果此指令正常執行,應該輸出如下信息
Java代碼※初二地理會考總結
※絲語:馬盤金星總結
※最主要的幾種私家庭院景觀設計風格總結
※工作寫作總結範文
※全!神經內科臨床經驗總結