Keepalived詳細介紹簡介

1.一、Keepalived簡介

   Keepalived是Linux下一個輕量級別的高可用解決方案。高可用(High Avalilability,HA),其實兩種不一樣的含義:廣義來說,是指整個系統的高可用行,狹義的來說就是之主機的冗餘和接管,html

   它與HeartBeat RoseHA 實現相同相似的功能,均可以實現服務或者網絡的高可用,可是又有差異,HeartBeat是一個專業的、功能完善的高可用軟件,它提供了HA 軟件所需的基本功能,好比:心跳檢測、資源接管,檢測集羣中的服務,在集羣節點轉移共享IP地址的全部者等等。HeartBeat功能強大,可是部署和使用相對比較麻煩,算法

與HeartBeat相比,Keepalived主要是經過虛擬路由冗餘來實現高可用功能,雖然它沒有HeartBeat功能強大,可是Keepalived部署和使用很是的簡單,全部配置只須要一個配置文件便可以完成,服務器

1.二、Keepalived是什麼?

Keepalived起初是爲LVS設計的,專門用來監控集羣系統中各個服務節點的狀態,它根據TCP/IP參考模型的第3、第四層、第五層交換機制檢測每一個服務節點的狀態,若是某個服務器節點出現異常,或者工做出現故障,Keepalived將檢測到,並將出現的故障的服務器節點從集羣系統中剔除,這些工做所有是自動完成的,不須要人工干涉,須要人工完成的只是修復出現故障的服務節點。網絡

  後來Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虛擬路由冗餘協議)出現的目的是解決靜態路由出現的單點故障問題,經過VRRP能夠實現網絡不間斷穩定運行,所以Keepalvied 一方面具備服務器狀態檢測和故障隔離功能,另一方面也有HA cluster功能,下面介紹一下VRRP協議實現的過程。app

1.三、VRRP協議與工做原理

在現實的網絡環境中。主機之間的通訊都是經過配置靜態路由或者(默認網關)來完成的,而主機之間的路由器一旦發生故障,通訊就會失效,所以這種通訊模式當中,路由器就成了一個單點瓶頸,爲了解決這個問題,就引入了VRRP協議。負載均衡

熟悉網絡的學員對VRRP協議應該不陌生,它是一種主備模式的協議,經過VRRP能夠在網絡發生故障時透明的進行設備切換而不影響主機之間的數據通訊,這其中涉及到兩個概念:物理路由器和虛擬路由器。框架

  VRRP能夠將兩臺或者多臺物理路由器設備虛擬成一個虛擬路由,這個虛擬路由器經過虛擬IP(一個或者多個)對外提供服務,而在虛擬路由器內部十多個物理路由器協同工做,同一時間只有一臺物理路由器對外提供服務,這臺物理路由設備被成爲:主路由器(Master角色),通常狀況下Master是由選舉算法產生,它擁有對外服務的虛擬IP,提供各類網絡功能,如:ARP請求,ICMP 數據轉發等,並且其它的物理路由器不擁有對外的虛擬IP,也不提供對外網絡功能,僅僅接收MASTER的VRRP狀態通告信息,這些路由器被統稱爲「BACKUP的角色」,當主路由器失敗時,處於BACKUP角色的備份路由器將從新進行選舉,產生一個新的主路由器進入MASTER角色,繼續提供對外服務,整個切換對用戶來講是徹底透明的。工具

 

   每一個虛擬路由器都有一個惟一的標識號,稱爲VRID,一個VRID與一組IP地址構成一個虛擬路由器,在VRRP協議中,全部的報文都是經過IP多播方式發送的,而在一個虛擬路由器中,只有處於Master角色的路由器會一直髮送VRRP數據包,處於BACKUP角色的路由器只會接受Master角色發送過來的報文信息,用來監控Master運行狀態,一通常不會發生BACKUP搶佔的狀況,除非它的優先級更高,而當MASTER不可用時,BACKUP也就沒法收到Master發過來的信息,因而就認定Master出現故障,接着多臺BAKCUP就會進行選舉,優先級最高的BACKUP將稱爲新的MASTER,這種選舉角色切換很是之快,於是保證了服務的持續可用性。性能

 

1.四、Keepalvied的工做原理

   上面咱們介紹了Keepalived經過VRRP實現高可用性的工做原理,而Keepalived做爲一個高性能集羣軟件,它還能實現對集羣中服務器運行狀態的監控以及故障隔離,下面咱們介紹一下Keepalived對服務器運行狀態和故障隔離的工做原理。ui

     Keepalived工做在TCP/IP 參考模型的 三層、四層、五層,也就是分別爲:網絡層,

