Keepailved詳細介紹

2021-09-05 08:48:07 字數 3639 閱讀 7873

一、keepalived介紹

keepalived是linux下乙個輕量級的高可用解決方案,它與heartbeat、roseha實現的功能類似,都可以實現服務或者網路的高可用,單是又有差別,heartbeat是乙個專業的、功能完善的高可用軟體,它提供了ha軟體所需的基本功能,比如心跳檢測和資源接管,監測集群中的系統服務,在集群節點間轉移共享ip位址的所有者等,heartbeat功能強大,但是部署和使用相對比較麻煩;與heartbeat相比,keepalived主要是通過虛擬路由冗餘來實現高可用功能,雖然它沒有heartbeat功能強大,但keepalived部署和使用非常簡單,所有配置只需乙個配置檔案即可完成。

二、keepalived是什麼

keepalived起初是為lvs設計的,專門用來監控集群中各個服務節點的狀態。它根據tcp/ip參考模型的第

三、第四和第五層交換機制檢測每個服務節點的狀態,如果某個服務節點出現異常,或工作出現故障,keepalived將檢測到,並將出現故障的服務節點從集群系統中剔除,而在故障節點恢復正常後,keepalived又可以自動將此服務節點重新加入伺服器集群中,這些工作全部自動完成,不需要人工干涉,需要人工完成的只是修復出現故障的服務節點。

keepalived後來又加入了vrrp的功能,vrrp(virtualrouterredundancyprotocol,虛擬路由冗餘協議)出現的目的是解決靜態路由出現的單點故障問題,通過vrrp可以實現網路不間斷穩定執行。因此keepalived一方面具有伺服器狀態檢測和故障隔離功能,另一方面也具有ha cluster功能。

三、vrrp協議與工作原理

1、協議

vrrp協議是為消除在靜態預設路由環境下的預設路由器單點故障引起的網路失效而設計的主備模式的協議,使得在發生故障而進行裝置功能切換時可以不影響內外資料通訊,不需要再修改內部網路的網路引數。vrrp協議需要具有ip位址備份,優先路由選擇,減少不必要的路由器間通訊等功能。

vrrp協議將兩台或多台路由器裝置虛擬成乙個裝置,對外提供虛擬路由器ip(乙個或多個),而在路由器組內部,如果實際擁有這個對外ip的路由器如果工作正常的話就是master,或者是通過演算法選舉產生,master實現針對虛擬路由器ip的各種網路功能,如arp請求,icmp,以及資料的**等;其他裝置不擁有該ip,狀態是backup,除了接收master的vrrp狀態通告資訊外,不執行對外的網路功能。當主機失效時,backup將接管原先master的網路功能。

配置vrrp協議時需要配置每個路由器的虛擬路由器id(vrid)和優先權值,使用vrid將路由器進行分組,具有相同vrid值的路由器為同乙個組,vrid是乙個0~255的正整數;同一組中的路由器通過使用優先權值來選舉master,優先權大者為master,優先權也是乙個0~255的正整數。

vrrp協議使用多播資料來傳輸vrrp資料,vrrp資料使用特殊的虛擬源mac位址傳送資料而不是自身網絡卡的mac位址,vrrp執行時只有master路由器定時傳送vrrp通告資訊,表示master工作正常以及虛擬路由器ip(組),backup只接收vrrp資料,不傳送資料,如果一定時間內沒有接收到master的通告資訊,各backup將宣告自己成為master,傳送通告資訊,重新進行master選舉狀態。

2、master選舉

如果對外的虛擬路由器ip就是路由器本身配置的ip位址的話,該路由器始終都是master;否則如果不具備虛擬ip的話,將進行master選舉,各路由器都宣告自己是master,傳送vrrp通告資訊;如果收到其他機器的發來的通告資訊的優先順序比自己高,將轉回backup狀態;如果優先順序相等的話,將比較路由器的實際ip,ip值較大的優先權高;不過如果對外的虛擬路由器ip就是路由器本身的ip的話,該路由器始終將是master,這時的優先順序值為255。

四、keepalived體系結構

