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狀態