You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Fargate部署.NET Core项目遇ELB健康检查持续失败求助

解决AWS Fargate上.NET Core项目ELB健康检查失败问题

结合你描述的情况(任务公网IP可访问健康端点、已修改Dockerfile监听8080、同子网部署、过往同类部署成功),以下是针对性的排查和解决步骤:

核心排查方向

1. 同步端口配置(最易忽略的点)

  • 确认ELB目标组的目标端口已改为8080:之前应用监听80,目标组可能保留了旧端口配置,需同步更新为8080
  • 检查目标组健康检查的协议与路径:协议需和应用一致(HTTP/HTTPS),路径要和你通过公网IP访问的完全匹配(比如/health,注意大小写、是否带斜杠)
  • 验证任务定义的容器端口:确保任务定义中容器暴露的端口是8080(awsvpc模式下无需主机端口映射,但需容器端口与目标组端口一致)

2. 安全组规则精准校验

  • 确认Fargate任务的安全组:允许来自ELB安全组的入站流量到8080端口(不要仅开放0.0.0.0/0,需限定ELB安全组,且端口是8080而非旧的80)
  • 确认ELB的安全组:允许AWS健康检查源IP(AWS内部网段)访问8080端口,同时出站规则允许所有流量(确保健康检查响应能返回)

3. 子网与路由配置验证

  • 检查新子网的路由表:公网子网需有指向Internet Gateway的路由,私网子网需有指向NAT Gateway的路由,确保ELB与Fargate任务能互通
  • 开启子网的DNS解析和DNS主机名属性:ELB需要解析Fargate任务的IP地址,这两个属性未开启会导致通信失败

4. 目标组状态细节排查

  • 进入ELB目标组,查看失败目标的具体状态信息(比如“连接超时”“HTTP 404”“拒绝连接”):
    • 连接超时:优先排查安全组或子网路由
    • HTTP错误:检查健康检查路径、端口是否匹配
    • 拒绝连接:确认应用确实在监听8080端口

5. 验证Dockerfile端口配置生效

  • 查看容器运行日志,确认应用输出类似Now listening on: http://[::]:8080的信息,证明应用已正确监听8080
  • 确保.NET Core应用的启动命令或配置指定了8080端口:比如在Dockerfile中使用ENTRYPOINT ["dotnet", "YourApp.dll", "--urls=http://0.0.0.0:8080"],或在appsettings.json中配置"Urls": "http://0.0.0.0:8080"

内容的提问来源于stack exchange,提问作者ypbr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:32:58