首頁 >運維 >linux運維 >keepalived運作原理是什麼

keepalived運作原理是什麼

醉折花枝作酒筹
醉折花枝作酒筹原創
2021-06-24 11:08:293640瀏覽

keepalived運作原理是:根據TCP/IP參考模型的第三、第四層、第五層交換機制偵測每個服務節點的狀態,某個伺服器節點出現異常或故障,Keepalived將偵測到將發生的故障的伺服器節點從叢集系統中剔除。

keepalived運作原理是什麼

本教學操作環境:centos7系統、thinkpad t480電腦。

Keepalived簡介

Keepalived是Linux下一個輕量等級的高可用解決方案。高可用:廣義來講,是指整個系統的高可用行;狹義的來講就是主機的冗餘和接管。

它與HeartBeat實現類似的功能,都可以實現服務或網路的高可用,但是又有差別,HeartBeat是一個專業的、功能完善的高可用軟體,它提供HA軟體所需的基本功能,例如:心跳偵測、資源接管,偵測叢集中的服務,在叢集節點轉移共用IP位址的擁有者等等。

HeartBeat功能強大,但是部署和使用相對比較麻煩,與HeartBeat相比,Keepalived主要是透過虛擬路由冗餘來實現高可用功能,雖然它沒有HeartBeat功能強大,但是Keepalived部署和使用非常的簡單,所有設定只需要一個設定檔即可以完成。

Keepalived是什麼?

Keepalived起初是為LVS設計的,專門用來監控叢集系統中各個服務節點的狀態,它根據TCP/IP參考模型的第三、第四層、第五層交換機制偵測每個服務節點的狀態,如果某個伺服器節點出現異常,或工作發生故障,Keepalived將偵測到,並將出現的故障的伺服器節點從叢集系統中剔除,這些工作全部是自動完成的,不需要人工干涉,需要人工完成的只是修復故障的服務節點。

後來Keepalived又加入了VRRP的功能,VRRP(VritrualRouterRedundancyProtocol,虛擬路由冗餘協定)出現的目的是解決靜態路由出現的單點故障問題,透過VRRP可以實現網路不間斷穩定運行,因此Keepalvied一方面有伺服器狀態偵測和故障隔離功能,另一方面也有HAcluster功能。

健康檢查和失敗切換是keepalived的兩大核心功能。所謂的健康檢查,就是採用tcp三次握手,icmp請求,http請求,udp echo請求等方式對負載平衡器後面的實際的伺服器(通常是承載真實業務的伺服器)進行保活;而失敗切換主要是應用於配置了主備模式的負載平衡器,利用VRRP維持主備負載平衡器的心跳,當主負載平衡器出現問題時,由備負載平衡器承載對應的業務,從而在最大限度上減少流量損失,並提供服務的穩定性。

VRRP協定與工作原理

在現實的網路環境中。主機之間的通訊都是透過設定靜態路由或(預設閘道)來完成的,而主機之間的路由器一旦發生故障,通訊就會失效,因此這種通訊模式當中,路由器就成了一個單點瓶頸,為了解決這個問題,就引入了VRRP協定。

VRRP協定是一種容錯的主備模式的協議,保證當主機的下一跳路由出現故障時,由另一台路由器來代替故障的路由器進行工作,透過VRRP可以在網絡發生故障時透明的進行設備切換而不影響主機之間的資料通訊。

keepalived運作原理是什麼

虛擬路由器:虛擬路由器是VRRP備份群組中所有路由器的集合,它是一個邏輯概念,並不是正真存在的。從備份群組外面看備份群組中的路由器,感覺群組中的所有路由器就像一個 一樣,可以理解為在一個群組中: 主路由器 所有備份路由器=虛擬路由器。

虛擬路由器有一個虛擬的IP位址和MAC位址。主機將虛擬路由器當作預設閘道。虛擬MAC位址的格式為00-00-5E-00-01-{VRID}。通常情況下,虛擬路由器回應ARP請求使用的是虛擬MAC位址,只有虛擬路由器做特殊設定的時候,才會回應介面的真實MAC位址。

