1. 程式人生 > >負載均衡層級理論篇

負載均衡層級理論篇

本文介紹負載均衡在OSI(七層網路模型)的應用

 

二層負載均衡

 

負載均衡伺服器對外提供一個VIP(虛IP),叢集中不同的機器採用相同IP地址,但是機器的MAC地址不一樣。當負載均衡伺服器接受到請求之後,通過改寫報文的目標MAC地址的方式將請求轉發到目標機器實現負載均衡。

 

三層負載均衡

 

和二層負載均衡類似負載均衡伺服器對外依然提供一個VIP(虛IP),但是叢集中不同的機器採用不同的IP地址。當負載均衡伺服器接受到請求之後,根據不同的負載均衡演算法,通過IP將請求轉發至不同的真實伺服器

 

四層負載均衡:

 

四層負載均衡只,建立一次TCP連線,工作在OSI模型的傳輸層,由於在傳輸層,只有TCP/UDP協議,這兩種協議中除了包含源IP、目標IP以外,還包含源埠號及目的埠號,基於IP+埠的負載均衡。通過釋出三層的IP地址(VIP),然後加四層的埠號,來決定哪些流量需要做負載均衡,對需要處理的流量進行NAT處理,通過修改資料包的地址資訊(IP+埠號)將流量轉發到應用伺服器。並記錄下這個TCP或者UDP的流量是由哪臺伺服器處理的,後續這個連線的所有流量都同樣轉發到同一臺伺服器處理;

 

 

七層負載均衡:

 

負載均衡器與客戶端及後端的伺服器會分別建立一個TCP連線。即兩次TCP連線。就是在四層的基礎上(沒有四層是絕對不可能有七層的),再考慮應用層的特徵,比如同一個Web伺服器的負載均衡,除了根據VIP加80埠辨別是否需要處理的流量,還可根據七層的URL、瀏覽器類別、語言來決定是否要進行負載均衡。舉個例子,如果你的Web伺服器分成兩組,一組是中文語言的,一組是英文語言的,那麼七層負載均衡就可以當用戶來訪問你的域名時,自動辨別使用者語言,然後選擇對應的語言伺服器組進行負載均衡處理。七層就是基於URL等應用層資訊的負載均衡

 

 

常用負載均衡工具

LVS,F5,NGINX (Nginx Plus的商業授權版開始具有TCP負載均衡(四層)的功能)