簡體   English   中英

nginx 入口 controller 限制-rps 似乎不起作用

[英]nginx ingress controller limit-rps seems not working

嘗試進行一些負載測試時,我有一個奇怪的行為。

環境:

  • NGINX 入口 controller 版本:0.44.0
  • Kubernetes 版本:1.17.8
  • openidc.lua 版本:1.7.4

情況如下:

  • nginx 入口 controller 被部署為守護程序集,並且由於 openidc 模塊,我激活了 ClientIP 的 sessionAffinity。
  • 我有一個簡單的無狀態 rest 服務部署了一個基本入口,該入口已經過負載測試(那個沒有 sessionAffinity)。

在沒有 sessionAffinity ClientIP 的情況下對 rest 服務進行負載測試時,我達到了遠遠超過 25 req/s(大約 130 req/s 之前服務資源開始崩潰,這是另一回事)。 但是激活 sessionAffinity 后,我只能達到 25 req/s。

經過一番研究,我發現了一些有趣的東西,描述如下: https://medium.com/titansoft-engineering/rate-limiting-for-your-kubernetes-applications-with-nginx-ingress-2e32721f7f57

因此,由於負載測試應始終由同一個 nginx pod 提供服務,因此公式應為:成功請求 = 周期 * 速率 + 突發

所以我確實嘗試在我的入口添加注釋 nginx.ingress.kubernetes.io/limit-rps: "100",但沒有運氣,仍然是相同的 25 req/s。

我還嘗試了以下注釋的不同組合: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#rate-limiting ,但也沒有運氣。

我錯過了什么嗎?

事實上,它比這更惡毒。

它與 sessionAffinity 無關,也與速率限制無關(實際上默認情況下沒有,我一開始沒有得到它,只有當我們想限制 ddos 時才會有速率限制)。

問題是,我在 configmap 中添加了 modsecurity 和 owasp 規則的選項。

正因為如此,請求處理非常慢,它限制了每秒的請求數。 當 sessionAffinity 沒有設置時,我沒有看到概率,因為 req/s 是公平的,分布在所有 pod 中。

但是使用 sessionAffinity,因此在單個 pod 上進行負載測試,問題清晰可見。

所以我不得不刪除 modsecurity 和 owasp,這將由應用程序負責。

有點難過,因為我想在 nginx 上獲得更多的中央安全性,所以應用程序不需要處理它,但不是以那個成本...

我很想知道 modsecurity 到底做了什么這么慢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM