🏗️infrastructure / nginx

Неверная конфигурация балансировщика Nginx

junior20 min🏢 B2B SaaS (enterprise clients behind corporate NAT)
NginxLoad Balancingupstreamkeepaliveip_hash

Стек технологий

  • Nginx 1.24
  • Node.js 20
  • 5 backend nodes
  • Prometheus
  • Grafana
🚨

Сценарий инцидента

Вчера ваша команда задеплоила новую фичу. Сегодня SRE сообщает, что один бэкенд-нод работает на 94% CPU, тогда как остальные четыре практически простаивают.
Время ответа с этого нода растёт. Балансировщик нагрузки — Nginx.
Общий трафик — 800 RPS. Код не изменялся с прошлой недели. В чём проблема?

🔍 Артефакты расследования

Раскрывай артефакты один за другим. Каждая улика приближает тебя к корневой причине.

📊
Улика #1 · graph
Распределение запросов по бэкенд-нодам
💡 Паттерн распределения говорит о том, КАК балансировщик маршрутизирует запросы
📋
Улика #2 · log
Лог доступа Nginx (последние 50 запросов)
💡 Посмотрите на исходные IP-адреса — что у них общего?
⚙️
Улика #3 · config
Конфигурация Nginx upstream
💡 Что делает ip_hash, когда большинство клиентов имеют один и тот же исходный IP?
📋
Улика #4 · log
Метрики ресурсов нодов
💡 Соответствует ли использование ресурсов распределению трафика?