keepalived和heartbeat區別

Keepalived使用的vrrp協議方式,虛擬路由冗餘協議Virtual Router Redundancy Protocol

Heartbeat是基於主機或網絡的服務的高可用方式


keepalived目的是模擬路由器的雙機

heartbeat目的是用戶service的雙機


lvs的高可用建議用keepavlived

業務的高可用用heartbeat


1、Keepalived使用更簡單:從安裝、配置、使用、維護等角度上對比,Keepalived都比Heartbeat要簡單得多,尤其是Heartbeat2.1.4後拆分成3個子項目,安裝、配置、使用都比較複雜,尤其是出問題的時候,都不知道具體是哪個子系統出問題了;而Keepalived只有1個安裝文件、1個配置文件,配置文件也簡單很多;

2、Heartbeat功能更強大:Heartbeat雖然複雜,但功能更強大,配套工具更全,適合做大型集羣管理,而Keepalived主要用於集羣倒換,基本沒有管理功能;

3、協議不同:Keepalived使用VRRP協議進行通信和選舉,Heartbeat使用心跳進行通信和選舉;Heartbeat除了走網絡外,還可以通過串口通信,貌似更可靠;

4、使用方式基本類似:如果要基於兩者設計高可用方案,最終都要根據業務需要寫自定義的腳本,Keepalived的腳本沒有任何約束,隨便怎麼寫都可以;Heartbeat的腳本有約束,即要支持service start/stop/restart這種方式,而且Heartbeart提供了很多默認腳本,簡單的綁定ip,啓動apache等操作都已經有了;

建議:優先使用Keepalived,當Keepalived不夠用的時候再選擇Heartbeat


Keepalived介紹

Keepalived是一個基於VRRP協議來實現的WEB 服務高可用方案,可以利用其來避免單點故障。一個WEB服務至少會有2臺服務器運行Keepalived,一臺爲主服務器(MASTER),一臺爲備份服 務器(BACKUP),但是對外表現爲一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候, 備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。

     +--------------------------VIP(192.168.0.7)---------------------+

     |                                   |                           |   

     |                                   |                           |   

server(MASTER) <---------------------keepalived----------------> server(BACKUP)

(192.168.0.1)                                                  (192.168.0.2)


keepalived是VRRP的完美實現,因此在介紹keepalived之前,先介紹一下VRRP的原理。


VRRP協議簡介

在現實的網絡環境中,兩臺需要通信的主機大多數情況下並沒有直接的物理連接。對於這樣的情況,它們之間路由怎樣選擇?主機如何選定到達目的主機的下一跳路由,這個問題通常的解決方法有二種:

·        在主機上使用動態路由協議(RIP、OSPF等)

·        在主機上配置靜態路由

很明顯,在主機上配置路態路由是非常不切實際的,因爲管理、維護成本以及是否支持等諸多問題。配置靜態路由就變得十分流行,但路由器(或者說默認網關default gateway)卻經常成爲單點。

VRRP的目的就是爲了解決靜態路由單點故障問題。

VRRP通過一競選(election)協議來動態的將路由任務交給LAN中虛擬路由器中的某臺VRRP路由器。


工作機制

在一個VRRP虛擬路由器中,有多臺物理的VRRP路由器,但是這多臺的物理的機器並不能同時工作,而是由一臺稱爲MASTER的負責路由工作,其它的都是BACKUP,MASTER並非一成不變,VRRP讓每個VRRP路由器參與競選,最終獲勝的就是MASTER。MASTER擁有一些特權,比如 擁有虛擬路由器的IP地址,我們的主機就是用這個IP地址作爲靜態路由的。擁有特權的MASTER要負責轉發發送給網關地址的包和響應ARP請求。

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包使用了加密協議進行加密。


初始化:

路由器啓動時,如果路由器的優先級是255(最高優先級,路由器擁有路由器地址),要發送VRRP通告信息,併發送廣播ARP信息通告路由器IP地址對應的MAC地址爲路由虛擬MAC,設置通告信息定時器準備定時發送VRRP通告信息,轉爲MASTER狀態;

否則進入BACKUP狀態,設置定時器檢查定時檢查是否收到MASTER的通告信息。


主機:

主機狀態下的路由器要完成如下功能:

設置定時通告定時器;

用VRRP虛擬MAC地址響應路由器IP地址的ARP請求;

轉發目的MAC是VRRP虛擬MAC的數據包;

如果是虛擬路由器IP的擁有者,將接受目的地址是虛擬路由器IP的數據包,否則丟棄;

當收到shutdown的事件時刪除定時通告定時器,發送優先權級爲0的通告包,轉初始化狀態;

如果定時通告定時器超時時,發送VRRP通告信息;

收到VRRP通告信息時,如果優先權爲0,發送VRRP通告信息;否則判斷數據的優先級是否高於本機,或相等而且實際IP地址大於本地實際IP,設置定時通告定時器,復位主機超時定時器,轉BACKUP狀態;否則的話,丟棄該通告包;


備機:

備機狀態下的路由器要實現以下功能:

設置主機超時定時器;

不能響應針對虛擬路由器IP的ARP請求信息;

丟棄所有目的MAC地址是虛擬路由器MAC地址的數據包;

不接受目的是虛擬路由器IP的所有數據包;

當收到shutdown的事件時刪除主機超時定時器,轉初始化狀態;

主機超時定時器超時的時候,發送VRRP通告信息,廣播ARP地址信息,轉MASTER狀態;

收到VRRP通告信息時,如果優先權爲0,表示進入MASTER選舉;否則判斷數據的優先級是否高於本機,如果高的話承認MASTER有效,復位主機超時定時器;否則的話,丟棄該通告包;


ARP查詢處理

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章