青蛙學Linux—高可用集羣軟件Keepalived

Keepalived是Linux下一個輕量級的高可用解決方案,它與HACMP、RoseHA實現的功能相似,均可以實現服務或網絡的高可用,可是又有差異:HACMP是一個專業的、功能完善的高可用軟件,它提供了HA軟件所需的基本功能,好比心跳檢測和資源接管、監測集羣中的系統服務、在集羣節點間轉移共享IP地址的全部者等,HACMP功能強大,可是部署和使用相對比較麻煩,同時也是商業化軟件;與HACMP相比,Keepalived主要是經過虛擬路由冗餘來實現高可用功能,雖然它沒有HACMP功能強大,但Keepalived部署和使用很是簡單,全部配置只須要一個配置文件便可。html

一、Keepalived的用途

Keepalived起初是爲LVS設計的,專門用來監控LVS負載均衡集羣中各個後端節點的狀態。它根據layer3,4 & 5交換機制檢測每一個服務節點的狀態,若是某個後端節點出現異常,Keepalived將檢測到,並將故障節點從集羣中剔除,而在故障節點恢復正常以後,Keepalived又可自動將節點從新加入集羣。c++

Keepalived後來加入了VRRP功能(Virtual Route Redundancy Protocol,虛擬路由器冗餘協議,用於解決路由器出現的單點故障),使其也具備了HA功能。這樣,Keepalived不只能夠用於LVS負載均衡集羣的節點監控,也能夠用於實現高可用。算法

二、VRRP協議與工做原理

在現實的網絡環境中,主機之間的通訊都是經過配置靜態路由(默認網關)完成的,而主機之間的路由器一旦出現故障,通訊就會失敗。所以,在這種通訊模式中,路由器就成了一個單點瓶頸。爲了解決這個問題,引入了VRRP協議。shell

VRRP將兩臺或多臺物理路由器虛擬成一個虛擬路由器,這個虛擬路由器經過虛擬IP對外提供服務。而在虛擬路由器內部,多個物理路由器協同工做,同一時間只有一臺物理路由器對外提供服務,這臺路由器被稱爲主路由器(Master角色)。通常狀況下Master由選舉算法產生,擁有對外服務的虛擬IP,提供各類服務。而其餘物理路由器不擁有虛擬IP,不提供網絡服務,僅僅接收Master的VRRP狀態通告信息,這些路由器被稱爲備份路由器(Backup角色)。當主路由失效時,處於Backup角色的備份路由將從新選舉出一臺新的主路由進入Master角色對外提供服務。後端

三、Keepalived體系結構

Keepalived是一個高度模塊化的軟件,結構簡單,但擴展性很強,下圖是官方給出的體系結構拓撲圖:網絡

2

Keepalived從總體上分爲兩層,分別是用戶空間(User Space)和內核空間(Kernel Space)。負載均衡

內核空間處於最底層,包括IPVS和NETLINK兩個模塊。IPVS包含在LVS集羣軟件中,能夠實現基於IP的負載均衡,而Keepalived最初就是用於爲LVS提供節點狀態檢測功能的,IPVS模塊可經過編譯時的參數來打開和關閉;NETLINK模塊主要用於實現一些高級路由框架和一些相關的網絡功能,完成用戶空間Netlink Reflector模塊發來的各類網絡請求。框架

用戶空間位於內核空間之上,Keepalived的全部具體功能都在這裏實現。模塊化

四、安裝Keepalived

Keepalived能夠經過YUM安裝,也可使用源碼進行安裝。設計

從Keepalived官網http://www.keepalived.org/上能夠下載到Keepalived的源碼包。

4.1YUM安裝Keepalived

使用如下命令經過YUM安裝Keepalived:

yum install keepalived

4.二、源碼安裝Keepalived

這裏以Keepalived最新版本2.0.12爲例介紹源碼安裝Keepalived。

經過YUM安裝依賴環境:

[root@localhost keepalived-2.0.12]# yum install gcc gcc-c++ wget popt-devel openssl openssl-devel libnl libnl-devel libnl3 libnl3-devel libnfnetlink-devel

解壓源碼包後,進入源碼目錄,執行configure,這裏不指定Keepalived的安裝路徑,僅指定Keepalived配置文件路徑:

[root@localhost keepalived-2.0.12]# ./configure --sysconf=/etc
  • --sysconf:指定Keepalived配置文件目錄,此時會在/etc下生成keepalived目錄,配置文件就位於該目錄內

configure運行完畢無報錯後執行:

[root@localhost keepalived-2.0.12]# make && make install

命令運行完成無報錯,Keepalived就安裝成功了。

可使用service(init)systemclt(systemd)管理Keepalived服務。

相關文章
相關標籤/搜索