CDK中ApplicationLoadBalancedFargateService多端口健康检查失败问题排查
问题原因及修复方案
你的容器因健康检查失败被关闭,核心遗漏了安全组访问权限配置,同时还有两处关键配置需要确认调整:
1. 补充安全组规则允许ALB访问8080端口
默认创建ApplicationLoadBalancedFargateService时,仅会自动配置:
- ALB安全组允许外部访问60000端口(你的
listenerPort) - Fargate任务安全组仅允许ALB访问60000端口
但健康检查请求是ALB发往容器的8080端口,因此必须手动添加规则:
- 给Fargate任务的安全组添加入站规则:允许来自ALB安全组的TCP流量访问8080端口。
- 也可以在创建
ApplicationLoadBalancedFargateService时,通过securityGroups参数指定提前配置好的自定义安全组(需包含60000和8080的入站权限)。
2. 明确健康检查的协议与健康状态码
当前配置未指定协议,若你的/health接口使用HTTPS,需显式声明;同时建议明确健康状态码,避免默认范围(200-399)导致误判:
fargate.targetGroup.configureHealthCheck({ path: '/health', interval: Duration.minutes(5), port: '8080', protocol: ApplicationProtocol.HTTPS, // 接口是HTTP则用ApplicationProtocol.HTTP healthyHttpCodes: '200', // 根据你的接口返回值调整 })
3. Fargate端口映射优化(可选)
Fargate模式下无需指定固定hostPort,设为0让系统自动分配即可,既避免端口冲突,也不影响ALB路由和健康检查:
portMappings: [ { hostPort: 0, containerPort: 60000, }, { hostPort: 0, containerPort: 8080, }, ]
内容的提问来源于stack exchange,提问作者Verbal_Kint
相关产品推荐
相关产品推荐

