001.Keepalived簡介

一 Keepalived 定義

Keepalived 是一個基於VRRP協議來實現的LVS服務高可用方案,能夠解決靜態路由出現的單點故障問題。一個LVS服務會有2臺服務器運行Keepalived,一臺爲主服務器(MASTER),一臺爲備份服務器(BACKUP),可是對外表現爲一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候,備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。

二 VRRP 協議簡介

在實際網絡環境中,主機之間的通訊一般都是經過配置靜態路由協議完成的。但配置靜態路由卻常常成爲單點故障。VRRP的目的就是爲了解決靜態路由單點故障問題,VRRP經過一競選(election)協議來動態的將路由任務交給LAN中虛擬路由器中的某臺VRRP路由器。

三 VRRP 工做機制

在一個VRRP虛擬路由器中,有多臺物理的VRRP路由器協同工做,同一時間只有一臺稱爲MASTER的負責路由工做,其它的都是BACKUP,MASTER並不是一成不變,VRRP讓每一個VRRP路由器參與競選,最終獲勝的就是MASTER,它擁有對外服務的虛擬IP,提供各類網絡功能,如數據轉發、ICMP、ARP。而其餘路由器不擁有對外的虛擬IP,也不提供對外網絡功能,僅僅接受MMASTER的VRRP狀態通告信息,這些路由器稱爲備份路由器。
VRRP經過競選協議來實現虛擬路由器的功能,全部的協議報文都是經過IP多播(multicast)包(多播地址224.0.0.18)形式發送的。虛擬路由器由VRID(範圍0-255)和一組IP地址組成,對外表現爲一個周知的MAC地址。因此,在一個虛擬路由器中,無論誰是MASTER,對外都是相同的MAC和IP(稱之爲VIP)。客戶端主機並不須要由於MASTER的改變而修改本身的路由配置,對客戶端來講,這種主從的切換是透明的。
在一個虛擬路由器中,只有做爲MASTER的VRRP路由器會一直髮送VRRP通告信息(VRRPAdvertisement message),BACKUP不會搶佔MASTER,除非它的優先級(priority)更高。當MASTER不可用時(BACKUP收不到通告信息),多臺BACKUP中優先級最高的這臺會被搶佔爲MASTER。這種搶佔是很是快速的(<1s),以保證服務的連續性。因爲安全性考慮,VRRP包使用了加密協議進行加密。

四 VRRP 工做流程

(1).初始化

路由器啓動時,若是路由器的優先級是255(最高優先級,路由器擁有路由器地址),要發送VRRP通告信息,併發送廣播ARP信息通告路由器IP地址對應的MAC地址爲路由虛擬MAC,設置通告信息定時器準備定時發送VRRP通告信息,轉爲MASTER狀態;不然進入BACKUP狀態,設置定時器檢查定時檢查是否收到MASTER的通告信息。

(2).Master

  1. 設置定時通告定時器;
  2. 用VRRP虛擬MAC地址響應路由器IP地址的ARP請求;
  3. 轉發目的MAC是VRRP虛擬MAC的數據包;
  4. 若是是虛擬路由器IP的擁有者,將接受目的地址是虛擬路由器IP的數據包,不然丟棄;
  5. 當收到shutdown的事件時刪除定時通告定時器,發送優先權級爲0的通告包,轉初始化狀態;
  6. 若是定時通告定時器超時時,發送VRRP通告信息;
  7. 收到VRRP通告信息時,若是優先權爲0,發送VRRP通告信息;不然判斷數據的優先級是否高於本機,或相等並且實際IP地址大於本地實際IP,設置定時通告定時器,復位主機超時定時器,轉BACKUP狀態;不然的話,丟棄該通告包。

(3).Backup

  1. 設置主機超時定時器;
  2. 不能響應針對虛擬路由器IP的ARP請求信息;
  3. 丟棄全部目的MAC地址是虛擬路由器MAC地址的數據包;
  4. 不接受目的是虛擬路由器IP的全部數據包;
  5. 當收到shutdown的事件時刪除主機超時定時器,轉初始化狀態;
  6. 主機超時定時器超時的時候,發送VRRP通告信息,廣播ARP地址信息,轉MASTER狀態;
  7. 收到VRRP通告信息時,若是優先權爲0,表示進入MASTER選舉;不然判斷數據的優先級是否高於本機,若是高的話認可MASTER有效,復位主機超時定時器;不然的話,丟棄該通告包。

(4).ARP查詢處理

當內部主機經過ARP查詢虛擬路由器IP地址對應的MAC地址時,MASTER路由器回覆的MAC地址爲虛擬的VRRP的MAC地址,而不是實際網卡的MAC地址,這樣在路由器切換時讓內網機器覺察不到;而在路由器從新啓動時,不能主動發送本機網卡的實際MAC地址。若是虛擬路由器開啓的ARP代理 (proxy_arp)功能,代理的ARP也迴應VRRP虛擬MAC地址。

五 Keepalived工做原理

Keepalived工做在TCP/IP模型的第3、四和五層,即網絡層、傳輸層和應用層。其運行機制以下:
網絡層,Keepalived採用ICMP協議向服務器集羣中的每一個節點發送一個ICMP的數據包,若是某個節點沒有返回響應數據包,則認爲此節點發生了故障,Keepalived將報告次節點失效,並從服務器集羣中剔除故障節點。
傳輸層,Keepalived利用你TCP的端口鏈接和掃描技術來判斷集羣節點是否正常。如常見的web服務默認端口80,ssh默認端口22等。Keepalived一旦在傳輸層探測到相應端口沒用響應數據返回,則認爲此端口發生異常,從而將此端口對應的節點從服務器集羣中剔除。
應用層,能夠運行FTP、telnet、smtp、dns等各類不一樣類型的高層協議,Keepalived的運行方式也更加全面化和複雜化,用戶能夠經過自定義Keepalived的工做方式,來設定監測各類程序或服務是否正常,若監測結果與設定的正常結果不一致,將此服務對應的節點從服務器集羣中剔除。

六 Keepalived體系架構

008
Keepalived的功能體系結構,大體分兩層:用戶空間(user space)和內核空間(kernel space)。
內核空間:主要包括IPVS:IP虛擬服務器,用於實現網絡服務的負載均衡;
NETLINK:提供高級路由及其餘相關的網絡功能。
用戶空間:
  • WatchDog:負載監控checkers和VRRP進程的情況
  • VRRP Stack:負載負載均衡器之間的失敗切換FailOver,若是隻用一個負載均稀器,則VRRP不是必須的。
  • Checkers:負責真實服務器的健康檢查healthchecking,是keepalived最主要的功能。換言之,能夠沒有VRRP Stack,但健康檢查healthchecking是必定要有的。
  • IPVS wrapper:用戶發送設定的規則到內核ipvs代碼
  • Netlink Reflector:用來設定vrrp的vip地址等。
注意:Keepalived的全部功能是配置keepalived.conf文件來實現的。
參考文檔:http://www.keepalived.org/
相關文章
相關標籤/搜索