負載均衡的算法有很多,如下所示:
1.輪詢(rr):如果我們網絡環境中,服務組1中有三臺後臺服務器,服務組2中有兩臺後臺服務器,並且這兩個服務組都採用輪詢算法,那麼通向服務組1的所有請求都將按照“1、2、3、1、2、3……”的順序分配到服務組1中的後臺服務器,通向服務組2的所有請求都將按“4、5、4、5”的順序分配到服務組2中的後臺服務器。
2.最少連接數(lc):這種負載均衡算法將引導負載均衡設備去選擇服務組中當前活動連接最少的那臺後臺服務器。
3.最快回應(sr):設備永遠將下一個請求分配給擁有最短響應時間的服務器。使用這種負載均衡算法,我們可以將速度快的服務器和速度慢的服務器混合使用,並且速度快的服務器通常會被分配更多的請求。隨着速度快的服務器響應時間逐漸增加,速度慢的服務器會逐漸獲得新的請求。
4.保持IP地址(pi):此方法將請求的源IP地址(客戶IP地址)與某一後臺服務器長期關聯起來。來自此IP地址或網段的客戶請求長期由一個後臺服務器來響應。例如在電子商務中,一個客戶所發起的事務中有很多中間狀態,需要一直由同一後臺服務器保存和處理,來實現複雜事務的連續性處理。當很多客戶共享同一IP地址時,此方法不是很合適(比如許多客戶的請求由一個總的代理服務器來提交,對於負載均衡設備來說,看到的是同一個客戶IP地址)。
5.保持cookie:Persistent cookie算法將一種cookie的值和一個後臺服務關聯起來。一旦這種關聯建立起來,cookie值一樣將會一直由同一個後臺服務來處理。使用基於cookie的方法時,需要爲沒有cookie的HTTP請求定義默認策略。
6.插入cookie(ic):設備動態插入cookie來保持客戶端與後臺服務器的長期對應關係。
7.重寫cookie(rc):實時改寫後臺服務器的cookie來保持客戶端與服務器的長期對應關係。此算法最適用於服務器已經有自己的cookie並且不接受任何外來的cookie。
8.就近性(prox):此算法基於SDNS的就近性信息,並且只能同“復位向”策略聯用。這種算法將引導負載均衡設備將流量導向離客戶端最近的後臺服務器。
9.SNMP(snmp):此算法根據後臺服務器的SNMP(簡單網絡管理協議)的MIB信息來判斷服務的健康狀態和可用性,例如後臺服務的CPU和內存使用率。
10.嵌套cookie(ec):嵌套cookie在服務器端返回的cookie中插入信息,以保持後臺服務器和客戶端之間的連接。
11.哈希query(hq):此算法通過計算HTTP請求的query中指定的標籤的哈希值保持會話的持續性。同時這個方法必須與persistent url策略一起使用。
12.QoS cookie(qc):QoS cookie(區分服務質量的cookie算法)將一種cookie的值和一組後臺服務器,而不是一個後臺服務器關聯起來。例如:具有[Cookie: service=‘GOLD’]的HTTP請求將會被轉發給“Gold”服務組來處理。而“Gold”組裏的服務都是金牌級的服務,沒有太大區別。使用此方法,也必須爲沒有cookie的HTTP請求定義默認策略。
13.Qos URL(qu):Qos URL(區分服務質量的URL算法)利用客戶請求中URL的一部分來做出負載均衡決策。例如:可以建立基於字符串“/german/”的算法,使得類似於http://www.example.com/german/index.html的請求(包含“/german/”字符串)都被分配給德語服務組,該組中的所有服務都返回德文頁面。
14.Qos Hostname(qh):Qos hostname算法基於客戶請求中“Host”表頭來做出負載均衡決策。如果有針對不同“Host”表頭的多種HTTP請求,對於不同Host的請求可以有不同的服務來處理。
15.最小帶寬(lb):最小帶寬算法基於後臺服務的帶寬和權重值將流量分發至服務組中當前帶寬最小的後臺服務。
16.保持URL(Persistent URL,pu)
17.保持域名(PersistentHostname,ph)
18.哈希Cookie(Hash Cookie,hc)
19.哈希表頭(HashHeader,hh)
20.哈希IP地址(Hash IP,hi)
21.一致性哈希IP地址(Consistent Hash IP,chi)
22.SSL SID(sslsid)
23.radchu(Consistent Hash RADIUS User Name)
24.radchs(Consistent Hash RADIUS Session ID)
25.persistence(Individual Session Persistence)