Частная подсеть не взаимодействует с общедоступной - ошибка проверки работоспособности

Я пытаюсь достичь следующей архитектуры, изображенной в этом блоге < / а>

введите здесь описание изображения

У меня есть служба Fargate, использующая ENI (с частным IP-адресом 10.0.241.85), работающая в частной подсети (назовем 'подсеть-1 < / strong> '). ENI также имеет эластичный IP-адрес, так как в противном случае он не может извлечь образ из ECR. Я не думаю, что это будет иметь значение? Контейнер в моем сервисе предоставляет порты 3000/4000. Затем у меня есть шлюз ALB и NAT в общедоступной подсети (назовем эту «подсеть-2»). ALB направляет трафик на портах 80/443 в необходимую целевую группу. Целевая группа имеет 2 зарегистрированных задачи, нацеленных на частный IP-адрес на ENI (1 на порт 3000, а другой на 4000). Насколько мне известно, это должно разрешить движение, верно?

Для исходящего трафика подсеть-1 имеет маршрут по умолчанию (0.0.0.0/0) к шлюзу NAT в подсеть-2, это должно разрешить трафик, верно?

Все службы находятся в одном VPC и одной зоне доступности (где применимо)

У меня есть 2 группы безопасности, используемые этими службами:

  1. тест
  2. API

тест (входящий) введите описание изображения здесь

тест (исходящий) введите описание изображения здесь

api (входящий) введите описание изображения здесь

api (исходящий) введите описание изображения здесь

Мы используем эфемерные порты для связи между двумя группами безопасности.

ПРИМЕЧАНИЕ. Я удалил здесь пункт назначения, но да, это тестовая группа безопасности.

| Service | Security Groups |
|---------|-----------------|
| ENI     | test            |
|         | api             |
|---------|-----------------|
| ALB     | api             |
|---------|-----------------|

таблица маршрутов подсети-1 введите описание изображения здесь

таблица маршрутов подсети-2 введите описание изображения здесь

ПРИМЕЧАНИЕ. Охваченный маршрут - это просто одноранговое соединение, поэтому здесь нет ничего общего

Насколько я знаю, две подсети должны иметь возможность связываться с использованием частных IP-адресов служб внутри них, что я и сделал здесь.

Проверка работоспособности не выполняется с общим сообщением:

Не удалось выполнить проверку работоспособности ELB

Я также просмотрел этот блог для еще немного помощи, но безрезультатно.

Любая помощь будет принята с благодарностью :)


person wmash    schedule 31.07.2019    source источник


Ответы (1)


Если ваша задача прослушивает порты 3000 и 4000, ваша группа безопасности (test я полагаю, на основе ваших комментариев) должна будет разрешить эти порты. В соответствии с настройками сейчас я не вижу разрешенных портов 3000 и 4000.

Еще пара замечаний - эластичный IP-адрес на вашем ENI в частной подсети ничего не сделает, поскольку частные подсети не могут иметь прямого доступа к Интернету. Если у вас возникли проблемы с подключением к ECR без него, должна быть какая-то другая проблема.

Кроме того, ваши правила SG разрешают очень большие блоки CIDR, такие как 0.0.0.0/0. Более безопасная конфигурация разрешит доступ только определенной группе безопасности. В этом случае вам понадобятся порты для вашего приложения (звучит как 3000 и 4000) из идентификатора SG вашего балансировщика нагрузки.

person Ben Whaley    schedule 31.07.2019
comment
Большое спасибо! Это был не полный ответ, но определенно его половина. Другая половина заключалась в том, что наше приложение возвращает код состояния 301 при перенаправлении на HTTPS. Проверка работоспособности выполнялась через HTTP и поэтому была перенаправлена, и 301 не входил в диапазон моего кода успеха в моей проверке работоспособности. - person wmash; 31.07.2019