在Kubernetes ingress Ngnix中编辑max_conns?

时间:2018-02-07 08:46:58

标签: nginx kubernetes nginx-reverse-proxy kubernetes-ingress

我试图限制Nginx入口中服务器的并发连接数。

是否支持Ngnix入口的max_conns?我该如何编辑或添加它?

  

MAX_CONNS =数   限制与代理服务器的最大并发活动连接数(1.11.5)。默认值为零,表示没有限制。如果服务器组不驻留在共享内存中,则限制适用于每个工作进程。

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream

使用max_conn

表示Nginx conf
upstream backend {
server backend1.example.com  max_conns=3;
server backend2.example.com;}

感谢

2 个答案:

答案 0 :(得分:2)

因此,为了添加max_conns(或入口配置映射不支持的任何其他参数),需要做的是更改模板。

更改模板/etc/nginx/template/nginx.tmpl,如下所示:

var firebaseObservationHandle: UInt?    

func getAllUsers(completion:@escaping(_ result:Bool , _ data : [Student]) -> () )
{

    ref = Database.database().reference()

    if let handle = firebaseObservationHandle {
        ref.removeObserver(withHandle: handle)
    }

    var array = [Student]()


    firebaseObservationHandle = ref.child("students").observe(.value, with: { snapshot in

        ...

    }
}

(你可以从pod nginx-ingress-controller获取完整文件,只需在pod上运行bash并捕捉它) 会做的。 现在使用本地nginx.tmpl创建一个configmap:

upstream {{ $upstream.Name }} {
    # Load balance algorithm; empty for round robin, which is the default
    {{ if ne $cfg.LoadBalanceAlgorithm "round_robin" }}
    {{ $cfg.LoadBalanceAlgorithm }};
    {{ end }}

    {{ if $upstream.UpstreamHashBy }}
    hash {{ $upstream.UpstreamHashBy }} consistent;
    {{ end }}

    {{ if (gt $cfg.UpstreamKeepaliveConnections 0) }}
    keepalive {{ $cfg.UpstreamKeepaliveConnections }};
    {{ end }}

    {{ range $server := $upstream.Endpoints }}server {{ $server.Address | formatIP }}:{{ $server.Port }} max_fails={{ $server.MaxFails }} fail_timeout={{ $server.FailTimeout }} max_conns=1;
    {{ end }}
}

然后使用此yaml将卷装入部署:

kubectl create configmap nginx-template --from-file=nginx.tmpl=/localpath/nginx.tmpl
  • 我需要手动重启我的NGINX入口,但我编辑了Re​​plicationController,因为我没有进行部署(我猜它是因为我在minikube上)

答案 1 :(得分:0)

根据https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/annotations.md#rate-limiting,有一些限制连接数的注释:

  

注释nginx.ingress.kubernetes.io/limit-connections,   nginx.ingress.kubernetes.io/limit-rps,和   nginx.ingress.kubernetes.io/limit-rpm定义了一个限制   可以通过单个客户端IP地址打开的连接。这个可以   用于缓解DDoS攻击。

     

nginx.ingress.kubernetes.io/limit-connections:并发数量   允许来自单个IP地址的连接。

     

nginx.ingress.kubernetes.io/limit-rps:可能的连接数   每秒钟从一个给定的IP接受。

     

nginx.ingress.kubernetes.io/limit-rpm:可能的连接数   每分钟从一个给定的IP接受。

您需要在Ingress规则中添加这些注释。