什么是負載均衡(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.daimajiaoliu.com/daima/479707da29003e0
本文部分內容來自:https://www.zhihu.com/question/20553431
