Amazon ECSnetworkingstream量和端口

我创build了四个子网VPC,其中两个子网是私有的,两个是公有的。 私有子网中的实例只有私有IP,通过IGW / NAT GW到达互联网。

我可以成功创build跨越公共子网的ECS群集,但是当我在后端子网中创build群集时,群集实例无法在群集中注册。

我怀疑networking问题,我正在用Flowlog进行debugging。 与此同时,我希望有人能够了解哪些端口需要打开,或者涉及ECS集群pipe理的其他configuration。

我怀疑这是与端口相关的,因为集群中的东西需要进行通信是相当标准的。 下面的两篇文章应该为你回答这个问题。 在我看来,以下可能是必需的

  • Amazon ECS代理端口51678和51679(协议未指定)
  • TCP 2376和2377(docker)
  • TCP / UDP 7946(docker)
  • UDP 4789(docker)
  • 临时端口49153至65535(协议未指定)

请注意,我对ECS知之甚less,只是做了几个Googlesearch和阅读文档。 ECS基于Docker,所以我看了一下。 一些实验将是必需的。

Digital Ocean在Docker Ports上有一篇很好的文章。

TCP端口2376用于安全的Docker客户端通信。 此端口是Docker计算机正常工作所必需的。 Docker机器用于编排Docker主机。 TCP端口2377.此端口用于Docker群集或群集的节点之间的通信。 只需要在pipe理器节点上打开它。 TCP和UDP端口7946用于节点之间的通信(容器networking发现)。 UDP端口4789用于覆盖networkingstream量(容器入口networking)。

然后亚马逊的文档提到了一些相同的端口。

默认临时端口范围是49153到65535,此范围用于1.6.0之前的Docker版本。 对于Docker版本1.6.0及更高版本,Docker守护进程会尝试从/ proc / sys / net / ipv4 / ip_local_port_range读取临时端口范围; 如果此内核参数不可用,则使用默认的临时端口范围。 您不应该尝试在临时端口范围内指定主机端口,因为这些端口是为自动分配保留的。 通常,32768以下的端口不在临时端口范围内。

对于SSH,Docker端口2375和2376以及Amazon ECS容器代理端口51678和51679,默认保留端口为22个。之前在运行任务中指定的任何主机端口也在任务运行时保留(任务停止,主机端口被释放)。当前保留端口显示在DescribeContainerInstances输出的剩余资源中,一个容器实例一次最多可以有100个保留端口,包括默认保留端口(自动分配的端口不计入100个保留端口限制)。

请务必记住,包含NAT网关的子网的networkingACL需要入站SSL的规则(443)。 如果不是,则不能从私有子网完成出站SSL。 从我的私有子网到http://cloudformation.eu-central-1.amazonaws.com/的networkingstream量在子网级别被阻塞。

这使得在后端实例上运行的shell命令cfn-signal被阻塞。 cfn-signal命令的职责是向Cloudforms报告实例已启动并正在运行,以便脚本可以继续创build相关资源。

我认为这是一个ECS问题,而不是一个Cloudformation问题。