我们有一个使用consul-template为2000+服务运行的nginx conf文件,运行Consul 1.6.1。
我们正尝试升级到Consul 1.7.2,并遇到consul-template DDoSes Consul节点代理的问题。
节点/客户端代理v1.6.1正常运行,但是节点/客户端代理v1.7.2开始拒绝领事模板的连接。
有问题的模板(简化版)为:
{{- range services }}
{{- if (in .Tags "nginxqa1") }}
{{- range service .Name }}
{{ .Address }}
{{- end }}
{{- end }}
{{- end }}
在节点/客户端领事上添加以下限制配置条目似乎可以解决此问题:
http_max_conns_per_client = 5000
但是,这有什么影响吗?
是否有更好的方法? 我看到以下消息:
2020/05/01 18:24:51.653257 [WARN] (runner) watching 2631 dependencies - watching this many dependencies could DDoS your consul cluster
感谢任何想法/建议。
答案 0 :(得分:1)
hashicorp/consul#7159中引入了http_max_conns_per_client
参数来寻址CVE-2020-7219。对于大多数用例,默认值200似乎是一个合理的默认值。但是,在您这样的情况下,有意义的是提高此值。
提出此问题的唯一弊端是,任何能够与Consul API进行通信的客户端都最多可以创建5000个连接。仅针对特定客户不可能提高此限制。在将这些更改推向生产时,请记住这一点。