主路由器(MASTER):虛擬路由器透過虛擬IP對外提供服務,而在虛擬路由器內部同一時間只有一台實體路由器對外提供服務,這台提供服務的實體路由器稱為主路由器。一般情況下Master是由選舉演算法產生,它擁有對外服務的虛擬IP,提供各種網路功能,如:ARP請求,ICMP資料轉送等。

備份路由器(BACKUP):虛擬路由器中的其他實體路由器不擁有對外的虛擬IP,也不對外提供網路功能,僅接受MASTER的VRRP狀態通告訊息,這些路由器被稱為備份路由器。當主路由器失敗時,處於BACKUP角色的備援路由器將重新進行選舉,產生一個新的主路由器進入MASTER角色,繼續提供對外服務,整個切換對使用者來說是完全透明的。

VRRP選舉機制

VRRP路由器在運作過程中有三種狀態:

1. Initialize狀態: 系統啟動後就進入Initialize,此狀態下路由器不對VRRP封包做任何處理;

2. Master狀態;

3. Backup狀態;

一般主路由器處於Master狀態,備份路由器處於Backup狀態。

VRRP使用選舉機制來決定路由器的狀態,優先選舉:

1.VRRP群組中IP擁有者。如果虛擬IP位址與VRRP群組中的某台VRRP路由器IP位址相同,則此路由器為IP位址擁有者,這台路由器將會被定位主路由器。

2.比較優先權。如果沒有IP位址擁有者,則比較路由器的優先權,優先權的範圍是0~255,優先權大的作為主路由器

3.比較IP位址。在沒有Ip位址擁有者和優先權相同的情況下,IP位址大的作為主路由器。

如下圖所示,虛擬IP為10.1.1.254,在VRRP組中沒有IP位址擁有者,則比較優先級,很明顯RB和RA的優先權要大於RC,則比較RA和RB的IP位址,RB的IP位址大。所以RB為群組中的主路由器。

keepalived運作原理是什麼

工作過程

路由器使用VRRP 功能後,會根據優先順序決定自己在備份群組中的角色。優先順序高的路由器成為Master 路由器,優先順序低的成為Backup 路由器。 Master 擁有對外服務的虛擬IP,提供各種網路功能,並定期發送VRRP 封包,通知備份群組內的其他設備自行運作正常;Backup 路由器只接收Master 發送的訊息訊息,用來監控Master 的運作狀態。當Master 失效時,Backup 路由器進行選舉,優先順序高的Backup 將成為新的Master 。

在搶佔方式下,當Backup 路由器收到VRRP 封包後,會將自己的優先權與封包中的優先權進行比較。如果大於通告訊息中的優先權,則成為Master 路由器;否則將保持Backup狀態;

在非搶佔方式下,只要Master 路由器沒有故障,備份群組中的路由器始終保持Master 或Backup狀態,Backup 路由器即使隨後被配置了更高的優先權也不會成為Master 路由器;

如果Backup 路由器的定時器超時後仍未收到Master 路由器發送來的VRRP報文,則認為Master 路由器已經無法正常運作,此時Backup 路由器會認為自己是Master 路由器,並且對外發送VRRP訊息。備援群組內的路由器依優先權選出Master 路由 器,承擔封包的轉送功能。

Keepalvied的工作原理

Keepalived對伺服器運作狀態和故障隔離的工作原理:

Keepalived工作在TCP/IP參考模型的三層、四層、五層(實體層,連結層):

網路層(3):Keepalived透過ICMP協定向伺服器叢集中的每一個節點發送一個ICMP資料包(有點類似與Ping的功能),如果某個節點沒有回傳回應資料包,那麼認為該節點發生了故障,Keepalived將報告這個節點失效,並從伺服器叢集中剔除故障節點。

