負載均衡是當有大量的並發請求來到服務器的時候,我們能夠把這些請求分配到多台計算機節點上,讓更多的節點來處理請求和響應,如此就可以大大縮減用戶請求的等待時間。
1 四層/七層負載均衡
OSI網絡模型共分為七層,即從用戶發起請求到服務器接收需要經過七道工序。七層從上往下分別是應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。
所謂負載均衡分層,與OSI七層模型相對應。其中七層負載均衡是指Nginx在應用層提供服務,四層表示Nginx在傳輸層提供服務。
1.1 四層負載均衡
四層負載均衡是基於IP+端口的負載均衡,原理是通過轉發請求到后台的服務器,它只負責轉發並且會記錄當前連接是由哪個服務器處理的,后續這個連接的請求就由同一台服務器去處理,其實就是相當於長連接,這個長連接一旦打開就會一直處理連接的狀態,它的性能就會非常的高了,四層是基於傳輸層的,主要基於tcp和udp。
-
F5硬負載均衡:商業級別,很貴
-
LVS四層負載均衡:它是Linux內核的負載,和協議沒什么關系,主要是負責轉發一些 請求的,它是基於CS端的
-
HA proxy四層負載均衡:同樣支持轉發功能,並且靈活性非常高,除了做四層以外也能夠做七層的負載均衡
-
Nginx 四層負載均衡:既可以做負載均衡也可以做七層負載均衡,可以用於實現四層協議的轉發、代理等等
1.2 七層負載均衡
是基於URL或IP的負載均衡,是基於應用層的,是針對http協議的一個負載均衡。
-
nginx七層負載均衡 對http協議或者郵箱協議做負載均衡,性能強勁
-
Haproxy 七層負載均衡 靈活性很高
-
apache七層負載均衡協議 靈活性不高,並發達到百萬級的話性能會非常地差
總結:
- 四層做負載一般會使用LVS,Nginx更適合做七層負載。
- 四層負載均衡主要適用於處理基於tcp、udp協議,重點是用於轉發請求,並不是處理請求;七層一般用於處理http協議的,適用於web服務器;七層是會處理請求的,比如它可以去處理靜態資源的一些內容,可以進行壓縮或者緩存。
1.3 DNS地域負載均衡
由DNS服務器來識別,根據IP地址采用就近原則訪問最近的服務器。