前文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設(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)
在三層負(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)請通知刪除