Keepailved詳細介紹

原創做品,容許轉載,轉載時請務必以超連接形式標明文章 原始出處 、做者信息和本聲明。不然將追究法律責任。http://wangzan18.blog.51cto.com/8021085/1725517算法

1、Keepalived介紹
服務器

    Keepalived是Linux下一個輕量級的高可用解決方案,它與Heartbeat、RoseHA實現的功能相似,均可以實現服務或者網絡的高可用,單是又有差異,Heartbeat是一個專業的、功能完善的高可用軟件,它提供了HA軟件所需的基本功能,好比心跳檢測和資源接管,監測集羣中的系統服務,在集羣節點間轉移共享IP地址的全部者等,Heartbeat功能強大,可是部署和使用相對比較麻煩;與Heartbeat相比,Keepalived主要是經過虛擬路由冗餘來實現高可用功能,雖然它沒有Heartbeat功能強大,但Keepalived部署和使用很是簡單,全部配置只需一個配置文件便可完成。網絡

2、Keepalived是什麼app

    Keepalived起初是爲LVS設計的,專門用來監控集羣中各個服務節點的狀態。它根據TCP/IP參考模型的第3、第四和第五層交換機制檢測每一個服務節點的狀態,若是某個服務節點出現異常,或工做出現故障,Keepalived將檢測到,並將出現故障的服務節點從集羣系統中剔除,而在故障節點恢復正常後,Keepalived又能夠自動將此服務節點從新加入服務器集羣中,這些工做所有自動完成,不須要人工干涉,須要人工完成的只是修復出現故障的服務節點。負載均衡

    Keepalived後來又加入了VRRP的功能,VRRP(VirtualRouterRedundancyProtocol,虛擬路由冗餘協議)出現的目的是解決靜態路由出現的單點故障問題,經過VRRP能夠實現網絡不間斷穩定運行。所以Keepalived一方面具備服務器狀態檢測和故障隔離功能,另外一方面也具備HA cluster功能。框架

3、VRRP協議與工做原理ide

一、協議模塊化

    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選舉狀態。

二、MASTER選舉

   若是對外的虛擬路由器IP就是路由器自己配置的IP地址的話,該路由器始終都是MASTER;不然若是不具有虛擬IP的話,將進行MASTER選舉,各路由器都宣告本身是MASTER,發送VRRP通告信息;若是收到其餘機器的發來的通告信息的優先級比本身高,將轉回BACKUP狀態;若是優先級相等的話,將比較路由器的實際IP,IP值較大的優先權高;不過若是對外的虛擬路由器IP就是路由器自己的IP的話,該路由器始終將是MASTER,這時的優先級值爲255。

4、Keepalived體系結構

    keepalived也是模塊化設計,不一樣模塊複雜不一樣的功能,下面是keepalived的組件

  • core:是keepalived的核心,複雜主進程的啓動和維護,全局配置文件的加載解析等

  • check:負責healthchecker(健康檢查),包括了各類健康檢查方式,以及對應的配置的解析包括LVS的配置解析

  • vrrp:VRRPD子進程,VRRPD子進程就是來實現VRRP協議的

  • libipfwc:iptables(ipchains)庫,配置LVS會用到

  • libipvs*:配置LVS會用到

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

wKiom1ZyIeWx_uEQAAJ9-ohqITI333.jpg

    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的配置文件解析比較特殊,它並非一次解析因此模塊的配置,而是隻有用到某模塊時才解析相應的配置。

    Core components:這部分是Keepalived的核心組件,包含了一系列功能模塊,主要有WatchDog、Checkers、VRRP Stack、IPVS wrapper和Netlink Reflector。

  • WatchDog

    WatchDog是計算機可靠領域中一個極爲簡單又很是有效的檢測工具,它的工做原理是針對被監視的目標設置一個計數器和一個閥值,WatchDog會本身增長次計數值,而後等待被監視的目標週期性的重置該計數值。一旦被監控目標發生錯誤,就沒法重置此計數值,WatchDog就會檢測到,因而採起對應的恢復措施,例如重啓或關閉。

    在Linux中很早就引入了WatchDog功能,而Keepalived正是經過WatchDog的運行機制來監控Checkers和VRRP進程的。

  • Checkers

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

  • VRRP Stack

    這是Keepalived後來引入的VRRP功能,能夠實現HA集羣失敗切換(Failover)功能。Keepalived經過VRRP功能再結合LVS負載均衡軟件便可部署一個高性能的負載均衡集羣系統。

  • IPVS wrapper

    這是IPVS功能的一個實現。IPVS wrapper模塊能夠將設置好的IPVS規則發送到內核空間並提交給IPVS模塊,最終實現IPVS模塊的負載均衡功能。

  • Netlink Reflector

    用來實現高可用集羣中Failover時虛擬IP(VIP)的設置和切換。Netlink Reflector的全部請求最後都發送到內核空間層的NETLINK模塊來完成。


    keepalived啓動後會有三個進程

  • 父進程:內存管理,子進程管理等等

  • 子進程:VRRP子進程

  • 子進程:healthchecker子進程

    有圖可知,兩個子進程都被系統WatchDog看管,兩個子進程各自複雜本身的事,healthchecker子進程複雜檢查各自服務器的健康程度,例如HTTP,LVS等等,若是healthchecker子進程檢查到MASTER上服務不可用了,就會通知本機上的兄弟VRRP子進程,讓他刪除通告,而且去掉虛擬IP,轉換爲BACKUP狀態。

相關文章
相關標籤/搜索