傳輸層(4):Keepalived在傳輸層裡利用了TCP協定的連接埠連接和掃描技術來判斷叢集節點的連接埠是否正常,例如對於常見的WEB伺服器80連接埠。或SSH服務22端口,Keepalived一旦在傳輸層探測到這些端口號沒有數據響應和數據返回,就認為這些端口發生異常,然後強制將這些端口所對應的節點從伺服器集群中剔除掉。

應用程式層(5):,Keepalived的運作方式也更加全面化和複雜化,使用者可以透過自訂Keepalived工作方式,例如:可以透過編寫程式或腳本來執行Keepalived,而Keepalived將根據使用者的設定參數偵測各種程式或服務是否允許正常,如果Keepalived的偵測結果和使用者設定的不一致時,Keepalived將把對應的伺服器從伺服器叢集中剔除。

Keepalived體系結構

Keepalived起初是為LVS設計的,由於Keeplalived可以實現對叢集節點的狀態偵測,而IPVS可以實現負載平衡功能,因此,Keepalived借助於第三方模組IPVS就可以很方便地建構一套負載平衡系統。在Keepalived當中IPVS模組是可設定的,如果需要負載平衡功能,可以在編譯Keepalived時開打負載平衡功能,也可以透過編譯參數關閉。

keepalived運作原理是什麼

SchedulerI/OMultiplexer是一個I/O復用分發調度器,它負載安排Keepalived所有內部的任務請求;

Memory Mngt是一個內存管理機制,這個框架提供了存取記憶體的一些通用方法;

Control Plane 是keepalived的控製版面,可以實現對設定檔編譯和解析;

Core componets 這部分主要包含了5個部分;

  • Watchdog:是電腦可靠領域中極為簡單又非常有效的偵測工具,Keepalived正是透過它監控Checkers和VRRP進程的。

  • Checkers:這是Keepalived最基礎的功能,也是最主要的功能,可以實現對伺服器運作狀態偵測和故障隔離。

  • VRRP Stack:這是keepalived後來引用VRRP功能,可以實現HA叢集中失敗切換功能。負責負載平衡器之間的失敗切換FailOver;

  • IPVS wrapper:這個是IPVS功能的一個實現,IPVSwarrper模組將可以設定好的IPVS規則發送的核心空間並且提供給IPVS模組,最終實現IPVS模組的負載功能。

  • Netlink Reflector:用來實現高可用叢集Failover時虛擬IP(VIP)的設定與切換,

##keepalived執行時,會啟動3個進程,分別為:core(核心進程),check和vrrp

- core:負責主進程的啟動,維護和全域設定檔的載入;

- check:負責健康檢查

- vrrp:用來實現vrrp協定

與heartbeat/corosync等比較

  Heartbeat、Corosync、Keepalived這三個叢集元件我們到底選哪個好,Heartbeat、Corosync是屬於同一類型,Keepalived與Heartbeat、Corosync,根本不是同一類型的。

Keepalived使用的vrrp虛擬路由冗餘協定方式;Heartbeat或Corosync是基於主機或網路服務的高可用方式;簡單的說就是,Keepalived的目的是模擬路由器的高可用,Heartbeat或Corosync的目的是實現Service的高可用。

所以一般Keepalived是實現前端高可用,常用的前端高可用的組合有,就是我們常見的LVS Keepalived、Nginx Keepalived、HAproxy Keepalived。而Heartbeat或Corosync是實現服務的高可用,常見的組合有Heartbeat v3(Corosync) Pacemaker NFS Httpd 實作Web伺服器的高可用、Heartbeat v3(Corosync) Pacemaker NFS MySQL 實作Web伺服器的高可用、Heartbeat v3(Corosync) Pacemaker NFS MySQL 實作Web伺服器的高可用。

總結一下,Keepalived中實現輕量級的高可用,一般用於前端高可用,且不需要共享存儲,一般常用於兩個節點的高可用。而Heartbeat(或Corosync)一般用於服務的高可用,且需要共享存儲,一般用於多節點的高可用。

(推薦學習:

linux教學

以上是keepalived運作原理是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn