Ingress限流

先说结论:

ingress节点数量=n0

ingress限流配置
nginx.ingress.kubernetes.io/limit-rps: "n1"  
nginx.ingress.kubernetes.io/limit-burst-multiplier: "n2"

每分钟限流连接数为 (60*n1+n1*n2)*n0

ingress限流配置
nginx.ingress.kubernetes.io/limit-rps: "n1"  
nginx.ingress.kubernetes.io/limit-burst-multiplier: "n2"
每分钟限流连接数为 (n1+n1*n2)\n0

所以,当n2为定值的情况下,set rps=1和rpm=60并不等价。

解析

nginx的限流是一个队列模型。所以限流连接数为 队列长度+队列处理能力。
对应下面的配置即,rate为队列处理能力。burst为队列长度。

nginx配置

ingress控制器会把注解修改成如下nginx配置,此例子之修改了limit-rps=5或者limit-rpm=300,limit-burst-multiplier(放大系数)为默认值5。

# qps = 5
#实际效果为每分钟限流325
limit_req_zone $limit_cmRfaW5ncmVzcy1yZC1oZWxsby1sZWdhY3k zone=rd_ingress-rd-hello-legacy_rps:5m rate= 5r/s ;
limit_req zone=rd_ingress-rd-hello-legacy_rps burst=25 nodelay;
# qpm = 300
#实际效果为每分钟限流1800
limit_req_zone $limit_cmRfaW5ncmVzcy1yZC1oZWxsby1sZWdhY3k zone=rd_ingress-rd-hello-legacy_rpm:5m rate= 300r/m ;
limit_req zone=rd_ingress-rd-hello-legacy_rpm burst=1500 nodelay;

参考:
https://medium.com/titansoft-engineering/rate-limiting-for-your-kubernetes-applications-with-nginx-ingress-2e32721f7f57
https://www.nginx.com/blog/rate-limiting-nginx/

posted on 2022-07-19 08:35  yangras  阅读(1276)  评论(0编辑  收藏  举报

导航