【问题标题】:nginx Ingress controller logs 499nginx 入口控制器日志 499
【发布时间】:2020-01-10 14:21:18
【问题描述】:

我有一个 azure Kubernetes 集群,部署如下所示。我有一个长时间运行的 api,大约需要 2 分钟才能完成。有时,当请求在 kubernetes POD 上处理时,nginx 入口控制器会记录一个状态码为 499 的错误。根据 nginx 日志,499 是客户端关闭的连接。我已将 nginx 超时设置为 10 分钟(用于测试)。我想在这里了解谁是 nginx 的客户端。 是应用程序负载均衡器还是应用程序 POD?请注意,底层 .NET 核心 Api 继续处理请求

日志:

[10.XX.XX.5] "POST /test HTTP/1.1" 499 0 "https://test.test/" 2345 120.601 [default-test-service-80] 10.xx.xx.xx:80 0 120.603

【问题讨论】:

  • 您的问题有什么更新吗?我的回答能帮你解决吗?
  • 你的回答很有道理。如果这是一个问题,我正在寻找在 AKS 节点级别解决此问题的方法。
  • 还有更新吗?你用我的回答解决问题了吗?如果是,请采纳。
  • @Shetty 有什么更新吗?

标签: .net azure nginx-ingress azure-aks


【解决方案1】:

要了解日志的含义,您需要知道它是如何定义 Nginx 的日志格式的。所以你可以进入 Nginx ingress 的 pod 里面查看 Nginx 的配置,它显示如下:

log_format upstreaminfo '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length $request_time [$proxy_upstream_name] [$proxy_alternative_upstream_name] $upstream_addr $upstream_response_length $upstream_response_time $upstream_status $req_id';

您可以找到有关 Nginx 如何以日志格式定义变量的文档。 document 在这里描述:

$remote_addr - x.x.x.x - The IP address of the client making the request.

在您的确切日志中,远程地址是“10.XX.XX.5”。它是托管 Nginx 入口 pod 的 AKS 节点的 IP 地址。

A.这里的 Nginx 客户端是托管 Ningx Ingress pod 的 AKS 节点。

最后,我认为,请求路由路径是 AGW -> ALB -> AKS_node -> Nginx_ingress_controller -> service -> application_pod。

【讨论】:

    【解决方案2】:

    检查您的应用程序网关超时

    HTTP 设置 > 您的设置名称 > 请求超时(秒)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 2019-04-17
      • 2018-11-15
      • 2019-03-23
      • 2018-10-29
      • 2021-03-07
      • 1970-01-01
      相关资源
      最近更新 更多