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