f5和nginx的區別


筆者最近在負責某集團網站時,同時用到了Nginx與F5,

如圖所示,

負載均衡器F5作為處理外界請求的第一道“牆”,將請求分發到web服務器后,

web服務器上的Nginx再進行處理,

靜態內容直接訪問本地門戶

動態數據則通過反向代理指向內網服務

其實Nginx和F5這兩者均可用作網站負載均衡,

那二者有什么區別呢?

筆者在此淺談下Nginx與F5的一些區別。

目前很多網站或應用在設計之初

都會為高並發的數據請求做負載均衡,

不差錢的土豪用戶一般會直接買F5硬件設備作為其負載均衡器,

原因不用多說,其功能強大,

不僅包含負載均衡還包括

  1. 應用交換
  2. 會話交換
  3. 狀態監控
  4. 智能網絡地址轉換
  5. 通用持續性
  6. 響應錯誤處理
  7. IPv6網關
  8. 高級路由
  9. 智能端口鏡像
  10. SSL加速
  11. 智能HTTP壓縮
  12. TCP優化
  13. 第7層速率整形
  14. 內容緩沖
  15. 內容轉換
  16. 連接加速
  17. 高速緩存
  18. Cookie加密
  19. 選擇性內容加密
  20. 應用攻擊過濾
  21. 拒絕服務(DoS)攻擊
  22. SYN Flood保護
  23. 防火牆過濾

等功能,

是不是很強大?

當然價格也是讓人很“心動”。

而一些預算並不高,正在初期發展的網站來說,

Nginx這種軟負載也能很好的滿足其數據分流的需求,

下面我們先來看看Nginx是如何滿足我們的負載均衡需求的:

一、什么是Nginx

  • Nginx:
    • 高性能的HTTP和反向代理服務器
    • 同時支持作為IMAP/POP3/SMTP代理服務器。
    • 目前被很多網站應用為其HTTP軟負載均衡器。
    • 高效的性能、良好的穩定性、豐富的功能集、示例配置文件低系統資源的消耗
    • 正逐漸被大型互聯網公司所青睞。
    • 例如騰訊、淘寶、新浪等大型門戶及商業網站
    • 都采用Nginx進行HTTP網站的數據分流。

二、Nginx功能特點:

  1. 工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名目錄結構
  2. Nginx對網絡的依賴比較小;
  3. Nginx安裝和配置比較簡單,測試起來比較方便;
  4. 可以承擔高的負載壓力且穩定,一般能支撐超過1萬次的並發
  5. Nginx可以通過端口檢測到服務器內部的故障,
    1. 比如根據服務器處理網頁返回的狀態碼、超時等等,
    2. 並且會把返回錯誤的請求重新提交到另一個節點,
    3. 不過其中缺點就是不支持url來檢測
  6. Nginx對請求的異步處理可以幫助節點服務器減輕負載;
  7. Nginx能支持http和Email;

三、原理

Nginx采用的是反向代理技術,代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,

並將從服務器上得到的結果返回給internet上請求連接的客戶端,

此時代理服務器對外就表現為一個服務器。

反向代理負載均衡技術是

把將來自internet上的連接請求以反向代理的方式

動態地轉發給內部網絡上的多台服務器進行處理,

從而達到負載均衡的目的。

具體是怎么運行的呢?

其實當Nginx啟動后,

其工作進程是由配置文件對其進行初始化的,

  1. 主進程處理配置文件中的讀取端口綁定等特權操作,
  2. 之后創建一小組子進程,
  3. 由這些子進程進行請求的處理,
  4. 同時緩存加載器-加載硬盤中緩存到內存中,
  5. 接着退出,保證資源開銷始終保持着較低的狀態。

可以看出,創建的子進程其實在負責所有的工作,處理網絡連接硬盤讀寫操作、以及上游服務器通信

如圖所示:

  • masert process是其主線程
  • worker process 顧名思義,“我是具體干活的啦”,
  • 筆者截圖的進程還是比較少的,
  • 因為這是自己的服務器,沒有太多服務,
  • 實際業務中有可能會出現幾十個worker process,
  • 還是挺壯觀的。

Nginx推薦的配置是,一個工作進程對應一個CPU內核,確保硬件資源的有效利用。

一旦NGINX服務起來,僅有工作進程在忙,每個工作進程采用非阻塞地方式處理多個連接,降低上下文切換的次數。

每個工作進程都是單線程且獨立運行,負責獲取新連接並進行處理。

進程之間通過共享內存進行通信,

諸如緩存數據會話持續化數據(ession persistence data),以及其他共享資源

四、F5的負載均衡功能

其實看到Nginx的原理和功能,是不是覺得已經不需要F5了?

當然也不是,F5畢竟是負載均衡的老前輩,一直以來都以功能強大,性能穩定著稱,很多功能其實是軟負載無法做到的。

F5 BIG-IP用作HTTP負載均衡器的主要功能:

  1. F5 BIG-IP提供12種靈活的算法將所有流量均衡的分配到各個服務器,而面對用戶,只是一台虛擬服務器
  2. F5 BIG-IP可以確認應用程序能否對請求返回對應的數據。
    1. 假如F5 BIG-IP后面的某一台服務器發生服務停止、死機等故障,
    2. F5會檢查出來並將該服務器標識為宕機,
    3. 從而不將用戶的訪問請求傳送到該台發生故障的服務器上。
    4. 這樣,只要其它的服務器正常,用戶的訪問就不會受到影響。
    5. 宕機一旦修復,F5 BIG-IP就會自動查證應用,保證對客戶的請求作出正確響應並恢復向該服務器傳送。
  3. F5 BIG-IP具有動態Session的會話保持功能,筆者也是在網站中使用的F5,將用戶IPSession通過F5進行的綁定,使其Session保持一致。
  4. F5 BIG-IPiRules功能可以做HTTP內容過濾,根據不同的域名URL,將訪問請求傳送到不同的服務器。

五、二者對比

F5,硬件
  • 優點:能夠直接通過智能交換機實現,處理能力更強,而且與系統無關,負載性能強,更適用於一大堆設備、大訪問量、簡單應用。
  • 缺點:成本高,除設備價格高昂,而且配置冗余,很難想象后面服務器做一個集群,但最關鍵的負載均衡設備卻是單點配置,無法有效掌握服務器及應用狀態。

硬件負載均衡,一般都不管實際系統與應用的狀態,而只是從網絡層來判斷,所以有時候系統處理能力已經不行了,但網絡可能還來得及反應。

(這種情況非常典型,比如應用服務器后面內存已經占用很多,但還沒有徹底不行,如果網絡傳輸量不大就未必在網絡層能反映出來)

Nginx,軟負載
  • 優點:基於系統與應用的負載均衡,能夠更好地根據系統與應用的狀況來分配負載。這對於復雜應用是很重要的,性價比高,實際上如果幾台服務器,用F5之類的硬件產品顯得有些浪費,而用軟件就要合算得多,因為服務器同時還可以跑應用、做集群等。

  • 缺點:負載能力受服務器本身性能的影響,性能越好,負載能力越大。

結語

其實還是如筆者最初說到的:

  • 如果不差錢,完全可以直接上F5,同時配以Nginx作為負載均衡及web容器,處理大數據量的用戶並發完全沒問題。
  • 如果預算不夠,其實Nginx目前也能滿足大多數用戶需求了

當然也不能迷信負載均衡,對我們IT工作者來說的話,程序SQL等涉及數據處理的業務邏輯的地方,

無論是架構還是代碼亦或是模型的合理性,其重要性永遠是要高於中間件的,這點想必是每位ITer的共鳴。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM