ECS:任务定义端口映射与服务负载均衡器端口有何关系?

Chr*_*sen 5 amazon-web-services amazon-ecs

我正在编写一些 cloudformation 模板来启动一个包含一些 docker 容器的 ECS 集群。我不完全理解所有端口如何相互关联。

我有一个AWS::ECS::TaskDefinition,它指定一个端口映射,由 a ContainerPort(我理解是容器中运行的进程使用的端口)和 a组成HostPort,我认为这是 EC2 实例上公开的端口。

然后我有一个AWS::ECS::Service,其中有一个LoadBalancers部分。本节ContainerPort再次包含 - 但这与我的任务定义有何关系?这应该是之前的ContainerPort还是那个?HostPort如果是后者,它是如何运作的?AWS 是否对实例进行“反向查找”?例如“获取容器端口 XYZ 的主机端口”?

Dan*_*rin 0

但这与我的任务定义有何关系?

您的任务定义说明了您的 docker 容器将侦听哪个端口,这是负载均衡器将流量路由到的位置。那就是ContainerPort

这应该是之前的 ContainerPort 还是 HostPort?

应该是ContainerPort。负载均衡器可以访问此端口,以将传入流量路由到该端口。

来自http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html

集装箱港口

将负载均衡器流量定向到的容器上的端口号。您的容器实例必须允许此端口上的入口流量。