對於數據流量過大的網絡中,每每單一設備沒法承擔,須要多臺設備進行數據分流,而負載均衡器就是用來將數據分流到多臺設備的一個轉發器。linux
目前有許多不一樣的負載均衡技術用以知足不一樣的應用需求,如軟/硬件負載均衡、本地/全局負載均衡、更高網絡層負載均衡,以及鏈路聚合技術。算法
咱們使用的是軟負載均衡器Nginx,而農行用的是F5硬負載均衡器,這裏就簡單介紹下這兩種技術:緩存
a.軟件負載均衡解決方案服務器
在一臺服務器的操做系統上,安裝一個附加軟件來實現負載均衡,如Nginx負載均衡(咱們管理系統平臺使用的也是這款均衡器)。它的優勢是基於特定環境、配置簡單、使用靈活、成本低廉,能夠知足大部分的負載均衡需求。網絡
1、什麼是Nginx數據結構
Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 能夠說Nginx 是目前使用最爲普遍的HTTP軟負載均衡器,其將源代碼以類BSD許可證的形式發佈(商業友好),同時因高效的性能、穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名於業界。像騰訊、淘寶、新浪等大型門戶及商業網站都採用Nginx進行HTTP網站的數據分流。併發
2、Nginx的功能特色負載均衡
一、工做在網絡的7層之上,能夠針對http應用作一些分流的策略,好比針對域名、目錄結構;異步
二、Nginx對網絡的依賴比較小;性能
三、Nginx安裝和配置比較簡單,測試起來比較方便;
四、也能夠承擔高的負載壓力且穩定,通常能支撐超過1萬次的併發;
五、Nginx能夠經過端口檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,www.linuxidc.com 而且會把返回錯誤的請求從新提交到另外一個節點,不過其中缺點就是不支持url來檢測;
六、Nginx對請求的異步處理能夠幫助節點服務器減輕負載;
七、Nginx能支持http和Email,這樣就在適用範圍上面小不少;
八、不支持Session的保持、對Big request header的支持不是很好,另外默認的只有Round-robin和IP-hash兩種負載均衡算法。
3、Nginx的原理
Nginx採用的是反向代理技術,代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。反向代理負載均衡技術是把未來自internet上的鏈接請求以反向代理的方式動態地轉發給內部網絡上的多臺服務器進行處理,從而達到負載均衡的目的。
b.硬件負載均衡解決方案
直接在服務器和外部網絡間安裝負載均衡設備,這種設備咱們一般稱之爲負載均衡器。因爲專門的設備完成專門的任務,獨立於操做系統,總體性能獲得大量提升,加上多樣化的負載均衡策略,智能化的流量管理,可達到最佳的負載均衡需求。 通常而言,硬件負載均衡在功能、性能上優於軟件方式,不過成本昂貴,好比最多見的就是F5負載均衡器。
什麼是F5 BIG-IP
F5負載均衡器是應用交付網絡的全球領導者F5 Networks公司提供的一個負載均衡器專用設備,F5 BIG-IP LTM 的官方名稱叫作本地流量管理器,能夠作4-7層負載均衡,具備負載均衡、應用交換、會話交換、狀態監控、智能網絡地址轉換、通用持續性、響應錯誤處理、IPv6網關、高級路由、智能端口鏡像、SSL加速、智能HTTP壓縮、TCP優化、第7層速率整形、內容緩衝、內容轉換、鏈接加速、高速緩存、Cookie加密、選擇性內容加密、應用攻擊過濾、拒絕服務(DoS)攻擊和SYN Flood保護、防火牆—包過濾、包消毒等功能。
如下是F5 BIG-IP用做HTTP負載均衡器的主要功能:
①、F5 BIG-IP提供12種靈活的算法將全部流量均衡的分配到各個服務器,而面對用戶,只是一臺虛擬服務器。
②、F5 BIG-IP能夠確認應用程序可否對請求返回對應的數據。假如F5 BIG-IP後面的某一臺服務器發生服務中止、死機等故障,F5會檢查出來並將該服務器標識爲宕機,從而不將用戶的訪問請求傳送到該臺發生故障的服務器上。這樣,只要其它的服務器正常,用戶的訪問就不會受到影響。宕機一旦修復,F5 BIG-IP就會自動查證應用已能對客戶請求做出正確響應並恢復向該服務器傳送。
③、F5 BIG-IP具備動態Session的會話保持功能。
④、F5 BIG-IP的iRules功能能夠作HTTP內容過濾,根據不一樣的域名、URL,將訪問請求傳送到不一樣的服務器。
方案優缺點對比
基於硬件的方式(F5)
優勢:可以直接經過智能交換機實現,處理能力更強,並且與系統無關,負載性能強更適用於一大堆設備、大訪問量、簡單應用
缺點:成本高,除設備價格高昂,並且配置冗餘.很難想象後面服務器作一個集羣,但最關鍵的負載均衡設備倒是單點配置;沒法有效掌握服務器及應用狀態.
硬件負載均衡,通常都無論實際系統與應用的狀態,而只是從網絡層來判斷,因此有時候系統處理能力已經不行了,但網絡可能還來 得及反應(這種狀況很是典型,好比應用服務器後面內存已經佔用不少,但尚未完全不行,若是網絡傳輸量不大就未必在網絡層能反映出來)
基於軟件的方式(Nginx)
優勢:基於系統與應用的負載均衡,可以更好地根據系統與應用的情況來分配負載。這對於複雜應用是很重要的,性價比高,實際上若是幾臺服務器,用F5之類的硬件產品顯得有些浪費,而用軟件就要合算得多,由於服務器同時還能夠跑應用作集羣等。
缺點:負載能力受服務器自己性能的影響,性能越好,負載能力越大。
綜述:對咱們管理系統應用環境來講,因爲負載均衡器自己不須要對數據進行處理,性能瓶頸更多的是在於後臺服務器,一般採用軟負載均衡器已很是夠用且其商業友好的軟件源碼受權使得咱們能夠很是靈活的設計,無逢的和咱們管理系統平臺相結合。