1. 程式人生 > >關於負載均衡的三種傳輸模式(反向代理,透傳,三角)

關於負載均衡的三種傳輸模式(反向代理,透傳,三角)

什麼是負載均衡(SLB)

這裡寫圖片描述

SLB(伺服器負載均衡):在多個提供相同服務的伺服器的情況下,負載均衡裝置存在虛擬服務地址,當大量客戶端從外部訪問虛擬服務IP地址時,負載均衡裝置將這些報文請求根據負載均衡演算法,將流量均衡的分配給後臺伺服器以平衡各個伺服器的負載壓力,避免在還有伺服器壓力較小情況下其他服務達到效能臨界點出現執行緩慢甚至宕機情況,從而提高服務效率和質量,因此對客戶端而言,RS(real server 實際伺服器)的IP地址即是負載均衡裝置VIP(虛擬服務地址IP)地址,真正的RS伺服器IP地址對於客戶端是不可見的。

SLB的三種傳輸模式

反向代理模式

這裡寫圖片描述

當負載均衡裝置收到客戶端請求後,會記錄下此報文( 源IP地址、目的IP地址、協議號、源埠、目的埠,服務型別以及介面索引),將報文目的地址更改為優選後的RS裝置的IP地址,目的埠號不變,源地址修改為負載均衡裝置下行與對應RS裝置介面的IP地址,源埠號隨機發送給RS;當RS收到報文後,會以源為RS介面IP地址,目的IP裝置地址回覆給負載均衡裝置,負載均衡裝置將源修改為VIP,目的埠號修改為客戶端的源埠號,目的IP修改為Client的源IP回覆報文。
總結:即SLB(負載均衡伺服器)和RS(實際伺服器)都會使用本身的IP來替換請求裡面的client(客戶端)IP

透傳模式

這裡寫圖片描述

當負載均衡裝置工作在透傳模式中時,RS無法感知到負載均衡裝置的存在,對於Client來說,RS的IP地址就是負載均衡裝置的VIP地址。在這種模式下,當負載均衡裝置收到源為Client的IP,目的IP為本地VIP地址的報文時,會將報文根據負載均衡策略和健康狀況傳送給最優的RS裝置上,繼而RS裝置會收到目的為本地IP,源為Client實際IP的請求報文;然後RS將會直接回應此請求,報文的目的IP地址為Client的IP地址,當負載均衡裝置收到此報文後,將源IP地址修改為VIP地址,然後將報文傳送給Client。
總結:即SLB(負載均衡伺服器)不會使用自身的IP來替換client(客戶端)IP,所以RS拿到的IP是客戶端的真實IP,RS返回給SLB之後,SLB會使用自身IP來替換RS的IP,所以客戶端拿到的IP並不是RS的真實IP,而是負載均衡的IP

三角模式

這裡寫圖片描述

在三角模式下,當客戶端傳送請求到負載裝置上時,負載均衡裝置會計算出最優RS,然後直接根據MAC地址將報文轉發給RS,在RS上配置報文的源IP為VIP地址(一般配置在loopback口上),因此在這種情況下,RS會直接將報文傳送給Client,即使回覆報文經過負載均衡裝置,此裝置不做任何處理。由於報文在整個過程中傳輸途徑類似於三角形,因此稱之為三角模式。

注意:在三角模式環境中,由於RS的Loopback口和負載均衡裝置上存在著相同的VIP地址(個人理解:因為A伺服器傳送給B,B伺服器又轉給C,C直接回復A,A是不會認的,所以要C和B一樣,A才會認),當負載均衡裝置經過負載均衡演算法選擇出對應的RS後,會根據實際配置的RS的IP地址對應的mac地址,將報文以目的mac為RS,目的IP為VIP的方式建立TCP連線。

總結:與透傳模式類似,不同的是RS返回的時候不經過SLB(即使經過SLB也不做任何處理),而是直接返回給Client.所以通訊過程類似於一個三角形。

總結

由於反向代理模式中在RS側只能收到源為負載均衡裝置IP的報文,因此可以使用防火牆增加安全性,只允許源IP為負載均衡裝置的IP地址的報文通過,同時增加X-Forwarded-For欄位也可以讓RS只允許有此欄位的報文進行訪問,因此安全性相對較高。

本文部分內容來自:https://www.zhihu.com/question/20553431