一、四層負載均衡
? ? ? ? 四層就是ISO參考模型中的第四層。四層負載均衡器也稱為四層交換機,它主要時通過分析IP層和TCP/UDP層的流量實現的基于“IP+端口”的負載均衡。常見的基于四層的負載均衡器有LVS、F5等。
? ? ? ?以常見的TCP應用為例,負載均衡器在接收到第一個來自客戶端的SYN請求時,會通過設定的負載均衡算法選擇一個最佳的后端服務器,同時將報文中目標IP地址修改為后端服務器IP,然后直接轉發給該后端服務器,這樣一個負載均衡請求就完成了。從這個過程來看,一個TCP連接是客戶端和服務器直接建立的,而負載均衡器只不過完成了一個類似路由器的轉發動作。在某些負載均衡策略中,為保證后端服務器返回的報文可以正確傳遞給負載均衡器,在轉發報文的同時可能還會對報文原來的源地址進行修改。整個過程如圖。
?二、七層負載均衡
? ? ? ?7層負載均衡器也稱為7層交換機,位于OSI的最高層,即應用層,此時負載均衡器支持多種應用協議,常見的有HTTP、FTP、SMTP等。7層負載均衡器可以根據報文內容,再配合負載均衡算法來選擇后端服務器,因此也稱為“內容交換器”。比如,對于Web服務器的負載均衡,7層負載均衡器不但可以根據“IP+端口”的方式進行負載分流,還可以根據網站的URL、訪問域名、瀏覽器類別、語言等決定負載均衡的策略。例如,有兩臺Web服務器分別對應中英文兩個網站,兩個域名分別是A、B,要實現訪問A域名時進入中文網站,訪問B域名時進入英文網站,這在4層負載均衡器中幾乎是無法實現的,而7層負載均衡器可以根據客戶端訪問域名的不同選擇對應的網頁進行負載均衡處理。常見的7層負載均衡器有HAProxy、Nginx等。
? ? ? ? 這里仍以常見的TCP應用為例,由于負載均衡器要獲取到報文的內容,因此只能先代替后端服務器和客戶端建立連接,接著,才能收到客戶端發送過來的報文內容,然后再根據該報文中特定字段加上負載均衡器中設置的負載均衡算法來決定最終選擇的內部服務器。縱觀整個過程,7層負載均衡器在這種情況下類似于一個代理服務器。整個過程如圖。
?三、區別
? ? ? ? 對比4層負載均衡器和7層負載均衡器運行的整個過程,可以看出,在7層負載均衡器模式下,負載均衡器與客戶端及后端的服務器會分別建立一次TCP連接,而在4層負載均衡器模式下,僅建立一次TCP連接。
? ? ? ?由此可知,7層負載均衡器對負載均衡設備的要求更高,而7層負載均衡器的處理能力也必然低于4層模式的負載均衡器。