首先讓我們來看看下面這張大家都非常熟悉的tcp/ip協議族的分層圖:
關於每層在網路資料報傳輸過程中所起到的作用不是本文的重點,本文主要是講解如何在網路層中使用ip來做伺服器集群的負載均衡,為什麼可以在這一層來做負載均衡。下面在來看ip協議的報頭格式:
內紅色框內的源位址和目的位址是ip負載均衡功能的關鍵所在,ip負載均衡又可以稱之為網路層負載均衡,其核心原理就是通過核心驅動更改ip的目的位址來完成資料負載均衡的,如下圖:
如上圖所示,使用者請求資料報(源位址為200.110.50.1)到達負載均衡伺服器114.100.20.200後,負載均衡伺服器在核心程序獲取網路資料報,根據一定的負載均衡演算法得到一台內部的真實伺服器192.168.1.1,然後將資料報的目的ip修改為192.168.1.1,此後資料報將會被發往192.168.1.1的伺服器上,伺服器處理完後,將向負載均衡伺服器返回相應的資料報,負載均衡伺服器在把源位址修改為114.100.20.200後將資料報傳輸給使用者瀏覽器。在這一整個過程中,資料報沒有通過使用者的應用程序,因此該負載均衡的效能是非常之高的。
根據以上的圖和上文的講解,大家可能會覺得這很容易實現,其實不然,在這裡需要處理關鍵的地方就是如何將集群內部伺服器處理完後的資料返回給負載均衡伺服器。因為,使用者請求的資料報到達負載均衡伺服器前的目的位址是114.100.20.200,源位址是200.110.50.1,通過負載均衡伺服器修改後的目的位址是192.168.1.1,源位址還是200.110.50.1,所以處理後返回的資料報目的位址將是200.110.50.1,源位址是192.168.1.1,最終返回的資料報要回到負載均衡伺服器就成了問題。解決的辦法大概有如下兩種:一、負載均衡伺服器使用雙網絡卡,乙個對內乙個對外,在修改請求資料報的目的ip的同時也修改源位址,將源位址設為自身的ip,即源位址轉換(snat),這樣內部集群伺服器響應會再回到負載均衡伺服器;二、將負載均衡伺服器作為真實物理伺服器集群的閘道器伺服器,這樣所有的響應都將通過負載均衡伺服器。
參考:[1] 《tcp/ip詳解,卷1:協議》
[2] 《大型**技術架構——核心原理與案例分析》
四層負載均衡和七層負載均衡
第一,技術原理上的區別。所謂四層負載均衡,也就是主要通過報文中的目標位址和埠,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。以常見的 tcp為例,負載均衡裝置 在接收到第乙個來自客戶端的 syn請求時 即通過上述方式選擇乙個最佳的伺服器,並對報文中目標 ip位址進行修改 改為後端...
四層負載均衡與七層負載均衡
1 四層負載均衡與七層負載均衡區別 個人理解 網路七層協議包括,應用層 第七層 表示層,會話層,傳輸成 第四層 網路層,資料鏈路層,物理層。所謂的七層和四層負載均衡就是指基於哪一層做的負載均衡。nginx反向 就是一種七層負載均衡,可以通過使用者的請求url來進行劃分 lvs就屬於四層負載均衡,是基...
四層負載均衡與七層負載均衡
四層負載均衡與七層負載均衡 負載均衡的分層是針對osi網路模型來說的,負載均衡模型也不僅僅只有四層和七層的。下面先給出osi網路模型架構 根據上述模型,可以快速了解負載均衡的分層 二層負載均衡 基於虛擬mac與真實mac的位址互聯。三層負載均衡 基於虛擬ip與真實ip的位址互聯。四層負載均衡 基於三...