网页加载出现没有合适的负载均衡器_分布式必知必会-七层负载和四层负载到底是什么?...
背景
我們在使用負(fù)載均衡器的時候,往往會聽到七層負(fù)載或四層負(fù)載這兩個名詞,許多負(fù)載均衡軟件提供的方式也不同,那么七層和四層區(qū)別在哪呢?為什么有的支持有的不支持呢?
負(fù)載均衡簡介
負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了一種廉價有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、增強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。
簡單來講:負(fù)載均衡將大量的并發(fā)處理轉(zhuǎn)發(fā)給后端多個節(jié)點(diǎn)處理,減少工作響應(yīng)時間;處理完成后返回給負(fù)載均衡器,再返回給用戶。目前負(fù)載均衡大多數(shù)用于提高諸如在Web服務(wù)器、FTP服務(wù)器和其他關(guān)鍵任務(wù)服務(wù)器上的Internet服務(wù)器陳股的可用性和可伸縮性。
負(fù)載均衡分類
- 二層負(fù)載:一般是虛擬Mac地址方式,外部對虛擬MAC地址請求,負(fù)載均衡接收后分配后端實(shí)際的MAC地址響應(yīng)。(mac)
- 三層負(fù)載:一般采用虛擬IP地址方式,外部對虛擬的IP地址請求,負(fù)載均衡器接收后分配后端實(shí)際的IP地址相應(yīng)。(ip)
- 四層負(fù)載:在三層負(fù)載的基礎(chǔ)之上,用ip+端口接收請求,再轉(zhuǎn)發(fā)到對應(yīng)的機(jī)器(tcp)
- 七層負(fù)載:根據(jù)虛擬的URL或IP,主機(jī)名接收請求,再轉(zhuǎn)向相應(yīng)的處理服務(wù)器。(如http)
負(fù)載均衡算法
- 輪詢
- 權(quán)重輪詢
- 隨機(jī)
- 權(quán)重隨機(jī)
- 響應(yīng)速度
- 最少連接數(shù)
- 處理能力
- DNS相應(yīng)
四層負(fù)載
四層負(fù)載就是基于IP+Port的負(fù)載均衡;在三層負(fù)載的基礎(chǔ)之上,通過發(fā)布三層的IP地址,然后加上四層的端口號,來決定哪些流量需要做負(fù)載均衡。 四層負(fù)載均衡器主要分析IP和TCP/UDP層,實(shí)現(xiàn)負(fù)載均衡;但是它不理解應(yīng)用層協(xié)議,也就是我們常常提到的HTTP協(xié)議,其他協(xié)議如FTP、Mysql協(xié)議等。
支持四層負(fù)載的軟硬負(fù)載均衡器
F5、nginx、lvs、haproxy
七層負(fù)載
七層負(fù)載均衡基于虛擬的URL或主機(jī)IP的負(fù)載均衡:在四層負(fù)載均衡的基礎(chǔ)上(沒有四層負(fù)載就不可能有七層負(fù)載),再考慮應(yīng)用層的特征,比如同一個web服務(wù)器的負(fù)載均衡,除了根據(jù)vip和80端口辨別是否需要處理的流量,還可以根據(jù)七層的URL、瀏覽器類別、語言來決定是否需要進(jìn)行負(fù)載均衡。
七層負(fù)載均衡器除了支持四層負(fù)載均衡以外,還有分析應(yīng)用層的信息,如HTTP協(xié)議URI或Cookie信息,實(shí)現(xiàn)七層負(fù)載均衡。此種負(fù)載均衡器能理解應(yīng)用協(xié)議。(所以支持Mysql,RabbitMQ等協(xié)議的負(fù)載)
支持七層負(fù)載的軟硬件負(fù)載均衡器
haproxy、nginx
總的來說,一般是lvs做四層負(fù)載;nginx做7層負(fù)載(默認(rèn)只支持HTTP反向代理,可以考慮加入nginx_tcp_proxy_module模塊實(shí)現(xiàn)對tcp的代理);haproxy比較靈活7層負(fù)載和四層負(fù)載都能做。
七層負(fù)載最關(guān)注的是Http協(xié)議,對其他協(xié)議關(guān)注度并不是很高,其他如Mysql、RabbitMQ等中間件的負(fù)載可以考慮使用四層負(fù)載,因?yàn)樗膶迂?fù)載是基于IP+端口的負(fù)載,這個往往就夠了。
四層和七層的對比
第一,技術(shù)原理上的區(qū)別
所謂四層負(fù)載均衡,也就是主要通過報文中的目標(biāo)地址和端口,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器選擇方式,決定最終選擇的內(nèi)部服務(wù)器。
以常見的TCP為例,負(fù)載均衡設(shè)備在接收到第一個來自客戶端的SYN 請求時,即通過上述方式選擇一個最佳的服務(wù)器,并對報文中目標(biāo)IP地址進(jìn)行修改(改為后端服務(wù)器IP),直接轉(zhuǎn)發(fā)給該服務(wù)器。
TCP的連接建立,即三次握手是客戶端和服務(wù)器直接建立的,負(fù)載均衡設(shè)備只是起到一個類似路由器的轉(zhuǎn)發(fā)動作。在某些部署情況下,為保證服務(wù)器回包可以正確返回給負(fù)載均衡設(shè)備,在轉(zhuǎn)發(fā)報文的同時可能還會對報文原來的源地址進(jìn)行修改。
4層
所謂七層負(fù)載均衡,也稱為“內(nèi)容交換”,也就是主要通過報文中的真正有意義的應(yīng)用層內(nèi)容,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器選擇方式,決定最終選擇的內(nèi)部服務(wù)器。
七層負(fù)載均衡明顯的對負(fù)載均衡設(shè)備的要求更高,處理七層的能力也必然會低于四層模式的部署方式。
7層
第二,應(yīng)用場景的需求
七層應(yīng)用負(fù)載的好處,是使得整個網(wǎng)絡(luò)更"智能化"。
對圖片、靜態(tài)資源做緩存、對header重寫、對url重寫、對請求進(jìn)行校驗(yàn)、做黑白名單等等
總體對比
1.智能性 七層負(fù)載均衡由于具備OIS七層的所有功能,所以在處理用戶需求上能更加靈活,從理論上講,七層模型能對用戶的所有跟服務(wù)端的請求進(jìn)行修改。例如對文件header添加信息,根據(jù)不同的文件類型進(jìn)行分類轉(zhuǎn)發(fā)。四層模型僅支持基于網(wǎng)絡(luò)層的需求轉(zhuǎn)發(fā),不能修改用戶請求的內(nèi)容。
2.安全性 七層負(fù)載均衡由于具有OSI模型的全部功能,能更容易抵御來自網(wǎng)絡(luò)的攻擊;四層模型從原理上講,會直接將用戶的請求轉(zhuǎn)發(fā)給后端節(jié)點(diǎn),無法直接抵御網(wǎng)絡(luò)攻擊。
3.復(fù)雜度 四層模型一般比較簡單的架構(gòu),容易管理,容易定位問題;七層模型架構(gòu)比較復(fù)雜,通常也需要考慮結(jié)合四層模型的混用情況,出現(xiàn)問題定位比較復(fù)雜。
4.效率比 四層模型基于更底層的設(shè)置,通常效率更高,但應(yīng)用范圍有限;七層模型需要更多的資源損耗,在理論上講比四層模型有更強(qiáng)的功能,現(xiàn)在的實(shí)現(xiàn)更多是基于http應(yīng)用。
總結(jié)
以上是生活随笔為你收集整理的网页加载出现没有合适的负载均衡器_分布式必知必会-七层负载和四层负载到底是什么?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web浏览器_Web上的分享(Share
- 下一篇: 印象笔记编辑pdf_笔记软件使用体验(至