對于數據流量過大的網絡中,往往單一設備無法承擔,需要多臺設備進行數據分流,而負載均衡器就是用來將數據分流到多臺設備的一個轉發器。
目前有許多不同的負載均衡技術用以滿足不同的應用需求,如軟/硬件負載均衡、本地/全局負載均衡、更高網絡層負載均衡,以及鏈路聚合技術。
我們使用的是軟負載均衡器Nginx,而農行用的是F5硬負載均衡器,這里就簡單介紹下這兩種技術:
a.軟件負載均衡解決方案
在一臺服務器的操作系統上,安裝一個附加軟件來實現負載均衡,如Nginx負載均衡(我們管理系統平臺使用的也是這款均衡器)。它的優點是基于特定環境、配置簡單、使用靈活、成本低廉,可以滿足大部分的負載均衡需求。
一、什么是Nginx
Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 可以說Nginx 是目前使用最為廣泛的HTTP軟負載均衡器,其將源代碼以類BSD許可證的形式發布(商業友好),同時因高效的性能、穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名于業界。像騰訊、淘寶、新浪等大型門戶及商業網站都采用Nginx進行HTTP網站的數據分流。
二、Nginx的功能特點
1、工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構;
2、Nginx對網絡的依賴比較小;
3、Nginx安裝和配置比較簡單,測試起來比較方便;
4、也可以承擔高的負載壓力且穩定,一般能支撐超過1萬次的并發;
5、Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,www.linuxidc.com 并且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測;
6、Nginx對請求的異步處理可以幫助節點服務器減輕負載;
7、Nginx能支持http和Email,這樣就在適用范圍上面小很多;
8、不支持Session的保持、對Big request header的支持不是很好,另外默認的只有Round-robin和IP-hash兩種負載均衡算法。
三、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之類的硬件產品顯得有些浪費,而用軟件就要合算得多,因為服務器同時還可以跑應用做集群等。
缺點:負載能力受服務器本身性能的影響,性能越好,負載能力越大。
綜述:對我們管理系統應用環境來說,由于負載均衡器本身不需要對數據進行處理,性能瓶頸更多的是在于后臺服務器,通常采用軟負載均衡器已非常夠用且其商業友好的軟件源碼授權使得我們可以非常靈活的設計,無逢的和我們管理系統平臺相結合。