1

说明: k8s nginx-ingress-controllers 暴露在负载均衡器类型(由metallb 实现)中,ip addr 为192.168.1.254。另一个 nginx 集群在 k8s 集群前面,它只有一个上游,即 192.168.1.254(lb ip addr)。请求流路由:client -> nginx clusters -> nginx-ingress-controllers-> services。

问题:有时 nginx 集群报告非常小的“上游(192.168.1.254)超时”,最后客户端从 nginx 得到 504 超时。

但是当我放弃 nginx 集群并将请求流切换到:客户端-> nginx-ingress-controllers-> 服务时。一切顺利,客户端不再出现 504 超时。我确定 nginx 集群和 nginx 入口之间的网络控制器运行良好。

大多数请求可以由 nginx 集群处理并返回状态 200。我不知道为什么很少有请求报告“上游超时”并返回状态 504。

系统架构

nginx集群报告超时

tcpdump 包跟踪

4

1 回答 1

0

那很可能是文件上传速度慢(您显示的请求都是POST),这超出了限制。

您可以为可以上传的应用程序路径设置更大的超时值。如果您正在使用入口控制器,则最好为此创建一个单独的入口对象。您可以使用这些注释管理超时,例如:

  annotations:
    nginx.ingress.kubernetes.io/proxy-send-timeout: 300s
    nginx.ingress.kubernetes.io/proxy-read-timeout: 300s

这两个注释将最大上传时间定义为 5 分钟。

如果您手动配置 nginx,您可以使用proxy_read_timeoutproxy_send_timeout设置限制。

于 2021-01-22T07:58:00.197 回答