使用领事模板将2000多种服务呈现给nginx.conf

时间:2020-05-01 18:26:27

标签: consul consul-template

我们有一个使用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

感谢任何想法/建议。

1 个答案:

答案 0 :(得分:1)

hashicorp/consul#7159中引入了http_max_conns_per_client参数来寻址CVE-2020-7219。对于大多数用例,默认值200似乎是一个合理的默认值。但是,在您这样的情况下,有意义的是提高此值。

提出此问题的唯一弊端是,任何能够与Consul API进行通信的客户端都最多可以创建5000个连接。仅针对特定客户不可能提高此限制。在将这些更改推向生产时,请记住这一点。