Tráfego e portas do Amazon ECS Network

2

Eu criei um VPC de quatro sub-redes, onde duas sub-redes são privadas e duas públicas. As instâncias na sub-rede privada têm apenas IPs privados e chegam à Internet por meio de um IGW / NAT GW.

Eu posso criar com êxito um cluster do ECS abrangendo minhas sub-redes públicas, mas quando eu crio um cluster nas sub-redes de back-end, as instâncias de cluster não podem se registrar no cluster.

Eu suspeito de problemas de rede e estou depurando com o Flowlogs. Nesse meio tempo, eu esperava que alguém pudesse esclarecer quais portas precisam ser abertas ou outras configurações envolvidas no gerenciamento de cluster do ECS.

    
por Glenn Bech 13.02.2017 / 07:50

2 respostas

1

É importante lembrar que a ACL da rede para a sub-rede que contém o gateway NAT precisa de uma regra para o SSL de entrada (443). Caso contrário, nenhum SSL de saída pode ser feito a partir da sub-rede privada. O tráfego de rede da minha sub-rede privada para o link foi bloqueado no nível de sub-rede.

Isto fez o comando shell, rodando nas instâncias de back-end, cfn-signal para bloquear. O dever do comando cfn-signal é relatar de volta à formação em nuvem que uma instância está ativa e em execução, para que o script possa continuar a criar recursos dependentes.

Pensei nisso como um problema do ECS, não um problema do Cloudformation.

    
por 15.02.2017 / 07:54
5

Eu suspeito que isso é relacionado à porta, já que é bastante normal que as coisas em um cluster precisem se comunicar. Os dois artigos abaixo devem responder a esta pergunta para você. Parece-me que o seguinte é provavelmente necessário

  • Portas do agente do Amazon ECS 51678 e 51679 (protocolo não especificado)
  • TCP 2376 e 2377 (docker)
  • TCP / UDP 7946 (docker)
  • UDP 4789 (docker)
  • Portas efêmeras 49153 a 65535 (protocolo não especificado)

Note que eu sei pouco sobre o ECS e simplesmente fiz algumas pesquisas no Google e li a documentação. O ECS é baseado no Docker, então eu olhei para isso. Alguma experimentação será necessária.

A Digital Ocean tem um bom artigo sobre Portas do Docker .

TCP port 2376 for secure Docker client communication. This port is required for Docker Machine to work. Docker Machine is used to orchestrate Docker hosts. TCP port 2377. This port is used for communication between the nodes of a Docker Swarm or cluster. It only needs to be opened on manager nodes. TCP and UDP port 7946 for communication among nodes (container network discovery). UDP port 4789 for overlay network traffic (container ingress networking).

Em seguida, a documentação da Amazon menciona algumas das mesmas portas.

The default ephemeral port range is 49153 to 65535, and this range is used for Docker versions prior to 1.6.0. For Docker version 1.6.0 and later, the Docker daemon tries to read the ephemeral port range from /proc/sys/net/ipv4/ip_local_port_range; if this kernel parameter is unavailable, the default ephemeral port range is used. You should not attempt to specify a host port in the ephemeral port range, because these are reserved for automatic assignment. In general, ports below 32768 are outside of the ephemeral port range.

The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376, and the Amazon ECS container agent ports 51678 and 51679. Any host port that was previously specified in a running task is also reserved while the task is running (after a task stops, the host port is released).The current reserved ports are displayed in the remainingResources of DescribeContainerInstances output, and a container instance may have up to 100 reserved ports at a time, including the default reserved ports (automatically assigned ports do not count toward the 100 reserved ports limit).

Observe que, conforme Wikipédia , e comentários abaixo do intervalo de portas efêmeras podem precisar ser expandidos.

    
por 13.02.2017 / 19:48