nginx:負載均衡、四層代理、七層轉發
學習自:【精選】Nginx教程(小白必看,看了必會,不看血虧),-CSDN博客
1、VS
VS是Virtual Server的簡寫,是一個虛擬的服務器集群系統。
VS主要用于多服務器的負載均衡。它工作在傳輸層,可以實現高性能、高可用的服務器集群技術。
它可以把許多低性能服務器組合為一個超級服務器,并且提供了多種負載均衡方法。
LVS通過控制IP來負載均衡。IPVS是其具體的實現模塊。

相比nginx,LVS具有更強的抗負載能力,性能高,對于內存和CPU資源消耗較低。
LVS工作在網絡層,流量由OS內核控制;nginx工作在應用層,針對的是HTTP應用實施分裂策略。
2、四層、七層代理
這里的層是指OSI 7層網絡模型:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。
4層:傳輸層的 tcp / udp。
7層:應用層,通常是http。
1)代理原理
4層代理(NAT)
4層用的是NAT(Network Address Translation,網絡地址轉換)。當請求進入的時候,nginx會修改數據包中的目標、源IP和Port,然后再把數據包發給目標服務器,服務器處理完成之后,nginx再做一次修改,返回給請求的客戶端。
7層代理
讀取并解析http請求內容,再根據具體內容(url、參數、cookie、請求頭)轉發到相應的服務器。
轉發過程:建立與目標機器的連接,再轉發請求,收到相應數據再轉發給請求C端。
2)優缺點對比
性能
理論上4層要比7層更快,因為7層還需要解析數據包的具體內容,需要消耗額外CPU。
但是nginx具有強大的網絡并發處理能力,對于一些慢連接情況,nginx可以先將網絡請求數據緩沖完畢再一次性轉發給上游server,這樣對于上游網絡并發處理能力弱的服務器(如tomcat),就相當于慢連接變為快連接,從而節省網絡數據緩沖時間,提供并發性能。
靈活性
由于4層代理用的是NAT,因此nginx不知道請求的具體內容,所以nginx無法針對內容作出反應。而7層代理則能根據請求內容(url,參數,cookie,請求頭)做很多事情,例如:
- 動態代理:根據不同url轉發到不同的服務器;
- 風控:屏蔽外網IP請求某些敏感url;根據參數屏蔽某些刷單用戶;
- 審計:在nginx層記錄請求日志。
結論
由于現在的機器CPU性能很好,因此4層代理并沒有明顯的性能優勢,而7層代理在業務層面優勢顯著,因此一般直接用7層代理就行。

浙公網安備 33010602011771號