0

我们有一个 nginx conf 文件,它使用 consul-template 生成,用于 2000 多个服务,运行 Consul 1.6.1。

我们正在尝试升级到 Consul 1.7.2 并遇到 consul-template DDoSes Consul 节点代理的问题。

节点/客户端代理 v1.6.1 工作正常,但节点/客户端代理 v1.7.2 开始拒绝来自 consul-template 的连接。

有问题的模板(简化版)是:

{{- 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

任何想法/建议表示赞赏。

4

1 回答 1

1

http_max_conns_per_client参数在hashcorp/consul#7159中引入以解决CVE-2020-7219。对于大多数用例来说,默认值 200 似乎是一个合理的默认值。但是,在某些情况下,例如您的情况,提高此值是有意义的。

提出此问题的唯一缺点是任何能够与 Consul API 通信的客户端都将能够创建多达 5000 个连接。不能仅针对特定客户提高此限制。在将这些更改推送到生产环境时请记住这一点。

于 2020-05-04T17:28:08.723 回答