Keepalived 是使用C語言編寫的路由熱備軟件
,該項目軟件起初是專門爲LVS
負載均衡設計的,用來管理並監控LVS集羣系統中各個服務節點的狀態,後來又加入了能夠實現高可用的VRRP
功能。
所以,Keepalived除了可以管理LVS軟件外,還能夠做爲其餘服務(例如:Nginx
,Haproxy
,MySQL
等)的高可用解決方案軟件。php
Keepalived 主要是經過VRRP
協議實現高可用功能的。VRRP是Virtual Router Redundancy Protocol(虛擬路由器冗餘協議
)的縮寫,VRRP出現的目的就是爲了解決靜態路由單點故障問題的,它可以保證當個別節點宕機時,整個網絡能夠不間斷地運行。nginx
因此,Keepalived一方面具備配置管理LVS的功能,同時還具備對LVS下面節點進行健康檢查的功能,另外一方面也可實現系統網絡服務的高可用功能。web
咱們以一次面試爲例,解答Keepalived的工做原理。如下爲對面試官的表述:面試
Keepalived 高可用之間是經過VRRP通訊的,所以我從VRRP開始給您講起:apache
(1)VRRP,也就是虛擬路由冗餘協議,它的出現就是爲了解決靜態路由的單點故障。編程
(2)VRRP是經過一種競選協議機制將路由任務交給某臺VRRP路由器。服務器
(3)VRRP用 IP多播的方式(默認多播地址(224.0_0.18))實現高可用對 之間通訊。微信
(4)工做時主節點發包,備節點接包,當備節點接收不到主節點發的數據包時,就啓動接管程序接管主節點的資源。備節點能夠有多個,經過優先級競選,但通常Keepalived系統工做中都是一對。網絡
(5)VRRP使用了加密協議加密數據,但Keepalived官方目前仍是推薦用明文的方式配置認證類型和密碼。架構
介紹完 VRRP,接下來介紹一下 Keepalived服務的工做原理:
(1)Keepalived高可用之間是經過VRRP
進行通訊的,VRRP是經過競選機制來肯定主備的,主的優先級高於備,所以,工做時主會優先得到全部的資源,備節點處於等待狀態,當主掛了的時候,備節點就會接管主節點的資源,而後頂替主節點對外提供服務。
(2)在Keepalived服務之間,只有做爲主的服務器會一直髮送VRRP廣播包,告訴備它還活着,此時備不會搶佔主,當主不可用時,即備監聽不到主發送的廣播包時,就會啓動相關服務接管資源,保證業務的連續性。接管速度最快能夠小於1
秒。
(1)管理 VIP
VIP即對外提供服務的浮動IP, 會在 LVS 之間漂移
(2)監控 LVS分發器
運行在主分發器的 Keepalived 會以組播的形式向網絡中宣告本身,即主分發器還活着,備用節點能收到。當備用節點,在一個時間單位中收不到組播,備用節點會認爲主 LVS 掛了,開始接手主分發器工做,把 VIP 分配給本身。
(3)管理RS
RS,RealServer。即真正爲用戶提供服務的服務器。好比:web、mail、FTP服務等。
Keepalived 會每隔一個時間段去作一次相似於訪問的操做如:
探針: elinks http://192.168.1.251 –dump
經典高可用web架構: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可選)
歡迎關注微信公衆號『開源Linux
』,專一於分享Linux/Unix相關內容,包括Linux運維、Linux系統開發、網絡編程、以及虛擬化和雲計算等技術乾貨。後臺回覆『學習
』,送你一套學習Linux的系列書籍,期待與你相遇。