keepalived工作原理和配置

2021-08-29 18:46:28 字數 4288 閱讀 9355

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主要有三個模組,分別是corecheckvrrp。core模組為keepalived的核心,負責主程序的啟動、維護以及全域性配置檔案的載入和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模組是來實現vrrp協議的。

keepalived體系結構拓撲圖

keepalived的體系結構從整體上分為兩層,分別是使用者空間層(user space)和核心空間層(kernel space)。

核心空間層處於最底層,它包括ipvsnetlink兩個模組,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,即虛擬路由冗餘協議。虛擬路...