程式架構探討—006 應用伺服器叢集的伸縮性之反向代理負載均衡
在網路層通過修改請求目標地址進行負載均衡。如下圖。
使用者請求資料包到達負載均衡伺服器198.100.80.10後,負載均衡伺服器在作業系統核心程序獲取網路資料包,根據負載均衡演算法計算得到一臺真實WEB伺服器192.0.0.1,然後將資料目的IP地址修改為192.0.0.1,不需要通過使用者程序處理。真實WEB應用伺服器處理完成後,響應資料包回到負載均衡伺服器,負載均衡伺服器再將資料包源地址自身的IP地址198.100.80.10,傳送給使用者瀏覽器。
這裡的關鍵在於真實物理WEB伺服器響應資料包如何返回給負載均衡伺服器。
一種方案是負載均衡伺服器在修改目的IP地址的同時修改源地址,將資料包源地址設為自身IP,即源地址轉換,這樣WEB伺服器的響應會再回到負載均衡伺服器。
另一種方案是將負載均衡伺服器同時作為真實物理伺服器叢集的閘道器伺服器,這樣所有響應資料都會到達負載均衡伺服器。
IP負載均衡在核心程序完成資料分發,較反向代理負載均衡有更好的處理效能。但是由於所有請求響應都需要經過負載均衡伺服器,叢集的最大響應資料吞吐量不得不受制於負載均衡伺服器網絡卡頻寬。對於提供下載服務或者視訊服務等需要傳輸大量資料的網站而言,難以滿足需求。