nginx Входные контроллеры 499 - PullRequest
0 голосов
/ 10 января 2020

У меня есть кластер azure Kubernetes, развернутый, как показано ниже. У меня есть длительный API, который занимает около 2 минут. Иногда, когда запрос обрабатывается в POD kubernetes, входной контроллер nginx регистрирует ошибку с кодом состояния 499. Согласно журналу nginx, 499 - это закрытое соединение клиента. Я установил время nginx на 10 минут (для теста). Я хочу понять, кто является клиентом для nginx здесь. Это балансировщик нагрузки приложения или POD приложения? Обратите внимание, что базовое. NET ядро ​​Api продолжает обработку запроса

Log:

[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

enter image description here

1 Ответ

0 голосов
/ 13 января 2020

Чтобы узнать, что означает журнал, вам нужно знать, как он определяет формат журналов для Nginx. Таким образом, вы можете go внутри модуля входа Nginx и взглянуть на конфигурацию для 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 определяет переменные в формате логов. Документ описывается здесь:

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

И в вашем точном журнале удаленный адрес - "10.XX.XX.5". Это IP-адрес узла AKS, на котором размещен входной модуль Nginx.

A. Клиент для Nginx здесь - это узел AKS, на котором размещается входной модуль Ningx.

Наконец, как мне кажется, путь маршрутизации запросов AGW -> ALB -> AKS_node -> Nginx_ingress_controller -> service -> application_pod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...