TCP/IP 的分層管理
TCP/IP 協(xié)議按照層次分為 4 層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層。 對于分層這個概念,大家一定不陌生,比如我們的分布式架構(gòu)體系中會分為業(yè)務(wù)層、服務(wù)層、基礎(chǔ)支撐層。比如docker,也是基于分層來實現(xiàn)。所以我們會發(fā)現(xiàn),復(fù)雜的程序都需要分層,這個是軟件設(shè)計的要求,每一層專注于當(dāng)前領(lǐng)域的事情。如果某些地方需要修改,我們只需要把變動的層替換掉就行,一方面改動影響較少,另一方面整個架構(gòu)的靈活性也更高。 最后,在分層之后,整個架構(gòu)的設(shè)計也變得相對簡單了。
分層負(fù)載
了解了分層的概念以后,我們再去理解所謂的二層負(fù)載、三層負(fù)載、四層負(fù)載、七層負(fù)載就容易多了。
一次 http 請求過來,一定會從應(yīng)用層到傳輸層,完成整個交互。只要是在網(wǎng)絡(luò)上跑的數(shù)據(jù)包,都是完整的??梢杂邢聦記]上層,絕對不可能有上層沒下層。
二層負(fù)載
二層負(fù)載是針對 MAC,負(fù)載均衡服務(wù)器對外依然提供一個 VIP(虛 IP),集群中不同的機(jī)器采用相同 IP 地址,但是機(jī)器的 MAC 地址不一樣。當(dāng)負(fù)載均衡服務(wù)器接受到請求之后,通過改寫報文的目標(biāo) MAC 地址的方式將請求轉(zhuǎn)發(fā)到目標(biāo)機(jī)器實現(xiàn)負(fù)載均衡
二層負(fù)載均衡會通過一個虛擬 MAC 地址接收請求,然后再分配到真實的 MAC 地址
三層負(fù)載均衡
三層負(fù)載是針對 IP,和二層負(fù)載均衡類似,負(fù)載均衡服務(wù)器對外依然提供一個 VIP(虛 IP),但是集群中不同的機(jī)器采用不同的 IP 地址。當(dāng)負(fù)載均衡服務(wù)器接受到請求之后,根據(jù)不同的負(fù)載均衡算法,通過 IP 將請求轉(zhuǎn)發(fā)至不同的真實服務(wù)器
三層負(fù)載均衡會通過一個虛擬 IP 地址接收請求,然后再分配到真實的 IP 地址
四層負(fù)載均衡
四層負(fù)載均衡工作在 OSI 模型的傳輸層,由于在傳輸層,只有 TCP/UDP 協(xié)議,這兩種協(xié)議中除了包含源 IP、目標(biāo) IP 以外,還包含源端口號及目的端口號。四層負(fù)載均衡服務(wù)器在接受到客戶端請求后,以后通過修改數(shù)據(jù)包的地址信息(IP+端口號)將流量轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器。
四層通過虛擬 IP + 端口接收請求,然后再分配到真實的服務(wù)器
七層負(fù)載均衡
七層負(fù)載均衡工作在 OSI 模型的應(yīng)用層,應(yīng)用層協(xié)議較多,常用 http、radius、dns 等。七層負(fù)載就可以基于這些協(xié)議來負(fù)載。這些應(yīng)用層協(xié)議中會包含很多有意義的內(nèi)容。比如同一個Web 服務(wù)器的負(fù)載均衡,除了根據(jù) IP 加端口進(jìn)行負(fù)載外,還可根據(jù)七層的 URL、瀏覽器類別來決定是否要進(jìn)行負(fù)載均衡
比如:在nginx層做7層均衡,讓一個uid的請求盡量落到同一個機(jī)器上
七層通過虛擬的 URL 或主機(jī)名接收請求,然后再分配到真實的服務(wù)器。
本文摘自 :https://blog.51cto.com/u