【发布时间】:2020-10-30 19:23:05
【问题描述】:
设置 1:(不工作)
我有一个任务在 ECS 集群中运行。但它正在下降,因为它开始后立即进行健康检查。
我的服务是基于 Spring Boot 的,它同时具有流量(用于服务调用)和管理端口(用于健康检查)。我有"*/health" 路径的“permitAll() 权限。
PFA:我也通过在 TG 运行状况检查选项卡中选择覆盖端口选项进行了相同的配置。
设置 2:(工作正常) 我的 docker-compose 文件中有相同的设置,并且我可以访问本地容器中的健康检查端点。 这就是我在撰写中定义的方式:
service:
image: repo/a:name
container_name: container-1
ports:
- "9904:9904" # traffic port
- "8084:8084". # management Port
所以,我尝试在容器部分的 Task Def 上配置管理端口。我尝试为这个最新版本的 TD 更新相应的服务,但是当我保存这个服务时,我得到一个错误。这是正确的处理方式吗?
ECS 控制台出错:
Failed updating Service : The task definition is configured to use a dynamic host port,
but the target group with targetGroupArn arn:aws:elasticloadbalancing:us-east-2:{accountId}:targetgroup/ecs-container-tg/{someId} has a health check port specified.
Service
两种可能的解决方案:
- 有没有办法可以在 docker 文件中指定此端口映射?
- 在 ECS 内任务定义的容器配置中配置管理端口映射的另一种方法? (首选)
- 摆脱 Spring Boot 的执行器端点并实现我们自己的健康端点? (坏:因为我需要实现很多东西来显示弹簧启动返回的所有细节)
【问题讨论】:
标签: spring-boot docker docker-compose amazon-ecs aws-application-load-balancer