我试图限制Nginx入口中服务器的并发连接数。
是否支持Ngnix入口的max_conns?我该如何编辑或添加它?
MAX_CONNS =数 限制与代理服务器的最大并发活动连接数(1.11.5)。默认值为零,表示没有限制。如果服务器组不驻留在共享内存中,则限制适用于每个工作进程。
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream
使用max_conn
表示Nginx confupstream backend {
server backend1.example.com max_conns=3;
server backend2.example.com;}
感谢
答案 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
答案 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规则中添加这些注释。