負載均衡設備也常被稱為"四到七層交換機",那麼四層和七層兩者到底區別在哪裡?
第一,技術原理上的區別。
所謂四層負載均衡,也就是主要通過報文中的目標地址和端口,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。
以常見的TCP為例,負載均衡設備在接收到第一個來自客戶端的SYN 請求時,即通過上述方式選擇一個最佳的服務器,並對報文中目標IP地址進行修改(改為後端服務器IP),直接轉發給該服務器。
TCP的連接建立,即三次握手是客戶端和服務器直接建立的,負載均衡設備只是起到一個類似路由器的轉發動作。在某些部署情況下,為保證服務器回包可以正確返回給負載均衡設備,在轉發報文的同時可能還會對報文原來的源地址進行修改。
所謂七層負載均衡,也稱為“內容交換”,也就是主要通過報文中的真正有意義的應用層內容,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。
以常見的TCP為例,負載均衡設備如果要根據真正的應用層內容再選擇服務器,只能先代理最終的服務器和客戶端建立連接(三次握手)後,才可能接受到客戶 端發送的真正應用層內容的報文,然後再根據該報文中的特定字段,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。負載均衡設備在這種 情況下,更類似於一個代理服務器。
負載均衡和前端的客戶端以及後端的服務器會分別建立TCP連接。所以從這個技術原理上來看,七層負載均衡明顯的對負載均衡設備的要求更高,處理七層的能力也必然會低於四層模式的部署方式。那麼,為什麼還需要七層負載均衡呢?
第二,應用場景的需求。
七層應用負載的好處,是使得整個網絡更"智能化", 參考我們之前的另外一篇專門針對HTTP應用的優化的介紹 ,就可以基本上了解這種方式的優勢所在。例如訪問一個網站的用戶流量,可以通過七層的方式,將對圖片類的請求轉發到特定的圖片服務器並可以使用緩存技術;
將對文字類的請求可以轉發到特定的文字服務器並可以使用壓縮技術。當然這只是七層應用的一個小案例,從技術原理上,這種方式可以對客戶端的請求和服務器 的響應進行任意意義上的修改,極大的提升了應用系統在網絡層的靈活性。很多在後台,(例如Nginx或者Apache)上部署的功能可以前移到負載均衡設 備上,例如客戶請求中的Header重寫,服務器響應中的關鍵字過濾或者內容插入等功能。