什么是Nginx:
Nginx:高性能的 HTTP和反向代理服務器,同時支持作為IMAP/POP3/SMTP代理服務器。目前被很多網站應用為其HTTP軟負載均衡器。高效的性能、良好的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗正逐漸被大型互聯網公司所青睞。例如騰訊、淘寶、新浪等大型門戶及商業網站都采用Nginx進行HTTP網站的數據分流。
Nginx功能特點:
1、工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構;2、Nginx對網絡的依賴比較小;3、Nginx安裝和配置比較簡單,測試起來比較方便;
4、可以承擔高的負載壓力且穩定,一般能支撐超過1萬次的並發;
5、Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測;
6、Nginx對請求的異步處理可以幫助節點服務器減輕負載;7、Nginx能支持http和Email;
Nginx,軟負載
優點:基於系統與應用的負載均衡,能夠更好地根據系統與應用的狀況來分配負載。這對於復雜應用是很重要的,性價比高,實際上如果幾台服務器,用F5之類的硬件產品顯得有些浪費,而用軟件就要合算得多,因為服務器同時還可以跑應用、做集群等。
缺點:負載能力受服務器本身性能的影響,性能越好,負載能力越大。
F5,硬件
優點:能夠直接通過智能交換機實現,處理能力更強,而且與系統無關,負載性能強,更適用於一大堆設備、大訪問量、簡單應用。
缺點:成本高,除設備價格高昂,而且配置冗余,很難想象后面服務器做一個集群,但最關鍵的負載均衡設備卻是單點配置,無法有效掌握服務器及應用狀態。
硬件負載均衡,一般都不管實際系統與應用的狀態,而只是從網絡層來判斷,所以有時候系統處理能力已經不行了,但網絡可能還來得及反應(這種情況非常典型,比如應用服務器后面內存已經占用很多,但還沒有徹底不行,如果網絡傳輸量不大就未必在網絡層能反映出來)
Nginx推薦的配置是,一個工作進程對應一個CPU內核,確保硬件資源的有效利用。
一旦NGINX服務起來,僅有工作進程在忙,每個工作進程采用非阻塞地方式處理多個連接,降低上下文切換的次數。
每個工作進程都是單線程且獨立運行,負責獲取新連接並進行處理。進程之間通過共享內存進行通信,諸如緩存數據,會話持續化數據(ession persistence data),以及其他共享資源。
F5的負載均衡功能
其實看到Nginx的原理和功能,是不是覺得已經不需要F5了?當然也不是,F5畢竟是負載均衡的老前輩,一直以來都以功能強大,性能穩定著稱,很多功能其實是軟負載無法做到的。
F5 BIG-IP用作HTTP負載均衡器的主要功能:
1、F5 BIG-IP提供12種靈活的算法將所有流量均衡的分配到各個服務器,而面對用戶,只是一台虛擬服務器。
2、F5 BIG-IP可以確認應用程序能否對請求返回對應的數據。假如F5 BIG-IP后面的某一台服務器發生服務停止、死機等故障,F5會檢查出來並將該服務器標識為宕機,從而不將用戶的訪問請求傳送到該台發生故障的服務器上。這樣,只要其它的服務器正常,用戶的訪問就不會受到影響。宕機一旦修復,F5 BIG-IP就會自動查證應用保證對客戶的請求作出正確響應並恢復向該服務器傳送。
3、F5 BIG-IP具有動態Session的會話保持功能,筆者也是在網站中使用的F5將用戶IP與Session通過F5進行的綁定,使其Session保持一致。
4、F5 BIG-IP的iRules功能可以做HTTP內容過濾,根據不同的域名、URL,將訪問請求傳送到不同的服務器。
各自的原理
Nginx采用的是反向代理技術,代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。反向代理負載均衡技術是把將來自internet上的連接請求以反向代理的方式動態地轉發給內部網絡上的多台服務器進行處理,從而達到負載均衡的目的。
具體是怎么運行的呢?其實當Nginx啟動后,其工作進程是由配置文件對其進行初始化的,主進程處理配置文件中的讀取、端口綁定等特權操作,之后創建一小組子進程,由這些子進程進行請求的處理,同時緩存加載器加載硬盤中緩存到內存中,接着退出,保證資源開銷始終保持着較低的狀態。
可以看出,創建的子進程其實在負責所有的工作,處理網絡連接、硬盤讀寫操作、以及上游服務器通信。