Keepalived支持多種負(fù)載均衡調(diào)度算法甚颂,因此Keepalived可以采取靈活多變的方式將請(qǐng)求負(fù)載轉(zhuǎn)發(fā)到后端服務(wù)器池中未檩。Keepalived所使用的負(fù)載均調(diào)度機(jī)制由集成到內(nèi)核中的IPVS模塊提供,IPVS是LVS項(xiàng)目的核心功能模塊喳逛,其設(shè)計(jì)的主要目的之一就是解決單IP多服務(wù)器的工作環(huán)境请唱,IPVS模塊使得基于TCP/IP傳輸層(第4層)的數(shù)據(jù)交換成為可能空入。在實(shí)際使用中菩帝,IPVS會(huì)在內(nèi)核中創(chuàng)建一個(gè)名為IPVS Table的表咖城,該表記錄了后端服務(wù)器的地址及服務(wù)運(yùn)行狀態(tài)茬腿,通過(guò)IPVS? Table,Keepalived便可跟蹤并將請(qǐng)求路由到后端物理服務(wù)器中宜雀,即LVS Router利用此表將來(lái)自Keepalived虛擬服務(wù)器地址的請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器池中切平,同時(shí)將后端服務(wù)器的處理結(jié)果轉(zhuǎn)發(fā)給客戶端。此外辐董,IPVS Table的表結(jié)構(gòu)主要取決于管理員對(duì)指定的虛擬服務(wù)器所設(shè)置的負(fù)載均衡算法悴品,Keepalived支持以下幾種負(fù)載均衡算法。
1)Round-Robin即輪詢負(fù)載均衡算法简烘,服務(wù)請(qǐng)求會(huì)被依次轉(zhuǎn)發(fā)到服務(wù)器池中的每一個(gè)服務(wù)器上苔严,而不去評(píng)估服務(wù)器的當(dāng)前負(fù)載或者處理能力,服務(wù)器池中的每一個(gè)服務(wù)器都被平等對(duì)待夸研。如果使用Round-Robin負(fù)載均衡算法,每臺(tái)后端服務(wù)器會(huì)輪詢依次處理服務(wù)請(qǐng)求依鸥。
2)Weighted Round-Robin即加權(quán)的Round-Robin算法亥至,是對(duì)Round-Robin算法的一種擴(kuò)展。在這種算法中贱迟,請(qǐng)求被依次轉(zhuǎn)發(fā)到每一臺(tái)服務(wù)器上姐扮,但是當(dāng)前負(fù)載較輕或者計(jì)算能力較大的服務(wù)器會(huì)被轉(zhuǎn)發(fā)更多的請(qǐng)求,服務(wù)器的處理能力通過(guò)用戶指定的權(quán)重因子來(lái)決定衣吠,權(quán)重因子可以根據(jù)負(fù)載信息動(dòng)態(tài)上調(diào)或者下調(diào)茶敏。如果服務(wù)器的配置差別較大,導(dǎo)致不同服務(wù)器的處理能力相差較大缚俏,則加權(quán)的Round-Robin算法會(huì)是不錯(cuò)的選擇惊搏,但是如果請(qǐng)求負(fù)載頻繁變動(dòng),則權(quán)重較大的服務(wù)器可能會(huì)超負(fù)荷工作忧换。
3)Least-Connection即最少連接算法恬惯,請(qǐng)求被轉(zhuǎn)發(fā)到活動(dòng)連接較少的服務(wù)器上。在Keepalived的實(shí)際使用中亚茬,LVS Router一直在利用內(nèi)核中的IPVS Table來(lái)記錄后端服務(wù)器的活動(dòng)連接酪耳,從而動(dòng)態(tài)跟蹤每個(gè)服務(wù)器的活動(dòng)連接數(shù)。最少連接數(shù)算法是一種動(dòng)態(tài)決策算法刹缝,它比較適合服務(wù)器池中每個(gè)成員的處理能力都大致相當(dāng)碗暗,同時(shí)負(fù)載請(qǐng)求又頻繁變化的場(chǎng)景,如果不同服務(wù)器有不同的處理能力梢夯,則下面的加權(quán)最少連接數(shù)算法較為合適言疗。
4)Weighted Least-Connections即加權(quán)的最少連接數(shù)算法,路由會(huì)根據(jù)服務(wù)器的權(quán)重颂砸,轉(zhuǎn)發(fā)更多的請(qǐng)求到連接數(shù)較少的服務(wù)器上洲守。服務(wù)器的處理能力通過(guò)用戶指定的權(quán)重因子來(lái)決定疑务,權(quán)重因子可以根據(jù)負(fù)載信息動(dòng)態(tài)上調(diào)或者下調(diào)。一般來(lái)說(shuō)梗醇,服務(wù)器加權(quán)算法主要用于集群存在不同類型服務(wù)器知允,而服務(wù)器配置和處理能力相差較大的場(chǎng)景中。
5)Destination Hash Scheduling即目標(biāo)地址哈希算法叙谨,通過(guò)在靜態(tài)Hash表中查詢目的IP地址來(lái)確定請(qǐng)求要轉(zhuǎn)發(fā)的服務(wù)器温鸽,這類算法主要用于緩存代理服務(wù)器集群中。
6)Source Hash Scheduling即源地址哈希算法手负,通過(guò)在靜態(tài)Hash表中查詢?cè)碔P地址來(lái)確定請(qǐng)求要轉(zhuǎn)發(fā)的服務(wù)器涤垫,這類算法主要應(yīng)用于存在多防火墻的LVS Router中。
7)Shortest Expected Delay即最小延時(shí)算法竟终,在這種算法中蝠猬,請(qǐng)求被轉(zhuǎn)發(fā)到具有最小連接響應(yīng)延時(shí)的服務(wù)器上。
筆記整理來(lái)自山金孝的《OpenStack高可用集群(上冊(cè)):原理與架構(gòu)》4.1.3章節(jié)统捶,如有侵權(quán)請(qǐng)通知?jiǎng)h除