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

Fargate上Network Load Balancer始终无法处于健康状态排查

Fargate服务健康检查失败问题排查与解决

核心原因

你使用NetworkLoadBalancedFargateService部署服务时,默认健康检查配置可能与服务类型(TCP/HTTP)不匹配,或存在网络、安全组限制,导致目标组健康检查失败。

具体解决步骤

1. 修正健康检查配置

针对TCP服务(你的实际需求)

NLB目标组默认的TCP健康检查仅验证端口能否建立连接,可显式配置确保参数适配:

// 获取自动创建的目标组,调整健康检查为TCP协议
loadBalancedFargateService.getTargetGroup().configureHealthCheck(new HealthCheck.Builder()
        .protocol(Protocol.TCP)
        .port("traffic-port") // 使用与流量一致的端口
        .interval(Duration.seconds(30))
        .timeout(Duration.seconds(5))
        .healthyThresholdCount(2)
        .unhealthyThresholdCount(2)
        .build());

针对HTTP示例(测试场景)

amazon/amazon-ecs-sample镜像运行Apache服务,需配置HTTP健康检查验证根路径:

loadBalancedFargateService.getTargetGroup().configureHealthCheck(new HealthCheck.Builder()
        .protocol(Protocol.HTTP)
        .path("/")
        .port("80")
        .healthyHttpCodes("200")
        .build());

2. 检查安全组规则

确保Fargate任务的安全组允许NLB目标组访问容器端口:

  • 入站规则添加:允许来自NLB安全组的TCP流量(端口80或自定义TCP端口)
  • 若任务需拉取镜像,确认子网有NAT网关或公网访问能力,保证容器能正常启动

3. 验证容器服务状态

通过ECS任务日志确认容器是否正常启动并监听指定端口:

# 查看目标日志组
aws logs describe-log-streams --log-group-name /aws/ecs/[你的集群名称]/[你的服务名称]
# 获取日志内容
aws logs get-log-events --log-group-name /aws/ecs/[你的集群名称]/[你的服务名称] --log-stream-name [日志流ID]

若日志显示容器未启动或端口未监听,需检查镜像有效性、容器配置是否正确。

4. 确认网络配置

如果任务部署在私有子网:

  • 子网必须关联NAT网关,确保容器能拉取外部镜像
  • 若使用公网NLB,任务所在子网需配置路由到互联网

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:55:16