**:
首先讓我們來看看下面這張大家都非常熟悉的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),這樣內部集群伺服器響應會再回到負載均衡伺服器;二、將負載均衡伺服器作為真實物理伺服器集群的閘道器伺服器,這樣所有的響應都將通過負載均衡伺服器。
每天進步一點點
很多朋友總喜歡問 成功靠什麼?其實,成功很難單一的歸納為靠什麼條件,如果一定要回答,只能從某種意義上說 很多人的成功就是靠他們每天比別人 多做一點點 正如古人有云 業精於勤,荒於嬉。這裡所說的勤,也就是比別人多做一點點,即付出多一點的勞動和努力。不要小看這一點點,又如古語說 集腋成裘,積沙成丘。如果...
每天進步一點點
在模組化程式設計時,在子模組中宣告變數 例如unsigned char aa 不需要在標頭檔案中宣告 要在主函式中呼叫,要寫成 extern unsigned char aa 而不能寫成 extern aa 寫成extern aa 則無法改變aa的值。2014年9月22日 21 12 00 品質因數...
每天進步一點點 負載均衡之HTTP重定向
由於目前現有網路的各個核心部分隨著業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將導致再一次硬體公升級的高額成本投入,...