AWS Fargate 无法通过负载均衡器/公共 IP 访问 dockerized spring boot 应用程序

Posted

技术标签:

【中文标题】AWS Fargate 无法通过负载均衡器/公共 IP 访问 dockerized spring boot 应用程序【英文标题】:AWS Fargate cannot access dockerized spring boot application over Load balancer/ public IP 【发布时间】:2020-11-30 19:06:43 【问题描述】:

在创建 AWS fargate 集群之后,我已经通过 aws ECR 部署了我的 Spring Boot 应用程序的 docker 映像。说明任务、安全、服务和集群定义的配置的 PFA 屏幕截图。我可以成功 ping 我的公共 ip。但是我无法通过负载均衡器和公共 IP 访问我的应用程序。我尝试访问应用程序的网址是

public_ip:8081/my_rest_end_point

load_balancer_public_dns:8081/my_reset_end_point

我已测试使用端口 8081 在本地主机上运行我的 docker 映像,以及我在 Fargate 容器配置中为端口映射配置的相同 8081 端口 (参考:服务定义)。如何访问我的应用程序?我几乎关注了 Medium 和 AWS 上的所有文章。

教程如下: https://medium.com/underscoretec/deploy-your-own-custom-docker-image-on-amazon-ecs-b1584e62484

https://medium.com/faun/aws-fargate-services-deployment-with-continuous-delivery-pipeline-b67d33407c88

【问题讨论】:

你能提供你的 ALB 的设置,结束它的目标群体吗? @Marcin ALB 设置和目标组已更新! 如果您使用动态端口映射,那么您的 Fargate 任务 SG 必须允许来自您的 LB 的所有端口,或者只允许所有端口。不仅是 8081。 @Marcin 在安全设置中我还配置了所有端口的所有流量,刚刚附上截图! 截图显示IPv4还是8081,所有端口都是IPv6的。 【参考方案1】:

基于cmets和聊天讨论。

tutorial followed 创建一个自定义 VPC,其 CIDR 范围为 10.0.0.0/16,并带有两个子网。没有没有互联网网关 (IGW);随后,在 VPC 中启动的 Fargate 任务无法访问 Internet,也无法从 Internet 访问。

这个问题有两种解决方案

使用正确提供互联网访问的默认 VPC 创建使用 IGW 和相应的路由表设置的自定义 VPC(或修改现有)。 AWS docs 中提供了具有 Internet 访问权限的自定义 VPC 示例。

【讨论】:

以上是关于AWS Fargate 无法通过负载均衡器/公共 IP 访问 dockerized spring boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

AWS ECS Fargate 不带负载均衡器用于内部服务

是否可以在没有负载均衡器的情况下使用 AWS Fargate?

AWS ECS Fargate:应用程序负载均衡器返回 503 并带有奇怪的模式

AWS 负载均衡器背后的 Sidekiq Web

通过 ELB 访问 AWS EC2 实例

AWS ECS 中的 Fargate 网络服务器在空闲期后响应时间很长(但有时没有)