帶著問題閱讀
1、什么是代理,代理有什么好處
2、正向代理和負向代理有什么區別
3、反向代理和負載均衡有什么關系
4、四層負載均衡和七層有什么區別
代理
代理,通俗來說好比是中介的角色,比如在生活中我們處理法律問題、房產交易都會請專業人士代為處理,從網路角度講,就是為事務參與雙方提供連接通道的第三方網路服務器,
在網路場景中,根據被代理的角色和作用劃分,代理可分為正向代理和反向代理,
正向代理
正向代理是指對客戶端提供的代理服務,在客戶端無法直接訪問服務端的情況下,通過配置代理服務器的方式訪問服務端,
在整個程序中,客戶端請求首先發送到代理服務器,代理服務器再將請求發送到服務端后將結果回傳給客戶端,從服務端角度來看,認為代理服務器才客戶端,因此正向代理即代理客戶端與服務端進行互動,比如生活中我們通過代購去購買海外商品,代購就是我們的正向代理,

正向代理通常有以下應用場景:
- 提供網路通道:解決客戶端由于防火墻或網路限制無法訪問服務端的問題,如訪問google等國外網站,
- 隱藏客戶端身份:服務端只感知代理服務器,無法獲取真實客戶端,如黑客控制肉雞,
反向代理
反向代理是指對服務端提供的代理服務,通常出于安全考慮,真正的服務端只有內網網路,無法直接提供對外服務,為此需要設定反向代理服務器,由代理服務器接收外網請求,然后再轉發到內部服務器,從客戶端角度看,代理服務器是提供服務的服務端,因此反向代理即代理服務端與客戶端互動,比如租房遇到的二房東,我們簽合同也是與二房東簽訂,但實際提供住房的是房主,

反向代理通常有以下應用:
- 提供對外服務:代理服務器暴露公網地址,接收請求并轉發到內網服務器,
- 負載均衡:根據預設策略將請求分發到多臺服務器,
- 提供安全保障:作為服務端防火墻,避免服務端遭受網路攻擊,
- 提高訪問速度:基于網路位置設定就近代理服務器,提高資源獲取速度,如CDN服務器,
區別
- 正向代理代理客戶端,服務端認為請求來自代理服務器;反向代理代理服務端,客戶端認為提供服務的是代理服務器,
- 正向代理通常由客戶端架設,與客戶端同處一個局域網;反向代理由服務端架設,與服務端同處一個局域網,
- 正向代理通常解決訪問限制的問題,反向代理通常解決對外服務和負載均衡的問題,
負載均衡
負載均衡介紹
負載均衡是將負載(作業任務,訪問請求)進行平衡、分攤到多個操作單元(服務器,組件)上進行執行,是解決高性能,單點故障(高可用),擴展性(水平伸縮)的終極解決方案,

負載均衡既有基于軟體的實作方案,也有基于硬體的實作方案,在軟體方案中,又主要有:
-
基于DNS的負載均衡
在DNS服務器中,可以為多個不同的地址配置相同的名字,最終查詢這個名字的客戶機將在決議這個名字時得到其中一個地址,所以這種代理方式是通過DNS服務中的隨機名字決議域名和IP來實作負載均衡,
-
反向代理負載均衡
通常的反向代理技術,支持為同一服務配置多個后端服務器地址,以及設定相應的輪詢策略,請求到達反向代理服務器后,代理通過既定的輪詢策略轉發請求到具體服務器,實作負載均衡,如Nginx的七層配置形式,
-
基于NAT的負載均衡
該技術通過一個地址轉換網關將每個客戶端連接轉換為不同的內部服務器地址,因此客戶端就各自與自己轉換得到的地址上的服務器進行通信,從而達到負載均衡的目的,如LVS和Nginx的四層配置形式,
網路模型和負載均衡
參照OSI標準網路模型定義,負載均衡有二、三、四、七層四種負載均衡方式,對應到TCP網路模型中,即資料鏈路層負載均衡、網路層負載均衡、傳輸層負載均衡及應用層負載均衡,實際應用中通常采用四層負載均衡和七層負載均衡,
-
四層負載均衡(IP+埠)
四層負載均衡是IP+埠的實作,以TCP協議為例,四層負載只需決議TCP報文頭部,按照負載均衡演算法選擇相應服務后端,將報文目的地址和埠修改為真實后端服務器地址和埠,并轉發請求到對應后端服務器,因此在四層負載情況下,負載均衡起到類似路由轉發的效果,TCP連接的建立是客戶端和服務端直接建立的,

四層負載常用軟體有:
- LVS(常用,穩定性最好)
- Nginx(需要額外編譯stream模塊)
- HaProxy
-
七層負載均衡(應用層協議如HTTP)
七層負載也稱為內容交換,通常與具體應用層協議關聯,根據客戶端發送請求內容選擇服務端進行負載轉發,如Nginx基于請求URL配置轉發,七層負載情況下,負載均衡與反向代理類似,客戶端和服務端分別與負載均衡器建立連接,因此效率要低于四層負載,

七層負載常用軟體有:
- HaProxy
- Nginx
- Apache(較少使用)
負載均衡和反向代理
負載均衡與反向代理是兩個概念,由于其網路架構形式類似(都用于接入服務端),帶來一定程度的混淆,
知乎:反向代理和負載均衡有何區別?
負載均衡的核心目標在于如何將請求均衡的分發到多個服務端;反向代理的核心目標在于隱藏服務端內部地址并為服務端提供外部訪問方式,出于高可靠機制的考慮,反向代理通常也會為同一服務注冊多個后端地址,因此如Nginx同時提供了反向代理和負載均衡的能力,這也是造成概念混淆的原因,
通常來講經過反向代理,真實服務端對客戶端不可見,代理即客戶端認為的服務端,相較負載均衡,七層負載的請求轉發與反向代理機制類似,而四層負載的NAT形式,是將報文目的地址修改為真實服務后端地址,與反向代理有根本區別,
參考
- 正向代理和反向代理
- 終于有人把正向代理和反向代理解釋的明明白白了
- OSI 七層模型和TCP/IP模型及對應協議(詳解)
- linux負載均衡總結性說明(四層負載/七層負載)
- 反向代理和負載均衡有何區別
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/296410.html
標籤:架構設計
