KeepAlived簡介與原理

簡介: 

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

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

與HeartBeat相比,Keepalived主要是通過虛擬路由冗餘來實現高可用功能,雖然它沒有HeartBeat功能強大,但是Keepalived部署和使用非常的簡單,所有配置只需要一個配置文件即可以完成,Keepalived是一款用於保障服務高可用性的軟件,它能自動偵測服務器狀態、移出 故障服務器、切換到正常運行的服務器、添加恢復後的服務器到集羣中。

實現思路:

Keepalived是基於VRRP協議的實現,主要用在IP層、TCP層和應用層。

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

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

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

VRRP協議解決的問題

 在現實網絡中,兩臺服務器之間通常是沒有直接連接的,那麼A機如何選擇到達B機 的路由呢?

通常的解決方案有兩種:

1:在A機上使用動態路由協議 (問題:管理維護成本、是否支持等)

2:在A機上配置靜態路由(問題:路由器或默認的網關成單點、需重啓網絡等)

VRRP協議的目的就是解決路由單點故障問題。

VRRP (Virtual Router Redundancy Protocol),虛擬路由冗餘協議,是解決局域網 中配置靜態網關出現單點故障的路由協議。 在具有多播或廣播能力的局域網中,藉助VRRP能在某臺路由器出現故障時仍然提供 高可靠的缺省鏈路,有效避免單一鏈路發生故障後網絡中斷的問題,而無需修改動態路由 協議、路由發現協議等配置信息。

名詞解釋 1:

VRRP路由器:物理的路由器,上面運行了實現VRRP協議的VRRPD程序

2:VRRP虛擬路由器:邏輯上的路由器,通常由多臺路由器組成,可以看成是一個VRRP路由器 池,對外看起來是一個路由器,就是那個虛擬的路由器,其標識稱爲VRID(範圍是0-255)

3:Master和Backup:一個虛擬路由裏面的多個路由器,並不是同時工作的,工作的那臺稱爲 Master,其他的就是Backup。

對VRRP協議的理解

1:VRRP是一種選擇協議,它可以把一個虛擬路由器的職責,動態轉交給Master進行處理

2:VRRP是一種路由容錯協議,也可以叫做備份路由協議。當Master宕掉後,虛擬路由將啓用 備份路由器,從而實現網絡通信可用

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,這種選舉角色切換非常之快,因而保證了服務的持續可用性。

VRRP協議工作機制

1:路由器開啓VRRP功能後,會根據優先級確定出Master

2:Master會通過IP多播包的形式來發送公告報文,Backup會接收到這些報文

3:如果是搶佔式:Backup會跟發送報文的Master比較優先級,如果Backup優先級更 高,那麼Backup會搶佔成爲Master,而Master會讓位成爲Backup

4:如果是非搶佔式:只要Master沒有故障,不會出現新的Master。

5:如果備份路由器在連續三個公告間隔內收不到VRRP公告,或收到優先級爲0的公 告的話,就會按照競選協議來選出新的Master,以保證服務的可用

 VRRP負載分擔

在實際組網中一般會進行VRRP負載分擔方式的設置。負載分擔方式是指多 臺路由器同時承擔業務,避免設備閒置。 同一臺路由器可以加入多個備份組,在不同組中有不同的優先級,使得該 路由器可以在一個組中作爲Master,在其他的備份組中作爲Backup

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

在Keepalived當中IPVS模塊是可配置的,如果需要負載均衡功能,可以在編譯Keepalived時開打負載均衡功能,也可以通過編譯參數關閉。

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