Nginx 裸機、虛擬機、K8S Ingress Controller 不同部署方式性能對比

Nginx 是一款輕量級的 Web 服務器、反向代理服務器,由於它的內存佔用少,啓動極快,併發能力強,在互聯網項目中廣泛應用。

用途一樣,部署方式不盡相同,有的企業數據敏感,Nginx 會運行在本地環境,這個時候可以選擇裸機或者虛擬機部署。但隨着公共雲呈爆炸式增長,這時企業也在採用混合雲,在公有云和本地(例如在私有數據中心)中運行工作負載。

公有云一般採用 Kubernetes,它可以輕鬆部署基於容器的應用程序。但是,在 Kubernetes 上運行的生產應用程序需要經過驗證的生產級應用程序交付解決方案。NGINX Ingress Controller 將值得信賴的 NGINX 開源和 NGINX Plus 軟件負載均衡器與自動化配置相結合,以確保 Kubernetes 集羣中的應用程序可靠、安全且高速地交付。

爲了確定滿足您的性能和擴展需求的最佳且最實惠的本地解決方案,我們提供了一個性能測試指標,用於比較不同環境中的 NGINX 性能。

測試方法

我們使用了兩種架構來衡量和比較 NGINX 在不同環境下的性能。對於每個架構,我們運行了單獨的測試集來衡量兩個關鍵指標,每秒請求數 (RPS) 和每秒 SSL/TLS 事務數 (TPS) 。

傳統的本地架構

NGINX 是兩種條件下的被測系統 (SUT):在裸機和虛擬機環境中運行。在這兩種情況下,四個 Ixia 客戶端生成請求,NGINX 負載均衡到四個 Ixia Web 服務器。Web 服務器響應每個請求返回一個 128 字節的文件。

我們使用以下軟件和硬件進行測試:

這是 nginx.conf 配置:https://gist.github.com/nginx-gists/b52ea661c2f205fa0d519d66fd65a34c

Kubernetes 架構

SUT 是運行在 Rancher Kubernetes Engine (RKE) 裸機平臺上的 NGINX Ingress Controller(基於 NGINX Open Source)。四個 Ixia 客戶端生成請求,NGINX Ingress Controller 將這些請求定向到後端 Kubernetes 部署,這是一個 Web 服務器,它返回一個 1KB 的文件以響應每個請求。

我們使用以下軟件和硬件進行測試:

這是裸機 RKE 上部署 NGINX Ingress Controller 配置文件:https://gist.github.com/nginx-gists/b52ea661c2f205fa0d519d66fd65a34c

收集的指標

我們運行測試來收集兩個性能指標:

Ixia 客戶端發送了一系列 HTTPS 請求,每個請求都在一個新連接上。Ixia 客戶端和 NGINX 執行 TLS 握手以建立安全連接,然後 NGINX 將請求代理到後端,請求完成後連接關閉。

性能分析

表格報告了在傳統架構和 Kubernetes 架構中 NGINX 可用不同數量的 CPU 實現的 RPS 和 SSL TPS 數量。

傳統的本地架構

NGINX 在裸機上的性能呈線性增長,直到可用 CPU 數量達到 8 個。我們無法測試更多的內核,因爲當有 8 個或更多內核時,Ixia 客戶端無法生成足夠的請求來使 SUT 飽和(達到 100% CPU 利用率)。

我們發現,與裸機相比,虛擬化使性能下降了很小但可以衡量的程度。虛擬機程序中的 CPU 指令比裸機上的相同指令需要更多的時鐘週期,這會導致額外的開銷。

裸機和虛擬機對比

Kubernetes 架構

當我們將內核數量擴展到 8 個時,Kubernetes 中 NGINX Ingress Controller 的性能會線性增加。

將下表中的結果與傳統架構的結果進行比較,我們發現在 Kubernetes 中運行 NGINX(作爲 NGINX Ingress Controller)會顯着降低網絡綁定操作(如服務請求)的性能(以 RPS 衡量)。這是由於用於連接到其他服務的底層容器網絡堆棧。

另一方面,我們發現傳統環境和 Kubernetes 環境對於 CPU 密集型操作(如 SSL/TLS 握手(以 TPS 衡量))之間沒有性能差異——實際上,Kubernetes 中的 TPS 稍好一些。

此外,當我們啓用超線程 (HT) 時,我們看到 TPS 大約增加了 10%。

Kubernetes Nginx

結論

以下是一些關鍵要點,可幫助您瞭解您的工作負載最適合運行的環境,以及對所選環境的性能影響。

原文鏈接

  1. https://www.nginx.com/blog/comparing-nginx-performance-bare-metal-and-virtual-environments/?utm_source=thenewstack&utm_medium=website&utm_campaign=platform#Metrics-Collected

  2. https://www.nginx.com/resources/datasheets/nginx-ingress-controller-kubernetes/

  3. https://www.nginx.com/blog/comparing-nginx-performance-bare-metal-and-virtual-environments/?utm_source=thenewstack&utm_medium=website&utm_campaign=platform#Metrics-Collected

  4. https://gist.github.com/nginx-gists/b52ea661c2f205fa0d519d66fd65a34c

  5. https://www.vmware.com/products/esxi-and-esx.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Bs6zvS0q5HDfKmWciFsnjw