Keepalived工作原理

前文Keepalived簡單介紹芜繁,知道Keepalived兩大重要功能:基于LVS的負(fù)載均衡和基于VRRP的故障切換达罗。從本質(zhì)上講Keepalived是提供數(shù)據(jù)流轉(zhuǎn)發(fā)與服務(wù)器健康檢查并具備故障切換的高可用路由妈倔,而數(shù)據(jù)轉(zhuǎn)發(fā)與健康檢查是對LVS功能的擴(kuò)展和增強(qiáng)致板,因此可以認(rèn)為Keepalived是運行在用戶空間的LVS路由(LVS Router)進(jìn)程昆稿。在實際應(yīng)用中辫封,Keepalived通常部署在兩臺主備或一主多備的服務(wù)器上,即Keepalived進(jìn)程既可以運行在Active/Master狀態(tài)的LVS Router中抹估,也可以運行在Passive/Slave狀態(tài)的LVS Router中缠黍,而所有運行Keepalived進(jìn)程的LVS Router都遵循虛擬路由冗余協(xié)議VRRP

在RHEL7/Centos7系統(tǒng)中药蜻,由Systemctl命令通過讀取/etc/keepalived/keepalived.conf配置文件來啟動Keepalived進(jìn)程嫁佳。在遵循VRRP協(xié)議的Master Router中,Keepalived進(jìn)程會啟動內(nèi)核中的LVS服務(wù)以創(chuàng)建虛擬服務(wù)器谷暮,并根據(jù)配置拓?fù)鋵Ψ?wù)運行狀況進(jìn)行監(jiān)控。

在VRRP的協(xié)議框架下盛垦,作為Master的Router將會處理兩個主要任務(wù)湿弦,即轉(zhuǎn)發(fā)客戶端訪問請求到后端物理服務(wù)器以進(jìn)行負(fù)載均衡和向Slave Routers周期性的發(fā)送VRRP協(xié)議報文,而作為Slave的Routers則負(fù)責(zé)接收VRRP報文腾夯,如果在用戶預(yù)置的時間內(nèi)颊埃,作為Slave的Routers接收VRRP報文失敗,則Keepalived認(rèn)為Master Router故障蝶俱,并從Slave Routers中重新選舉產(chǎn)生一個新的Master Router班利,觸發(fā)LVS Router的Failover故障切換操作。

在故障切換Failover的過程中榨呆,Keepalived創(chuàng)建的虛擬服務(wù)器會被清除罗标,新的Master? Router將接管VIP、發(fā)送ARP信息、設(shè)置IPVS Table記錄條目(Virtual Server)以及物理服務(wù)器的健康檢查和發(fā)送VRRP廣播報文闯割。Keepalived的Failover操作針對的是四層TCP/IP協(xié)議彻消,即傳輸層,因為TCP在傳輸層上進(jìn)行的是基于鏈路連接的數(shù)據(jù)傳輸宙拉。當(dāng)服務(wù)器在響應(yīng)TCP請求時宾尚,如果出現(xiàn)設(shè)置時間段的Timeout,則Keepalived的健康檢查機(jī)制將會監(jiān)測到該情況并認(rèn)為該服務(wù)器故障谢澈,然后將其從服務(wù)器池中移除(故障隔離)煌贴。

基于Keepalived的兩層拓?fù)湄?fù)載均衡架構(gòu)
基于Keepalived的兩層拓?fù)湄?fù)載均衡架構(gòu)

