1.什麼是四層和七層負載平衡?
所謂四層就是基於IP+連接埠的負載平衡,七層就是基於URL等應用程式層資訊的負載平衡。
同理,還有基於MAC地址的二層負載平衡和基於IP地址的三層負載平衡。
換句換說,二層負載平衡會通過一個虛擬MAC地址接收請求,然後再分配到真實的MAC地址;
三層負載平衡會通過一個虛擬IP地址接收請求,然後再分配到真實的IP地址;
四層通過虛擬IP+連接埠接收請求,然後再分配到真實的伺服器;
七層通過URL或主機名稱接收請求,然後再分配到真實的伺服器。
2.四層負載平衡和七層負載平衡的區別?
所謂四層負載平衡,也就是主要通過報文中的目標地址和連接埠,
再加上負載平衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。
四層負載平衡在接收第一個來自用戶端的SYN請求時,選擇一個最佳的伺服器
並對報文中目標IP地址和連接埠進行修改(改為後端伺服器IP和連接埠),直接轉寄給該伺服器。
TCP的串連建立,即三向交握是用戶端和伺服器直接建立的,
負載平衡裝置只是起到一個類似路由器的轉寄動作。
所謂七層負載平衡,也稱為內容交換,也就是主要通過報文中的真正有意義的應用程式層內容,
再加上負載平衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。
負載平衡裝置如果要根據真正的應用程式層內容再選擇伺服器,只能先代理最終的伺服器和用戶端
建立串連(三向交握)後,才可能接受到用戶端發送的真正應用程式層內容的報文,
然後再根據該報文中的特定欄位,再加上負載平衡裝置設定的伺服器選擇方式,
決定最終選擇的內部伺服器。負載平衡裝置在這種情況下,更類似於一個Proxy 伺服器。
負載平衡和前端的用戶端以及後端的伺服器會分別建立TCP串連。
所以從這個技術原理上來看,七層負載平衡明顯的對負載平衡裝置的要求更高,
處理七層的能力也必然會低於四層模式的部署方式。
3.常見的軟體負載平衡方案
軟體四層負載平衡代表作品是LVS,支援四層以上的所有應用。
軟體七層負載平衡大多基於HTTP反向 Proxy方式,代表作品有Nginx,HAProxy。
HAproxy也支援四層的負載平衡。