AWS Fargate Контейнеры с несколькими открытыми портами - PullRequest
0 голосов
/ 05 февраля 2020

Это решено, вероятно, через одно из изменений группы безопасности, которые я сделал.

У меня есть контейнер, который порождает несколько программ. Каждая программа прослушивает уникальный порт. Это круговая вещь, и в обычной среде docker мы раскрываем возможный диапазон. Все работает просто отлично. В другом контейнере есть приложение, которое подключается к каждому из маленьких агентов, работающих в первом контейнере. Это нормальная связь через сокеты.

Теперь мы пытаемся перейти на Fargate. Я сделал сопоставления портов при создании определения задачи, хотя есть примечание, что он может игнорироваться Fargate. Я вижу подсказки, что Fargate действительно позволяет вам открыть только один порт, называемый containerPort, и это все, что вы получаете. Это кажется ... безумным.

nmap показывает порты как отфильтрованные.

Я что-то не так делаю? У кого-нибудь есть советы, на что мне смотреть?

Я прочитал одну статью, в которой говорилось о балансировщике сетевой нагрузки. Это кажется сумасшедшим решением.

Я не хочу порождать несколько контейнеров по двум основным причинам c. Во-первых, нам пришлось бы полностью переписать приложение, которое порождает этих агентов. Во-вторых, время запуска контейнера слишком велико для отзывчивой среды.

Предложения на что мне посмотреть?

Для запроса вот соответствующий JSON, отредактированный для краткости.

{
  "family": "agents",
  "executionRoleArn": "ecsTaskExecutionRole",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "agent-container",
      "image": "agent-continer:latest",
      "cpu": 256,
      "memory": 1024,
      "portMappings": [
        {
          "containerPort": 22,
          "hostPort": 22,
          "protocol": "tcp"
        },
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp"
        },
        {
          "containerPort": 15000,
          "hostPort": 15000,
          "protocol": "tcp"
        },
        {
          "containerPort": 15001,
          "hostPort": 15001,
          "protocol": "tcp"
        },
        ...
      ],
      "essential": true,
      "environment": [ ...  ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/ct-test-agents",
          "awslogs-region": "",
          "awslogs-stream-prefix": "ct-test-agents"
        }
      }
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "cpu": "256",
  "memory": "1024"
}

1 Ответ

0 голосов
/ 05 февраля 2020

Может ли быть проблема с группой безопасности, прикрепленной к услуге / задаче? Вы добавили правила, которые разрешают входящий трафик c на указанные порты?

Поскольку вы можете обращаться к службе с помощью nmap, я предполагаю, что она уже общедоступна и имеет общедоступный c IP-адрес. Но, возможно, SecurityGroup не разрешает доступ к портам.

...