负载均衡篇 不同层次的负载均衡(2/3/4/7)
快速區分多種負載均衡
負載均衡有 2/3/4/7層多種,對應于網絡的七層模型,即物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層。
那么二層負載就是數據鏈路負載,三層就是網絡層負載,四層就是傳輸層負載,七層就是應用層負載。
二層負載添加額外的數據鏈路來提供傳輸能力,一般是邏輯上的捆綁。提供虛擬MAC地址接收數據,再轉發到真正的MAC主機上。方法主要有鏈路聚合方法和PPP捆綁。
以太網鏈路聚合簡稱鏈路聚合,它通過將多條以太網物理鏈路捆綁在一起成為一條邏輯鏈路,從而實現增加鏈路帶寬的目的。同時,這些捆綁在一起的鏈路通過相互間的動態備份,可以有效地提高鏈路的可靠性。
PPP捆綁是將多個物理鏈路合并或者捆綁成一個大邏輯鏈路的機制。主要起到增加帶寬,減少延時,線路備份的作用,另外一個作用是可以將不同類型的接口捆綁為一個邏輯接口。
三層負載提供虛擬IP接收數據,然后轉發到真正的IP主機上。一般是通過F5硬件來提供這種負載。
四層負載是IP+PORT負載,提供虛擬的IP和端口接收數據后轉發到真正服務器上。
七層負載是URL負載,提供虛擬URL或主機名接收數據后轉發到真正的地址。
軟硬件負載均衡
首先要明白主機和主機的通信是通過IP和端口進行的,所以軟件所能實現的負載均衡只能是4-7層,而硬件可以應用于二層,三層的負載均衡。
相同功能的情況下,硬件的負載均衡是一臺獨立的機器,性能更加強大,但價格高貴。軟件負載均衡性能差一些,但勝在擴展性強,價格低廉。
硬件負載產品有F5,思科等。軟件負載有LVS,NGINX,HAPROXY等
如何選擇負載均衡
對于web服務來說,七層負載均衡能滿足他最完整的要求,無論是均衡服務器壓力,分攤宕機風險,檢查訪問錯誤,檢測報文內容,過濾攻擊等等,七層負載均衡都能夠提供解決方案。但七層負載均衡帶來功能的同時,也有一些風險存在。
1.七層負載均衡已經是應用層級別的負載均衡。連接已經建立,報文也已經發送成功,再轉發到服務端,其實相當于原本 客戶端-服務端 連接變成了 客戶端-負載均衡 + 負載均衡-服務端的兩段連接模式,添加了網絡壓力。
2.七層負載均衡對報文的攔截也降低了性能,如果訪問量大,將會對節點產生壓力。如果產生網絡攻擊,負載均衡節點將代替服務器接收外部攻擊,同樣有可能導致宕機而使得服務不能用。
如非必要,在選擇負載均衡器的時候,我們仍然選擇四層負載均衡而不是七層負載均衡。(實際應用中,大部分都會用到七層負載均衡,因為大部分項目都會使用到報文攔截做一些過濾或解析操作,更好用)
負載均衡策略
既然負載均衡是將數據分發給多臺機器,分別處理,就得考慮分發時候的策略滿足于當前環境,策略算法根據實際情況而定,一般軟件上會提供一些主流算法。
1.輪循均衡(Round Robin):每一次來自網絡的請求輪流分配給內部中的服務器,從1至N然后重新開始。此種均衡算法適合于服務器組中的所有服務器都有相同的軟硬件配置并且平均服務請求相對均衡的情況。
2.權重輪循均衡(Weighted Round Robin):根據服務器的不同處理能力,給每個服務器分配不同的權值,使其能夠接受相應權值數的服務請求。例如:服務器A的權值被設計成1,B的權值是 3,C的權值是6,則服務器A、B、C將分別接受到10%、30%、60%的服務請求。此種均衡算法能確保高性能的服務器得到更多的使用率,避免低性能的服務器負載過重。
3.隨機均衡(Random):把來自網絡的請求隨機分配給內部中的多個服務器。
4.權重隨機均衡(Weighted Random):此種均衡算法類似于權重輪循算法,不過在處理請求分擔時是個隨機選擇的過程。
5.響應速度均衡(Response Time):負載均衡設備對內部各服務器發出一個探測請求(例如Ping),然后根據內部中各服務器對探測請求的最快響應時間來決定哪一臺服務器來響應客戶端的服務請求。此種均衡算法能較好的反映服務器的當前運行狀態,但這最快響應時間僅僅指的是負載均衡設備與服務器間的最快響應時間,而不是客戶端與服務器間的最快響應時間。
6.最少連接數均衡(Least Connection):客戶端的每一次請求服務在服務器停留的時間可能會有較大的差異,隨著工作時間加長,如果采用簡單的輪循或隨機均衡算法,每一臺服務器上的連接進程可能會產生極大的不同,并沒有達到真正的負載均衡。最少連接數均衡算法對內部中需負載的每一臺服務器都有一個數據記錄,記錄當前該服務器正在處理的連接數量,當有新的服務連接請求時,將把當前請求分配給連接數最少的服務器,使均衡更加符合實際情況,負載更加均衡。此種均衡算法適合長時處理的請求服務,如FTP。
7.處理能力均衡:此種均衡算法將把服務請求分配給內部中處理負荷(根據服務器CPU型號、CPU數量、內存大小及當前連接數等換算而成)最輕的服務器,由于考慮到了內部服務器的處理能力及當前網絡運行狀況,所以此種均衡算法相對來說更加精確,尤其適合運用到第七層(應用層)負載均衡的情況下。
8.DNS響應均衡(Flash DNS):在Internet上,無論是HTTP、FTP或是其它的服務請求,客戶端一般都是通過域名解析來找到服務器確切的IP地址的。在此均衡算法下,分處在不同地理位置的負載均衡設備收到同一個客戶端的域名解析請求,并在同一時間內把此域名解析成各自相對應服務器的IP地址(即與此負載均衡設備在同一位地理位置的服務器的IP地址)并返回給客戶端,則客戶端將以最先收到的域名解析IP地址來繼續請求服務,而忽略其它的IP地址響應。在種均衡策略適合應用在全局負載均衡的情況下,對本地負載均衡是沒有意義的。
負載均衡器維護可用的分流服務
負載均衡器需要明確知道當前轉發目的的存活狀態,這里也需要通過一些策略來維護存活的服務。
1.Ping偵測:通過ping的方式檢測服務器及網絡系統狀況,此種方式簡單快速,但只能大致檢測出網絡及服務器上的操作系統是否正常,對服務器上的應用服務檢測就無能為力了。
2.TCP Open偵測:每個服務都會開放某個通過TCP連接,檢測服務器上某個TCP端口(如Telnet的23口,HTTP的80口等)是否開放來判斷服務是否正常。
3.HTTP URL偵測:比如向HTTP服務器發出一個對main.html文件的訪問請求,如果收到錯誤信息,則認為服務器出現故障。
總結
以上是生活随笔為你收集整理的负载均衡篇 不同层次的负载均衡(2/3/4/7)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LOJ #3217. 「PA 2019」
- 下一篇: 序列比对之Biostrings包