https://www.jianshu.com/p/b050d8861fc1
contents:
什麼是Keepalived
VRRP協議簡介
Keepalived原理
Keepalived配置檔案詳解
Keepalived配置示例
一 什麼是Keepalived?
保持存活,在網路裡面就是保持線上了,即高可用或熱備,用來防止單點故障(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)發生。VRRP協議是keepalived實現的基礎。

二 VRRP協議簡介
網路設計須考慮冗餘容災,包括線路冗餘,裝置冗餘等,防止網路存在單點故障。
在路由器或三層交換機處實現冗餘就顯得尤為重要,Keepalived就是巧用VRRP協議來實現高可用性(HA)
LAN客戶端判定哪個路由器應該為其到達目標主機的下一跳閘道器的方式有動態及靜態決策兩種方式,其中,常見的動態路由發現方式有如下幾種:
1 Proxy ARP
客戶端使用ARP協議獲取其想要到達的目標,而後,由某路由以其MAC地址響應此ARP請求;
2 Routing Protocol
客戶端監聽動態路由更新(如通過RIP或OSPF協議)並以之重建自己的路由表;
3 ICMP IRDP (Router Discovery Protocol)
客戶端 —— 客戶端主機執行一個ICMP路由發現客戶端程式;
動態路由發現協議不足:
引起客戶端一定的配置和處理方面的開銷,並且,如果路由器故障,切換至其它路由器的過程會比較慢。
解決此類問題的一個方案是為客戶端靜態配置預設路由裝置,這大大簡化了客戶端的處理過程,但也會帶來單點故障類的問題。預設閘道器故障時,LAN客戶端僅能實現本地通訊。
VRRP通過在一組路由器(一個VRRP組)之間共享一個虛擬IP(VIP)解決靜態配置問題,僅需客戶端以VIP作為其預設閘道器。

上圖顯示了一個基本的VLAN拓撲,其中:
Router A、B、C共同組成一個VRRP組,其VIP為10.0.0.1,配置在路由器A的物理介面上,因此A為master路由器,B和C為backup路由器。
VRRP組中,master(路由器A)負責負責轉發發往VIP地址的報文,客戶端A、B、C都以此VIP作為其預設閘道器。
一旦master故障,backup路由器B和C中具有最高優先順序的路由器將成為master並接管VIP地址,而當原來的master路由器A重新上線時,其將重新成為master路由器。
VRRP是一個“選舉”協議,它能夠動態地將一個虛擬路由器的責任指定至同一個VRRP組中的其它路由器上,從而消除了靜態路由配置的單點故障。
三 Keepalived原理
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狀態