基于Keepalived設(shè)計的具有二層拓?fù)涞呢?fù)載均衡架構(gòu),第一層為負(fù)載均衡層锥忿,由一個Active和多個Backup的LVS Routers組成牛郑,其中,每個LVS Router都配置有兩個網(wǎng)絡(luò)接口缎谷,一個接入Internet網(wǎng)絡(luò)井濒,另一個接入內(nèi)部私有網(wǎng)絡(luò),Active的LVS Router在這兩個網(wǎng)絡(luò)接口間進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)列林。位于第一層的LVS Routers和第二層的物理服務(wù)器通過私網(wǎng)接口接入相同的局域網(wǎng)中瑞你,Active的LVS Router通過NAT技術(shù)將Internet數(shù)據(jù)流轉(zhuǎn)發(fā)到私網(wǎng)物理服務(wù)器上,而這些位于第二層的物理服務(wù)器運行著最終響應(yīng)請求的服務(wù)希痴。位于二層私網(wǎng)中的服務(wù)器在與Internet交互時必須經(jīng)過主LVS Router的NAT轉(zhuǎn)發(fā)者甲,對于外部網(wǎng)絡(luò)中的客戶端而言,訪問二層私網(wǎng)中的物理服務(wù)器就如訪問Internet網(wǎng)絡(luò)中的服務(wù)砌创,因為從客戶端的角度來看虏缸,訪問請求的目的地址正是位于主LVS Router上的VIP地址,而該VIP與客戶端地址處于相同網(wǎng)絡(luò)中嫩实,VIP還可以是管理員指定的互聯(lián)網(wǎng)域名刽辙。VIP在Keepalived的配置中通常被指定到一個或者多個虛擬服務(wù)器上,而虛擬服務(wù)器的主要任務(wù)便是監(jiān)聽VIP及相應(yīng)端口上的請求甲献,當(dāng)主LVS Router進(jìn)行Failover操作的時候宰缤,VIP會從一個LVS Router轉(zhuǎn)移到另一個LVS Router (VIP也稱為浮動IP),從而保證了對外提供服務(wù)的VIP具有高可用性晃洒。

在Keepalived負(fù)載均衡架構(gòu)的VIP配置中慨灭,每個將LVS Router連接到Internet的物理網(wǎng)卡接口均可配置多個VIP,且每個VIP對應(yīng)著不同的Virtual Server球及,即多個Virtual Servers可以同時監(jiān)聽相同物理網(wǎng)卡上的不同VIP氧骤,其中每個VIP都對應(yīng)著不同的服務(wù)。例如吃引,Linux系統(tǒng)中的接口eth0將LVS Router連接到Internet中筹陵,則可以在eth0上配置一個地址為192.168.115.100的VIP以用于響應(yīng)HTTP服務(wù)請求刽锤,同時還可以在eth0上配置另一個地址為192.168.115.200的VIP以用于響應(yīng)FTP服務(wù)請求。

在由一個Active Router和一個Backup? Router組成的Keepalived負(fù)載均衡架構(gòu)中惶翻,Active Router的主要任務(wù)是將VIP上的請求轉(zhuǎn)發(fā)到選中的某個后端服務(wù)器上姑蓝,具體服務(wù)器的選舉機(jī)制則由Keepalived所支持的負(fù)載均衡算法來決定。此外吕粗,Active Router還負(fù)責(zé)動態(tài)監(jiān)控后端服務(wù)器上特定服務(wù)的健康狀況纺荧,監(jiān)控方式主要是Keepalived自帶的三種健康檢測機(jī)制,即簡單TCP連接颅筋、HTTP和HTTPS宙暇。簡單TCP連接檢測方式,Active? Router會周期性地對服務(wù)器上某個特定端口進(jìn)行TCP連接议泵,如果TCP連接超時或者中斷則認(rèn)為服務(wù)不可用占贫,而對于HTTP和HTTPS檢測方式,Active Router通過周期性地抓取(Fetch)請求URL并驗證其內(nèi)容來判斷服務(wù)的可用性先口。與此同時型奥,Backup Router一直處于Standby狀態(tài),LVS Router的Failover由VRRP來處理碉京。在Keepalived進(jìn)程啟動的時候厢汹,所有LVS Routers會加入一個用來接收和發(fā)送VRRP廣播的多播組,由于VRRP是一種基于優(yōu)先級的協(xié)議谐宙,因此在啟動之初優(yōu)先級高的LVS Router會被選舉為Master Router烫葬,而Master Router將會周期性地向多播組中的成員發(fā)送VRRP廣播。如果多播組中的Backup Routers在一定時間內(nèi)接收VRRP廣播失敗凡蜻,則重新選舉新的Master Router搭综,新的Master Router將會接管VIP并廣播地址解析協(xié)議(Address Resolution Protocol,ARP)信息划栓。而當(dāng)故障Router重新恢復(fù)后兑巾,根據(jù)該Router的優(yōu)先級情況,其可能恢復(fù)到Master狀態(tài)也可能保持為Backup狀態(tài)忠荞。

