Значит, мы говорим о чем-то подобном?
Client 11.11.11.11 ----> AWS NLB/ELB public 22.22.22.22 ----> AWS ECS network router or whatever (kubernetes) --------> ECS server instance running a server application 10.3.3.3:8080 (kubernetes pod)
Вы настраиваете группу безопасности на AWS NLB или на AWS ECS? (Я думаю, оба?)
Группы безопасности должны разрешать входящий трафик c, если вы разрешаете 0.0.0.0/0
порт 80
.
Они действительно сохраняют состояние. Они позволят соединению продолжаться в обоих направлениях после его установки (то есть приложение может отправлять ответ).
Однако состояние брандмауэра обычно не сохраняется более 60 секунд (не уверен, какая технология AWS используется using), поэтому соединение может быть "потеряно", если серверу потребуется более 1 минуты для ответа. Требуется ли время для генерации ответа HTTP-серверу? Если это веб-сокет или TCP-сервер, время от времени он тратит целые минуты, не отправляя и не получая никакого трафика c?
Как я это вижу. У нас есть два межсетевых экрана с отслеживанием состояния. Первый с NLB. Второй с ECS.
ECS эквивалентен kubernetes, он должен выполнять тонну iptables magi c для распределения трафика c и отслеживания соединений. (Для справки, обычные кубернеты хорошо работают с iptables, а iptables имеет множество очень важных настроек, таких как длительность соединения и тайм-ауты).
Хорошие новости. Если ломается при открытии inbound 0.0.0.0:80
, но работает при открытии inbound 0.0.0.0:80
+ outbound 0.0.0.0:*
. Это определенно проблема из-за того, что брандмауэр разрывает соединение, скорее всего, из-за потери состояния. (или это вообще не отслеживание состояния, но я почти уверен, что группы безопасности сохраняют состояние).
Отключение может произойти на любом из двух межсетевых экранов. У меня никогда не было проблем с одним голым NLB / ELB, поэтому я предполагаю, что проблема в ECS или их взаимодействии.
К сожалению, мы не можем отладить это, и у нас есть очень мало информации о том, как это работает внутри. Единственный вариант - обратиться в службу поддержки AWS для расследования.