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

ECS容器健康检查持续失败问题求助

排查建议:ECS服务ALB可访问但健康检查失败

针对单EC2实例部署双ECS服务时,8081端口服务可通过ALB正常访问但健康检查持续失败的问题,按以下步骤逐一排查:

1. 核对目标组健康检查核心配置

  • 确认健康检查路径完全正确:Spring Boot应用默认健康端点为/actuator/health,需检查第二个服务的application.properties中是否配置management.endpoints.web.exposure.include=health以开启该端点,同时确保目标组健康检查路径与8080服务完全一致,避免拼写、斜杠等细节错误。
  • 检查健康检查HTTP方法:若8080服务使用GET方法,确认8081服务未误设为POST等其他方法,否则会返回405状态码导致健康检查失败。
  • 验证健康检查状态码匹配规则:确认目标组是否仅接受200-299状态码,若8081服务的健康端点返回3xx(如重定向),需调整状态码匹配范围。

2. 检查ECS任务与目标组的端口映射

  • 确认Task Definition中8081服务的容器端口与主机端口映射正确,且目标组注册的端口与主机端口完全匹配(若使用动态端口,需确认目标组配置为对应动态端口规则)。
  • 登录EC2实例,执行netstat -tulpn命令,查看8081端口是否被正确监听,且归属对应的Spring Boot进程。

3. 检查安全组与网络规则

  • 确认EC2实例的安全组允许ALB所在VPC的内部IP段访问8081端口:ALB的健康检查流量来自其ENI私有IP,若EC2安全组仅开放公网IP访问,会拦截内部健康检查请求(但不影响公网业务流量转发)。
  • 验证目标组关联的安全组是否允许健康检查流量进出,同时排查VPC网络ACL是否存在限制8081端口内部流量的规则。

4. 查看应用与ECS日志

  • 查看8081服务的Spring Boot应用日志,搜索ALB健康检查请求记录,确认是否收到请求以及返回的状态码、响应内容(比如是否返回404、401等非预期状态)。
  • 通过AWS控制台或执行aws ecs logs get-log-events命令查看ECS任务日志,确认任务启动过程中是否有异常,是否在完全就绪后才触发健康检查。

5. 调整健康检查阈值与超时

  • 若8081服务启动速度较慢,可适当调大健康检查的间隔时间(如从5秒改为10秒)、超时时间(如从2秒改为5秒),并增加健康阈值(如从2次改为3次),避免因应用未完全就绪导致初始健康检查失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:20:39