keepalived也是模組化設計,不同模組複雜不同的功能,下面是keepalived的元件

注意,keepalived和lvs完全是兩碼事,只不過他們各負其責相互配合而已。

keepalived的體系結構從整體上分為兩層,分別是使用者空間層(user space)和核心空間層(kernel space)。

核心空間層處於最底層,它包括ipvs和netlink兩個模組。ipvs模組是keepalived引入的乙個第三方模組,通過ipvs可以實現基於ip的負載均衡集群,ipvs預設包含在lvs集群軟體中。在lvs集群中,ipvs可以安裝在一台叫做director server的伺服器上,同時director server上虛擬出乙個ip位址對外提供服務,而使用者必須通過這個虛擬ip位址才能訪問服務。這個虛擬ip一般稱為lvs的vip,訪問的請求首先經過vip到達director server,然後由director server從伺服器集群節點中選取乙個服務節點響應使用者的請求。

netlink模組主要用於實現一些高階路由框架和一些相關的網路功能,完成使用者空間層netlink reflector模組發來的各種網路請求。

在使用者空間層,keepalived又分為4個部分,分別是scheduler i/o multiplexer、memory management、control plane和core components。

scheduler i/o multiplexer:是乙個i/o復用分發排程器,它負責安排keepalived所以內部的任務請求。

memory management:是乙個記憶體管理機制,這個框架提供了訪問記憶體的一些通用方法。

control plane:是keepalived的控制面板,可以實現對配置檔案進行編譯和解析,keepalived的配置檔案解析比較特殊,它並不是一次解析所以模組的配置,而是只有用到某模組時才解析相應的配置。

watchdog是計算機可靠領域中乙個極為簡單又非常有效的檢測工具,它的工作原理是針對被監視的目標設定乙個計數器和乙個閥值,watchdog會自己增加次計數值,然後等待被監視的目標週期性的重置該計數值。一旦被監控目標發生錯誤,就無法重置此計數值,watchdog就會檢測到,於是採取對應的恢復措施,例如重啟或關閉。

在linux中很早就引入了watchdog功能,而keepalived正是通過watchdog的執行機制來監控checkers和vrrp程序的。

這是keepalived最基礎的功能,也是最主要的功能,可實現對伺服器執行狀態檢測和故障隔離。

這是keepalived後來引入的vrrp功能,可以實現ha集群失敗切換(failover)功能。keepalived通過vrrp功能再結合lvs負載均衡軟體即可部署乙個高效能的負載均衡集群系統。

用來實現高可用集群中failover時虛擬ip(vip)的設定和切換。netlink reflector的所有請求最後都傳送到核心空間層的netlink模組來完成。

keepalived啟動後會有三個程序

有圖可知,兩個子程序都被系統watchdog看管,兩個子程序各自複雜自己的事,healthchecker子程序複雜檢查各自伺服器的健康程度,例如http,lvs等等,如果healthchecker子程序檢查到master上服務不可用了,就會通知本機上的兄弟vrrp子程序,讓他刪除通告,並且去掉虛擬ip,轉換為backup狀態。

Keepailved詳細介紹

一 keepalived介紹 keepalived是linux下乙個輕量級的高可用解決方案,它與heartbeat roseha實現的功能類似,都可以實現服務或者網路的高可用,單是又有差別,heartbeat是乙個專業的 功能完善的高可用軟體,它提供了ha軟體所需的基本功能,比如心跳檢測和資源接管,...

robots txt詳細介紹

robots.txt基本介紹 當乙個搜尋機械人 有的叫搜尋蜘蛛 訪問乙個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜尋機械人就會按照該檔案中的內容來確定訪問的範圍 如果該檔案不存在,那麼搜尋機械人就沿著鏈結抓取。另外,robots.txt必須放置在乙個站點的根目錄下,...

nginx phases 詳細介紹

我們知道,nginx 請求分為下面幾個階段 下面對這些過程詳細介紹 一 ngx http post read phase do nothing 二 ngx http server rewrite phase do nothing 三 ngx http find config phase 根據請求的位...