LVS設(shè)置須知:負(fù)載均衡算法
前面我們介紹了完成負(fù)載均衡的***步,就是對Linux的lvs安裝過程。那么接下來,我們要對具體的負(fù)載均衡設(shè)置介紹之前,還是先來了解一下負(fù)載均衡算法都有哪些。這主要看在LVS所支持的算法,那么之前我們也有提及過它的三種請求轉(zhuǎn)發(fā)方式在此我們就不多贅述了,還是來看看它的算法的具體內(nèi)容吧。
負(fù)載均衡的八種調(diào)度算法
接下來的工作是根據(jù)實(shí)際需求選擇采用何種負(fù)載分配方式和調(diào)度算法。目前LVS主要有三種請求轉(zhuǎn)發(fā)方式和八種調(diào)度算法。根據(jù)請求轉(zhuǎn)發(fā)方式的不同,所構(gòu)架集群的網(wǎng)絡(luò)拓?fù)?#65380;安裝方式、性能表現(xiàn)也各不相同。用LVS主要可以架構(gòu)三種形式的集群,分別是LVS/NAT、LVS/TUN和LVS/DR,可以根據(jù)需要選擇其中一種。在選定轉(zhuǎn)發(fā)方式的情況下,采用哪種調(diào)度算法將決定整個負(fù)載均衡的性能表現(xiàn),不同的算法適用于不同的應(yīng)用場合,有時可能需要針對特殊場合,自行設(shè)計調(diào)度算法。LVS的算法是逐漸豐富起來的,最初LVS只提供4種調(diào)度算法,后來發(fā)展到以下八種:
負(fù)載均衡算法1.輪叫調(diào)度(Round Robin)
調(diào)度器通過“輪叫"調(diào)度算法將外部請求按順序輪流分配到集群中的真實(shí)服務(wù)器上,它均等地對待每一臺服務(wù)器,而不管服務(wù)器上實(shí)際的連接數(shù)和系統(tǒng)負(fù)載。
負(fù)載均衡算法2.加權(quán)輪叫(Weighted Round Robin)
調(diào)度器通過“加權(quán)輪叫"調(diào)度算法根據(jù)真實(shí)服務(wù)器的不同處理能力來調(diào)度訪問請求。這樣可以保證處理能力強(qiáng)的服務(wù)器能處理更多的訪問流量。調(diào)度器可以自動問詢真實(shí)服務(wù)器的負(fù)載情況,并動態(tài)地調(diào)整其權(quán)值。
負(fù)載均衡算法3.最少鏈接(Least Connections)
調(diào)度器通過“最少連接"調(diào)度算法動態(tài)地將網(wǎng)絡(luò)請求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用“最小連接"調(diào)度算法可以較好地均衡負(fù)載。
負(fù)載均衡算法4.加權(quán)最少鏈接(Weighted Least Connections)
在集群系統(tǒng)中的服務(wù)器性能差異較大的情況下,調(diào)度器采用“加權(quán)最少鏈接"調(diào)度算法優(yōu)化負(fù)載均衡性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動連接負(fù)載。調(diào)度器可以自動問詢真實(shí)服務(wù)器的負(fù)載情況,并動態(tài)地調(diào)整其權(quán)值。
負(fù)載均衡算法5.基于局部性的最少鏈接(Locality-Based Least Connections)
“基于局部性的最少鏈接"調(diào)度算法是針對目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。該算法根據(jù)請求的目標(biāo)IP地址找出該目標(biāo)IP地址最近使用的服務(wù)器,若該服務(wù)器是可用的且沒有超載,將請求發(fā)送到該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服務(wù)器處于一半的工作負(fù)載,則用“最少鏈接"的原則選出一個可用的服務(wù)器,將請求發(fā)送到該服務(wù)器。
負(fù)載均衡算法6.帶復(fù)制的基于局部性最少鏈接(Locality-Based Least Connections with Replication)
“帶復(fù)制的基于局部性最少鏈接"調(diào)度算法也是針對目標(biāo)IP地址的負(fù)載均衡,目前主要用于Cache集群系統(tǒng)。它與LBLC算法的不同之處是它要維護(hù)從一個目標(biāo)IP地址到一組服務(wù)器的映射,而LBLC算法維護(hù)從一個目標(biāo)IP地址到一臺服務(wù)器的映射。該算法根據(jù)請求的目標(biāo)IP地址找出該目標(biāo)IP地址對應(yīng)的服務(wù)器組,按“最小連接"原則從服務(wù)器組中選出一臺服務(wù)器,若服務(wù)器沒有超載,將請求發(fā)送到該服務(wù)器;若服務(wù)器超載,則按“最小連接"原則從這個集群中選出一臺服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,將請求發(fā)送到該服務(wù)器。同時,當(dāng)該服務(wù)器組有一段時間沒有被修改,將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的程度。
負(fù)載均衡算法7.目標(biāo)地址散列(Destination Hashing)
“目標(biāo)地址散列"調(diào)度算法根據(jù)請求的目標(biāo)IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請求發(fā)送到該服務(wù)器,否則返回空。
負(fù)載均衡算法8.源地址散列(Source Hashing)
“源地址散列"調(diào)度算法根據(jù)請求的源IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請求發(fā)送到該服務(wù)器,否則返回空。
了解這些算法原理能夠在特定的應(yīng)用場合選擇最適合的調(diào)度算法,從而盡可能地保持Real Server的***利用性。當(dāng)然也可以自行開發(fā)算法,不過這已超出本文范圍,請參考有關(guān)算法原理的資料。