什麼是Keepalived VRRP協議簡介 Keepalived原理 Keepalived配置文件詳解 Keepalived配置示例
保持存活,在網絡裏面就是保持在線了,即高可用或熱備,用來防止單點故障(單點故障是指一旦某一點出現故障就會致使整個系統架構的不可用)發生。VRRP協議是keepalived實現的基礎。服務器
網絡設計須考慮冗餘容災,包括線路冗餘,設備冗餘等,防止網絡存在單點故障。
在路由器或三層交換機處實現冗餘就顯得尤其重要,Keepalived就是巧用VRRP協議來實現高可用性(HA)網絡
LAN客戶端斷定哪一個路由器應該爲其到達目標主機的下一跳網關的方式有動態及靜態決策兩種方式,其中,常見的動態路由發現方式有以下幾種:架構
客戶端使用ARP協議獲取其想要到達的目標,然後,由某路由以其MAC地址響應此ARP請求;負載均衡
客戶端監聽動態路由更新(如經過RIP或OSPF協議)並以之重建本身的路由表;模塊化
客戶端 —— 客戶端主機運行一個ICMP路由發現客戶端程序;設計
動態路由發現協議不足:
引發客戶端必定的配置和處理方面的開銷,而且,若是路由器故障,切換至其它路由器的過程會比較慢。
解決此類問題的一個方案是爲客戶端靜態配置默認路由設備,這大大簡化了客戶端的處理過程,但也會帶來單點故障類的問題。默認網關故障時,LAN客戶端僅能實現本地通訊。3d
VRRP經過在一組路由器(一個VRRP組)之間共享一個虛擬IP(VIP)解決靜態配置問題,僅需客戶端以VIP做爲其默認網關。code
上圖顯示了一個基本的VLAN拓撲,其中:router
Router A、B、C共同組成一個VRRP組,其VIP爲10.0.0.1,配置在路由器A的物理接口上,所以A爲master路由器,B和C爲backup路由器。blog
VRRP組中,master(路由器A)負責負責轉發發往VIP地址的報文,客戶端A、B、C都以此VIP做爲其默認網關。
一旦master故障,backup路由器B和C中具備最高優先級的路由器將成爲master並接管VIP地址,而當原來的master路由器A從新上線時,其將從新成爲master路由器。
VRRP是一個「選舉」協議,它可以動態地將一個虛擬路由器的責任指定至同一個VRRP組中的其它路由器上,從而消除了靜態路由配置的單點故障。
keepalived也是模塊化設計,不一樣模塊複雜不一樣的功能,下面是keepalived的組件
core check vrrp libipfwc libipvs-2.4 libipvs-2.6 core:是keepalived的核心,複雜主進程的啓動和維護,全局配置文件的加載解析等 check:負責healthchecker(健康檢查),包括了各類健康檢查方式,以及對應的配置的解析包括LVS的配置解析 vrrp:VRRPD子進程,VRRPD子進程就是來實現VRRP協議的 libipfwc:iptables(ipchains)庫,配置LVS會用到 libipvs*:配置LVS會用到
注意,keepalived和LVS徹底是兩碼事,只不過他們各負其責相互配合而已
keepalived啓動後會有三個進程
父進程:內存管理,子進程管理等等 子進程:VRRP子進程 子進程:healthcheckers子進程
兩個子進程都被系統WatchDog看管,兩個子進程各自負責本身的事;
healthcheckers子進程複雜檢查各自服務器的健康程度,例如HTTP,LVS等等;
若是healthcheckers子進程檢查到MASTER上服務不可用了,就會通知本機上的兄弟VRRP子進程,讓他刪除通告,而且去掉虛擬IP,轉換爲BACKUP狀態