001.Keepalived簡介
阿新 • • 發佈:2018-12-23
一 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的改變而修改自己的路由配置,對客戶端來說,這種主從的切換是透明的。四 VRRP 工作流程
(1).初始化
路由器啟動時,如果路由器的優先順序是255(最高優先順序,路由器擁有路由器地址),要傳送VRRP通告資訊,併發送廣播ARP資訊通告路由器IP地址對應的MAC地址為路由虛擬MAC,設定通告資訊定時器準備定時傳送VRRP通告資訊,轉為MASTER狀態;否則進入BACKUP狀態,設定定時器檢查定時檢查是否收到MASTER的通告資訊。(2).Master
- 設定定時通告定時器;
- 用VRRP虛擬MAC地址響應路由器IP地址的ARP請求;
- 轉發目的MAC是VRRP虛擬MAC的資料包;
- 如果是虛擬路由器IP的擁有者,將接受目的地址是虛擬路由器IP的資料包,否則丟棄;
- 當收到shutdown的事件時刪除定時通告定時器,傳送優先權級為0的通告包,轉初始化狀態;
- 如果定時通告定時器超時時,傳送VRRP通告資訊;
- 收到VRRP通告資訊時,如果優先權為0,傳送VRRP通告資訊;否則判斷資料的優先順序是否高於本機,或相等而且實際IP地址大於本地實際IP,設定定時通告定時器,復位主機超時定時器,轉BACKUP狀態;否則的話,丟棄該通告包。
(3).Backup
- 設定主機超時定時器;
- 不能響應針對虛擬路由器IP的ARP請求資訊;
- 丟棄所有目的MAC地址是虛擬路由器MAC地址的資料包;
- 不接受目的是虛擬路由器IP的所有資料包;
- 當收到shutdown的事件時刪除主機超時定時器,轉初始化狀態;
- 主機超時定時器超時的時候,傳送VRRP通告資訊,廣播ARP地址資訊,轉MASTER狀態;
- 收到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模型的第三、四和五層,即網路層、傳輸層和應用層。其執行機制如下: 網路層,Keepalived採用ICMP協議向伺服器叢集中的每個節點發送一個ICMP的資料包,如果某個節點沒有返回響應資料包,則認為此節點發生了故障,Keepalived將報告次節點失效,並從伺服器叢集中剔除故障節點。 傳輸層,Keepalived利用你TCP的埠連線和掃描技術來判斷叢集節點是否正常。如常見的web服務預設埠80,ssh預設埠22等。Keepalived一旦在傳輸層探測到相應埠沒用響應資料返回,則認為此埠發生異常,從而將此埠對應的節點從伺服器叢集中剔除。 應用層,可以執行FTP、telnet、smtp、dns等各種不同型別的高層協議,Keepalived的執行方式也更加全面化和複雜化,使用者可以通過自定義Keepalived的工作方式,來設定監測各種程式或服務是否正常,若監測結果與設定的正常結果不一致,將此服務對應的節點從伺服器叢集中剔除。六 Keepalived體系架構
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地址等。