1. 程式人生 > >Keepalived 介紹 原理

Keepalived 介紹 原理

後端 優先級 問題 決定 接收 執行 單獨 而是 狀態

keepalived是什麽:

這裏先和前面的LVS 聯系一下,我們平時使用一臺機器運行 LVS 進行數據的轉發,這裏會有兩個問題
1.如果這臺LVS 故障了怎麽辦?整個集群系統都會停止工作
2.LVS後端一般有多臺 real server ,如果其中的一臺(多臺)real server 故障了 怎麽辦?

keepalived 就可以解決上面兩個問題,對應功能1 和 功能2

功能1.使用VRRP協議 來控制一組高可用(HA) 主備系統,一臺master工作,一臺slave熱備;master失效後slave立即接替工作
功能2.監控 工作集群中的主機 ,如果有一臺服務器死機,或工作出現故障,Keepalived將檢測到,並將有故障的web服務器從系統中剔除


當服務器工作正常後Keepalived自動將web服務器加入到服務器群中,這裏使用的還是 LVS的 ipvsadm

keepalived是集群管理中保證集群高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障。
但是它一般不會單獨出現,而是與其它負載均衡技術(如lvs、haproxy、nginx)一起工作來達到集群的高可用。

1. Keepalived 是一個基於VRRP協議來實現的LVS服務高可用方案,可以利用其來避免單點故障。一個LVS服務會有2臺服務器運行Keepalived,一臺為主服務器(MASTER),一臺為備份服務器(BACKUP),但是對外表現為一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候, 備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。Keepalived是VRRP的完美實現.

2.Keepalived 檢測web服務器的狀態,如果有一臺web服務器死機,或工作出現故障,Keepalived將檢測到,並將有故障的web服務器從系統中剔除,當web服務器工作正常後Keepalived自動將web服務器加入到服務器群中,這些工作全部自動完成,不需要人工幹涉,需要人工做的只是修復故障的web服務器。

keepalived工作原理:

(功能1)keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議。

虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master和多個backup。master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip)。
master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。


MASTER實現針對虛擬路由器IP的各種網絡功能,如ARP請求,ICMP,以及數據的轉發等;其他設備不擁有該IP,狀態是BACKUP,除了接收MASTER的VRRP狀態通告信息外,不執行對外的網絡功能。當主機失效時,BACKUP將接管原先MASTER的網絡功能
配置VRRP協議時需要配置每個路由器的虛擬路由器ID(VRID)和優先權值,使用VRID將路由器進行分組,
具有相同VRID值的路由器為同一個組,VRID是一個0~255的正整數;
同一組中的路由器通過使用優先權值來選舉MASTER,優先權大者為MASTER,優先權也是一個0~255的正整數(255最大)。

MASTER選舉:
如果對外的虛擬路由器IP就是路由器本身配置的IP地址的話,該路由器始終都是MASTER;
否則如果不具備虛擬IP的話,將進行MASTER選舉,各路由器都宣告自己是MASTER,發送VRRP通告信息;
如果收到其他機器的發來的通告信息的優先級比自己高,將轉回BACKUP狀態;
如果優先級相等的話,將比較路由器的實際IP,IP值較大的優先權高;
不過如果對外的虛擬路由器IP就是路由器本身的IP的話,該路由器始終將是MASTER,這時的優先級值為255。

keepalived主要有三個模塊,分別是core、check和vrrp。
core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。
check負責健康檢查,包括常見的各種檢查方式。
vrrp模塊是來實現VRRP協議的。

(功能2)其工作在OSI七層協議的Layer3,4,7層。工作在IP/TCP協議棧的IP層,TCP層,及應用層。
原理分別如下:
Layer3網絡層:
Keepalived使用Layer3的方式工作式時,Keepalived會定期向服務器群中的服務器發送一個ICMP的數據包(既我們平時用的Ping程序),如果發現某臺服務的IP地址沒有激活,Keepalived便報告這臺服務器失效,並將它從服務器群中剔除,這種情況的典型例子是某臺服務器被非法關機。
Layer3的方式是以服務器的IP地址是否有效作為服務器工作正常與否的標準。
Layer4傳輸層:
Layer4主要以TCP端口的狀態來決定服務器工作正常與否。如web server的服務端口一般是80,如果Keepalived檢測到80端口沒有啟動,則Keepalived將把這臺服務器從服務器群中剔除。

Layer7應用層:
Layer7就是工作在具體的應用層了,比Layer3,Layer4要復雜一點,在網絡上占用的帶寬也要大一些。Keepalived將根據用戶的設定檢查服務器程序的運行是否正常,如果與用戶的設定不相符,則Keepalived將把服務器從服務器群中剔除。 多種使用場景:
1.高可用HA 主備 兩臺完全一樣的服務器,一主一備,運行同樣服務(apache、nginx),實現高可用

2.LVS Director server 服務的高可用HA 主備
兩臺完全一樣的LVS Director server服務器,一主一備,運行同樣服務,實現高可用

3.前端跑主備 同時監控後端 real server 集群機器狀態
問:如何監控後端real server 集群狀態?
答:增加一個虛擬server IP,這個虛擬IP 對應後端多臺 real server ip地址,監控狀態的同時可以指定負載算法
使用的還是 LVS的 ipvsadm

Keepalived 介紹 原理