# Вопрос Opus: как добиться 100% загрузки через edge LB без ретраев ## СУТЬ Edge LB (NUBES LLC, 185.247.187.151) дропает ~50-70% новых TCP-соединений при POST > ~48KB. НО: внутри k8s кластера — 100%. После установки соединения (keep-alive) — 8/10. ## ДОКАЗАННЫЕ ФАКТЫ - Flask под напрямую: 100% (102400 байт, 4ms) - Ingress HTTPS изнутри кластера: 100% - Снаружи (новый TCP на каждый запрос): ~30-50% - Снаружи (HTTP/1.1 keep-alive, одно соединение): 80% (первые 2 таймаута, потом OK) - Маленькие POST (< 48KB): 100% ## ЧТО УЖЕ СДЕЛАНО (без эффекта) - proxy-request-buffering: off (ingress annotation) — частично помогло - keep-alive увеличен (10→75) — ухудшило (агрессивнее дроп) - HTTP/2 уже включён (http2 on) - ModSecurity DetectionOnly (не блокирует) - Ретраи на клиенте — КОСТЫЛЬ, не решение ## ГЛАВНЫЙ ВОПРОС Как настроить k8s nginx ingress (Shturval) так, чтобы edge LB НЕ дропал соединения? Что именно в нативном nginx (contracts) позволяет ему работать, а k8s ingress — нет? ## Конфиг работающего contracts (nginx на ВМ, тот же IP) ```nginx location /upload { proxy_pass http://127.0.0.1:8766; client_max_body_size 100m; proxy_request_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Content-Type $content_type; proxy_set_header Content-Length $content_length; } ``` ## Текущий ingress loadtest (k8s) ```yaml annotations: nginx.ingress.kubernetes.io/proxy-body-size: "1024m" nginx.ingress.kubernetes.io/proxy-connect-timeout: "120" nginx.ingress.kubernetes.io/proxy-read-timeout: "600" nginx.ingress.kubernetes.io/proxy-send-timeout: "600" nginx.ingress.kubernetes.io/proxy-request-buffering: "off" ``` ## ОГРАНИЧЕНИЯ - Только k8s (ingress, поды, деплойменты) - Edge LB не наш - Никаких ретраев/костылей — нужно 100% без них