我的 ECS 任务正在运行,但当我尝试通过 ALB 或公共 IP 访问它时不起作用

Ven*_*tti 7 amazon-web-services amazon-ecs docker amazon-ecr

弹性云服务器设置

网络配置

网络配置

任务和容器

任务和容器

部署配置

部署配置

健康配置

健康配置

入口安全组

入口安全组

出口安全组

出口安全组

还有几件事:
  1. Dockerfile 端口为 443
  2. 该容器将端口 443 映射到 443,将 8080 映射到 8080
  3. ALB 正在侦听 443
  4. 目标群体为 443 和 8080
开放式问题:

问题是服务和任务正在运行容器,但我无法通过公共 IP 或负载均衡器 dns 访问它。

它们在 Fargate 上是健康的实例,没有显示出故障或不断重新启动的迹象。健康检查时间为 600 秒,健康状况最小值为 50%,最大值为 200%。

我想知道我提供的信息是否有任何听起来不寻常的地方,因为我已经彻底检查了我的配置,但每个人都会犯错误。

感谢您的阅读。

Cyr*_* G. 5

不确定这是否有帮助,因为您正在使用 Fargate,每个任务都作为具有安全组的 ENI。在您的解释中,您只显示了一个安全组(ALB 一个?),您需要检查该任务的 sg 是否也是如此。更多详细信息请参见此处。您应该考虑为您的任务使用动态端口映射,SG 只允许来自 ALB 的 SG 在临时端口范围(对于 Amazon ECS 优化的 AMI 为 32768 到 61000)的连接(仅供参考

  • 这是正常现象,因为网络模式特定于 AWS (awsvpc)。最好的调试方法是检查 VPC/ENI 日志,您可以查看您的请求是否接受。https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html (3认同)
  • 您应该阅读 ALB + SSL 如果您在 docker 容器中执行 SSL 终止,则应该使用网络 LB 而不是 ALB。对于 ALB,它正在执行 SSL 终止,您将需要 2 个证书(一个客户端 <-> ALB,一个 ALB <-> docker)。祝你好运 ! (2认同)