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

ECS单服务多容器+ALB路由异常:仅默认容器运行问题求助

ECS单服务多容器ALB路由异常问题排查与修复

核心问题定位

仅users容器运行且所有路径路由至它,通常由以下几类问题导致:

  • 任务定义未包含另外两个容器配置
  • ECS服务未关联对应容器的目标组
  • ALB目标组配置错误或未注册容器实例
  • ALB路由规则优先级或路径匹配配置有误

分步排查修复

1. 校验ECS任务定义

确保任务定义的ContainerDefinitions节点包含三个容器的完整配置,每个容器需正确设置端口映射,且Essential属性为true(默认值,若设为false容器启动失败不影响服务,但未定义则不会启动):

ContainerDefinitions:
  - Name: users
    Image: <你的users镜像地址>
    PortMappings:
      - ContainerPort: <users容器端口>
        HostPort: <主机映射端口>
        Protocol: tcp
  - Name: orders
    Image: <你的orders镜像地址>
    PortMappings:
      - ContainerPort: <orders容器端口>
        HostPort: <主机映射端口>
        Protocol: tcp
  - Name: products
    Image: <你的products镜像地址>
    PortMappings:
      - ContainerPort: <products容器端口>
        HostPort: <主机映射端口>
        Protocol: tcp

2. 检查ECS服务负载均衡关联

确认ECS服务的LoadBalancers配置中,每个容器都关联了对应的ALB目标组:

LoadBalancers:
  - ContainerName: users
    ContainerPort: <users容器端口>
    TargetGroupArn: !Ref UsersTargetGroup
  - ContainerName: orders
    ContainerPort: <orders容器端口>
    TargetGroupArn: !Ref OrdersTargetGroup
  - ContainerName: products
    ContainerPort: <products容器端口>
    TargetGroupArn: !Ref ProductsTargetGroup

3. 验证ALB目标组配置

每个目标组需匹配对应容器的端口,且健康检查配置与容器的健康端点一致:

  • 用户容器目标组:端口设为users容器的映射端口,健康检查路径配置为容器的健康检查接口(如/health)
  • 订单/商品容器目标组同理,确保TargetType设置为ip(AWSVPC网络模式下必须使用IP类型目标组)

4. 修正ALB路由规则

调整ALB监听器规则的优先级,确保特定路径规则先于默认规则匹配:

ListenerRules:
  # 用户路径规则
  - Priority: 1
    Conditions:
      - Field: path-pattern
        Values: ["/users/*"]
    Actions:
      - Type: forward
        TargetGroupArn: !Ref UsersTargetGroup
  # 订单路径规则
  - Priority: 2
    Conditions:
      - Field: path-pattern
        Values: ["/orders/*"]
    Actions:
      - Type: forward
        TargetGroupArn: !Ref OrdersTargetGroup
  # 商品路径规则
  - Priority: 3
    Conditions:
      - Field: path-pattern
        Values: ["/products/*"]
    Actions:
      - Type: forward
        TargetGroupArn: !Ref ProductsTargetGroup
  # 默认规则(优先级最低)
  - Priority: 100
    Actions:
      - Type: forward
        TargetGroupArn: !Ref UsersTargetGroup

5. 排查容器启动失败日志

若任务定义和服务配置正确但容器未启动,通过ECS CLI查看任务状态:

aws ecs describe-tasks --cluster <你的集群名称> --tasks <任务ARN>

查看任务中容器的lastStatus和stoppedReason字段,定位是否存在镜像拉取失败、环境变量缺失、端口冲突等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:38:15