Я создал VPC с четырьмя подсетями, где две подсети являются частными и две общедоступными. Экземпляры в частной подсети имеют только частные IP-адреса и выходят в Интернет через IGW / NAT GW.
Я могу успешно создать кластеры ECS, охватывающие мои общедоступные подсети, но когда я создаю кластер во внутренних подсетях, экземпляры кластера не могут зарегистрироваться в кластере.
Я подозреваю проблемы с сетью и отлаживаю их с помощью Flowlogs. В то же время я надеялся, что кто-нибудь сможет пролить свет на то, какие порты должны быть открыты, или на другую конфигурацию, участвующую в управлении кластером ECS.
Я подозреваю, что это связано с портом, поскольку довольно стандартно, что вещи в кластере должны взаимодействовать. Две статьи ниже должны дать вам ответ на этот вопрос. Мне кажется, вероятно, потребуется следующее
Обратите внимание, что я мало знаю о ECS и просто выполнил пару поисков в Google и прочитал документацию. ECS основан на Docker, поэтому я посмотрел на это. Потребуются некоторые эксперименты.
У Digital Ocean есть хорошая статья о Докер-порты.
TCP-порт 2376 для безопасного взаимодействия с клиентом Docker. Этот порт необходим для работы Docker Machine. Docker Machine используется для организации хостов Docker. TCP-порт 2377. Этот порт используется для связи между узлами Docker Swarm или кластера. Его нужно только открыть на узлах диспетчера. TCP и UDP-порт 7946 для связи между узлами (обнаружение контейнерной сети). Порт UDP 4789 для оверлейного сетевого трафика (входящая сеть контейнеров).
Тогда Документация Amazon упоминает некоторые из тех же портов.
Диапазон эфемерных портов по умолчанию составляет от 49153 до 65535, и этот диапазон используется для версий Docker до 1.6.0. Для Docker версии 1.6.0 и новее демон Docker пытается прочитать временной диапазон портов из / proc / sys / net / ipv4 / ip_local_port_range; если этот параметр ядра недоступен, используется диапазон временных портов по умолчанию. Не следует пытаться указать порт хоста в диапазоне временных портов, потому что они зарезервированы для автоматического назначения. Обычно порты ниже 32768 выходят за пределы временного диапазона портов.
По умолчанию зарезервированы порты 22 для SSH, порты Docker 2375 и 2376, а также порты агента контейнера Amazon ECS 51678 и 51679. Любой порт хоста, который был ранее указан в запущенной задаче, также зарезервирован во время выполнения задачи (после задачи останавливается, порт хоста освобождается). Текущие зарезервированные порты отображаются в оставшихся ресурсах вывода DescribeContainerInstances, и экземпляр контейнера может иметь до 100 зарезервированных портов одновременно, включая зарезервированные порты по умолчанию (автоматически назначенные порты не учитываются в ограничение в 100 зарезервированных портов).
Обратите внимание, что согласно Википедия и комментарии ниже, возможно, потребуется расширить диапазон временных портов.
Важно помнить, что сетевой ACL для подсети, содержащей шлюз NAT, требует правила для входящего SSL (443). В противном случае исходящий SSL не может быть выполнен из частной подсети. Сетевой трафик из моей частной подсети в http://cloudformation.eu-central-1.amazonaws.com/ был заблокирован на уровне подсети.
Это сделало команду оболочки, работающую на внутренних экземплярах, cfn-сигнал блокировать. Обязанность команды cfn-signal - сообщить формированию облака, что экземпляр запущен и работает, чтобы сценарий мог продолжать создавать зависимые ресурсы.
Я думал об этом как о проблеме ECS, а не об облачной информации.