負載均衡算法大全
負載均衡的發展基礎就是負載均衡算法。那么針對不同的服務器我們也會采用不同的負載均衡算法,因為他們所具備的和要求的功能各不相同。那么我們現在就來詳細了解一下這方面的知識。希望能讓大家從中得到需要的東西。
服務器負載均衡算法有很多(持續性的和非持續性的),包括輪循算法、最少連接算法、響應時間算法、散列算法、最少連接失誤算法,鏈路帶寬算法等等。
此外實際服務器(RealServer)可以被分配不同的加權值來調整被分配的流量。比如性能高的大型服務器可配置較大的加權值,而為性能較低的小型服務器設置較小的加權值。為了避免服務器因過載而崩潰,可為實際服務器指定***連接閾值來避免該服務器過載。任何服務器可被指定為另一臺服務器的備份服務器或溢出服務器,從而進一步保證了應用可用性。
非持續性算法(Non-Persistent):
一個客戶端的不同的請求可能被分配到一個實際服務組中的不同的實服務器上進行處理。
主要有輪循算法、最少連接算法、響應速度算法等。
輪循算法(RoundRobin):
說明:每一次來自網絡的請求輪流分配給內部中的每臺服務器,從1至N然后重新開始。
舉例:此種負載均衡算法適合于服務器組中的所有服務器都有相同的軟硬件配置并且平均服務請求相對均衡的情況;
最少連接算法(LeastConnection):
說明:客戶端的每一次請求服務在服務器停留的時間都可能會有較大的差異,隨著工作時間的加長,如果采用簡單的輪循或隨機均衡算法,每一臺服務器上的連接進程可能會產生極大的不同,這樣的結果并不會達到真正的負載均衡。最少連接數均衡算法對內部中有負載的每一臺服務器都有一個數據記錄,記錄的內容是當前該服務器正在處理的連接數量,當有新的服務連接請求時,將把當前請求分配給連接數最少的服務器,使均衡更加符合實際情況,負載更加均衡。
舉例:此種負載均衡算法適合長時間處理的請求服務。
響應速度算法(ResponseTime):
說明:負載均衡設備對內部各服務器發出一個探測請求(例如Ping),然后根據內部中各服務器對探測請求的最快響應時間來決定哪一臺服務器來響應客戶端的服務請求。
舉例:此種負載均衡算法能較好地反映服務器的當前運行狀態,但最快響應時間僅僅指的是負載均衡設備與服務器間的最快響應時間,而不是客戶端與服務器間的最快響應時間。
持續性算法(Persistent):
從一個特定的客戶端發出的請求都被分配到一個實服務組中的同一個實服務器上進行處理。
主要包括的負載均衡算法有:
A.基于IP的算法
Persistent IP(pi):基于用戶IP地址來選擇服務器。
Hash IP(hi):基于用戶IP地址的HASH值,來選擇服務器
Consistent Hash IP(chi):基于列表IP來選擇服務器
B.基于報頭/請求的算法
HashHeader(hh):基于用戶請求報中HTTP報頭來選擇服務器;
PersistentHostname(ph):基于用戶請求報中HTTP報頭的Hostname的HASH值,來選擇服務器;
PersistentURL(pu):基于對URITag和值的靜態對應關系來選擇服務器。
SSLSessionID(sslsid):基于SSL會話ID來選擇服務器。
C.基于Cookie的負載均衡算法
PersistentCookie(pc):選擇服務器基于用戶請求包用CookieName/Value的靜態對應關系;
HashCookie(hc):選擇服務器基于用戶請求包用CookieName/Value的Hash值對應關系;
InsertCookie(ic):選擇服務器基于負載均衡器向服務器響應包中插入Cookie;
Re-writeCookie(rc):選擇服務器基于負載均衡器向服務器響應包中重寫Cookie值。(必須為重寫指定Cookie值的偏移量)