傳輸層和應用層,根據TCP、IP參數模型隔層所能實現的功能,Keepalived運行機制以下:

     在網絡層:咱們知道運行這4個重要的協議,互聯網絡IP協議,互聯網絡可控制報文協議ICMP、地址轉換協議ARP、反向地址轉換協議RARP在網絡層Keepalived在網絡層採用最多見的工做方式是經過ICMP協議向服務器集羣中的每個節點發送一個ICMP數據包(有點相似與Ping的功能),若是某個節點沒有返回響應數據包,那麼認爲該節點發生了故障,Keepalived將報告這個節點失效,並從服務器集羣中剔除故障節點

     在傳輸層:提供了兩個主要的協議:傳輸控制協議TCP和用戶數據協議UDP,傳輸控制協議TCP能夠提供可靠的數據輸出服務、IP地址和端口,表明TCP的一個鏈接端,要得到TCP服務,須要在發送機的一個端口和接收機的一個端口上創建鏈接,Keepalived在傳輸層裏利用了TCP協議的端口鏈接和掃描技術來判斷集羣節點的端口是否正常,好比對於常見的WEB服務器80端口。或者SSH服務22端口,Keepalived一旦在傳輸層探測到這些端口號沒有數據響應和數據返回,就認爲這些端口發生異常,而後強制將這些端口所對應的節點從服務器集羣中剔除掉。

 

在應用層:能夠運行FTP,TELNET,SMTP,DNS等各類不一樣類型的高層協議,Keepalived的運行方式也更加全面化和複雜化,用戶能夠經過自定義Keepalived工做方式,例如:能夠經過編寫程序或者腳原本運行Keepalived,而Keepalived將根據用戶的設定參數檢測各類程序或者服務是否容許正常,若是Keepalived的檢測結果和用戶設定的不一致時,Keepalived將把對應的服務器從服務器集羣中剔除

 

 

1.五、Keepalived體系結構

                       Keepalived體系結構圖

 

Keepalived起初是爲LVS設計的,因爲Keeplalived能夠實現對集羣節點的狀態檢測,而IPVS能夠實現負載均衡功能,所以,Keepalived藉助於第三方模塊IPVS就能夠很方便地搭建一套負載均衡系統,在這裏有個誤區,因爲Keepalived能夠和IPVS一塊兒很好的工做,不少學員都覺得Keepalived就是一個負載均衡軟件,這種理解是錯誤,

在Keepalived當中IPVS模塊是可配置的,若是須要負載均衡功能,能夠在編譯Keepalived時開打負載均衡功能,也能夠經過編譯參數關閉。

   NetLINK模塊主要用於實現一些高級路由框架和一些相關參數的網絡功能,完成用戶空間層Netlink Reflector模塊發來的各類網絡請求。

    這個圖咱們能夠看到用戶空間層,是創建在內核空間層之上的,

(1)用戶空間層,主要有4個部分:

       Scheduler I/O Multiplexer 是一個I/O複用分發調度器,它負載安排Keepalived全部內部的任務請求,

       Memory Mngt 是一個內存管理機制,這個框架提供了訪問內存的一些通用方法       

       Control Plane  是keepalived的控制版面,能夠實現對配置文件編譯和解析

       Core componets  這部分主要保護呢了5個部分

             Watchdog:是計算機可靠領域中極爲簡單又很是有效的檢測工具,Keepalived正是經過它監控Checkers和VRRP進程的。

             Checkers: 這是Keepalived最基礎的功能,也是最主要的功能,能夠實現對服務器運行狀態檢測和故障隔離。

             VRRP Stack: 這時keepalived後來引用VRRP功能,能夠實現HA集羣中失敗切換功能。

             IPVS wrapper: 這個是IPVS功能的一個實現,IPVS warrper模塊將能夠設置好的IPVS規則發送的內核空間而且提供給IPVS模塊,最終實現IPVS模塊的負載功能。

             Netlink Reflector:用來實現高可用集羣Failover時虛擬IP(VIP)的設置和切換 ,

Netlink Reflector的全部請求最後都發送到內核空間層的NETLINK 模塊來完成。

更多請參考:http://blog.chinaunix.net/uid-26575352-id-3529109.html

相關文章
相關標籤/搜索