兩層負(fù)載均衡架構(gòu)是最常見的部署環(huán)境闪朱,主要用于很多數(shù)據(jù)源變化不是很頻繁的數(shù)據(jù)請求服務(wù)中。

基于Keepalived的三層拓?fù)湄?fù)載均衡架構(gòu)
基于Keepalived的三層拓?fù)湄?fù)載均衡架構(gòu)

在三層負(fù)載均衡架構(gòu)中钻洒,前端的LVS Router負(fù)責(zé)將訪問請求轉(zhuǎn)發(fā)到物理服務(wù)器(Real? Servers)中,然后Real Server再通過網(wǎng)絡(luò)形式訪問可共享的數(shù)據(jù)源锄开。對于數(shù)據(jù)請求比較繁忙的FTP站點素标,三層架構(gòu)是最為理想的負(fù)載均衡架構(gòu),在這種架構(gòu)下萍悴,可供訪問的數(shù)據(jù)源集中存儲在高可用的集群服務(wù)器上头遭,Real Servers通過NFS共享目錄或者Samba文件共享等網(wǎng)絡(luò)文件系統(tǒng)形式來訪問數(shù)據(jù)寓免。此外,類似的三層負(fù)載均衡架構(gòu)在需要提供中心化及數(shù)據(jù)庫事務(wù)處理高可用的Web站點中也被普遍使用计维。

筆記整理來自山金孝的《OpenStack高可用集群(上冊):原理與架構(gòu)》4.1.2章節(jié)袜香,如有侵權(quán)請通知刪除

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鲫惶,隨后出現(xiàn)的幾起案子蜈首,更是在濱河造成了極大的恐慌,老刑警劉巖欠母,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欢策,死亡現(xiàn)場離奇詭異,居然都是意外死亡赏淌,警方通過查閱死者的電腦和手機(jī)踩寇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來六水,“玉大人俺孙,你說我怎么就攤上這事≈兰郑” “怎么了睛榄?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胯盯。 經(jīng)常有香客問我懈费,道長,這世上最難降的妖魔是什么博脑? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任憎乙,我火速辦了婚禮,結(jié)果婚禮上叉趣,老公的妹妹穿的比我還像新娘泞边。我一直安慰自己,他們只是感情好疗杉,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布阵谚。 她就那樣靜靜地躺著,像睡著了一般烟具。 火紅的嫁衣襯著肌膚如雪梢什。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天朝聋,我揣著相機(jī)與錄音嗡午,去河邊找鬼。 笑死冀痕,一個胖子當(dāng)著我的面吹牛荔睹,可吹牛的內(nèi)容都是我干的狸演。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼僻他,長吁一口氣:“原來是場噩夢啊……” “哼宵距!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吨拗,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤满哪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丢胚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翩瓜,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年携龟,在試婚紗的時候發(fā)現(xiàn)自己被綠了兔跌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡峡蟋,死狀恐怖坟桅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蕊蝗,我是刑警寧澤仅乓,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蓬戚,受9級特大地震影響夸楣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜子漩,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一豫喧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧幢泼,春花似錦紧显、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至招驴,卻和暖如春篙程,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背别厘。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工房午, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓郭厌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親雕蔽。 傳聞我的和親對象是個殘疾皇子折柠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容