keepalived是集群管理中保證集群高可用的乙個服務軟體,用來防止單點故障。
keepalived是以vrrp協議為實現基礎的,keepalive類似於ylayer3, 4 & 5交換機制的軟體,vrrp全稱virtual router redundancy protocol,即虛擬路由冗餘協議。虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將n臺提供相同功能的路由器組成乙個路由器組,這個組裡面有乙個master和多個backup,master上面有乙個對外提供服務的vip(該路由器所在區域網內其他機器的預設路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據vrrp的優先順序來選舉乙個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模組,分別是core、check和vrrp。core模組為keepalived的核心,負責主程序的啟動、維護以及全域性配置檔案的載入和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模組是來實現vrrp協議的。
keepalived體系結構拓撲圖
keepalived的體系結構從整體上分為兩層,分別是使用者空間層(user space)和核心空間層(kernel space)。
核心空間層處於最底層,它包括ipvs和netlink兩個模組,ipvs模組是keepalived引入的乙個第三方模組,通過ipvs可以實現基於ip的負載均衡集群。ipvs預設包含在lvs集群軟體中,在lvs集群中,ipvs安裝在乙個叫做director server的伺服器上,同時在director server上虛擬出乙個ip位址來對外提供服務,而使用者必須通過這個虛擬ip位址才能訪問服務。這個虛擬ip一般稱為lvs的vip,即virtual ip。訪問的請求首先經過vip到達director server,然後由director server從伺服器集群節點中選取乙個服務節點響應使用者的請求。 keepalived最初就是為lvs提供服務的,由於keepalived可以實現對集群節點的狀態檢測,而ipvs可以實現負載均衡功能,因此,keepalived借助於第三方模組ipvs就可以很方便地搭建一套負載均衡系統。
在keepalived中,ipvs模組是可配置的,如果需要負載均衡功能,可以在編譯keepalived時開啟負載均衡功能,反正,也可以通過配置編譯引數關閉。
netlink模組主要用於實現一些高階路由框架和一些相關的網路功能,完成使用者空間層netlink reflector模組發來的各種網路請求。
(1)watchdog
watchdog是計算機可靠性領域中乙個極為簡單又非常有效的檢測工具,它的工作原理是針對被監視的目標設定乙個計數器和乙個閾值,watchdog會自己增加此計數值,然後等待被監視的目標周期性地重置該計數值。一旦被監控目標發生錯誤,就無法重置此計數值,watchdog就會檢測到,於是就採取對應的恢復措施,例如重啟或關閉。
在linux中很早就引入了watchdog功能,而keepalived正是通過watchdog的執行機制來監控checkers和vrrp程序的。
(2)checkers
checkers是keepalived最基礎的功能,也是最主要的功能,可實現對伺服器執行狀態檢測和故障隔離。
(3)vrrp stack
vrrp stack是keepalived後來引入的vrrp功能,可以實現ha集群中失敗切換(failover)功能。keepalived通過vrrp功能再結合lvs負載均衡軟體即可部署一套高效能的負載均衡集群系統。
(5)netlink reflector
netlink reflector用來實現高可用集群中failover時虛擬ip(vip)的設定和切換。netlink reflector的所有請求最後都傳送到核心空間的netlink模組來完成。
keepalived.conf 配置的配置檔案都是以快(block)的形式組織,分別是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server;
###全域性配置:global_defs
! configuration file for keepalived
global_defs
#notification_email_from [email protected]
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id lvs_devel
}
解釋:
##vrrp配置
vrrp配置時keepalived核心,主要用來實現keepalived的高可用性功能。從結構上看:vrrpd配置有可以分為vrrp同步組和vrrp例項配置。
(1).vrrp_sync_group
vrrp_sync_group的應用場景為:如果路由有2個網段,乙個個網,乙個外網,每個網段開啟乙個vrrp例項,假設vrrp配置為檢查內網,那麼當外網出現問題時,vrrpd會認為自己是健康的,則不會傳送master和backup的切換,從而導致問題,同步組可以把兩個例項都放入sync group,這樣的話,group裡任何乙個例項出現問題都會發生切換。
vrrp_sync_group vg1
notify_backup "/usr/local/bin/vrrp.back arg1 arg2" keepalived進入backup狀態時需要執行指令碼
notify_master "/usr/local/bin/vrrp.mast arg1 arg2" keepalived進入master狀態時需要執行指令碼
notify_fault "/usr/local/bin/vrrp.fault arg1 arg2" keepalived進入fault狀態時需要執行指令碼
notify_stop "/usr/local/bin/vrrp.stop arg1 arg2" keepalived程式終止時需要執行指令碼
}vrrp_instance vi_1
virtual_ipaddress
}vrrp_instance vi_2
virtual_ipaddress
virtual_routes
nopreempt
preemtp_delay 300
}virtual_server 10.23.8.80 80
}real_server 172.18.1.12 80
}real_server 172.18.1.13 80 }}
vrrp配置以「vrrp_instance」作為標識,配置選項介紹:
lvs段的配置以「virtual_server」作為開始標識,此段內容有兩部分組成,分別是real_server段和健康檢測段。下面是virtual_server配置說明:
virtual_server 192.168.12.200 80
健康檢測段允許多種檢查方式,常見的有http_get、ssl_get、tcp_check、smtp_check、misc_check。
tcp_check檢測方式示例:
tcp_check
http_get和ssl_get檢測方式的示例:
}misc_check檢測方式的示例:
misc_check
misc健康檢查方式可以通過執行乙個外部程式來判斷real server節點的服務狀態,使用非常靈活。以下是常用的幾個選項的含義。 Keepalived工作原理
keepalived是以vrrp協議為實現基礎的,vrrp全稱virtual router redundancy protocol,即虛擬路由冗餘協議。虛擬路由冗餘協議,可以認為是實現路由器高可用的協議,即將n臺提供相同功能的路由器組成乙個路由器組,這個組裡面有乙個master和多個backup,m...
Keepalived工作原理
keepalived是以vrrp協議為實現基礎的 vrrp virtual router redundancy protocol 虛擬路由冗餘協議 可以認為是實現路由器高可用的協議,即將n臺提供相同功能的路由器組成乙個路由器組,這個組裡面有乙個master和多個backup,master上面有乙個對...
keepalived 工作原理
keepalived工作原理 keepalived是集群管理中保證集群高可用的乙個服務軟體,其功能類似於heartbeat,用來防止單點故障。keepalived是以vrrp協議為實現基礎的,vrrp全稱virtual router redundancy protocol,即虛擬路由冗餘協議。虛擬路...