我使用AWS Fargate部署了Docker映像。当我根据任务定义创建服务时,日志显示tomcat没有错误并且应用程序已启动并正在运行,但是由于运行状况检查失败,新实例会不断旋转
健康检查(针对与服务绑定的目标组)
通讯协定:HTTP
路径:/ Sampler / data / ping
端口:流量/端口
进行健康检查的正确方法是什么? 我也尝试提供服务名,但没有用 例如:/ servicename / data / ping 你能建议我想念什么吗?
我通过运行docker run -p 8080:8080 sampler:latest(将相同的图像从本地推送到ECR)在本地部署了相同的战争文件,当我点击URL http://localhost:8080/Sampler/data/ping时,我得到了200个状态代码
Dockerfile
来自tomcat:9.0-jre8-alpine
COPY target / Sampler-*。war $ CATALINA_HOME / webapps / Sampler.war
展览80
答案 0 :(得分:0)
运行状况检查的路径取决于您的应用程序。根据您提供的信息,我怀疑该问题可能与healthCheckGracePeriodSeconds
healthCheckGracePeriodSeconds
Amazon ECS服务调度程序忽略不正常的时间段(以秒为单位) 任务首次启动后,Elastic Load Balancing目标运行状况检查。
https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Service.html
当ECS任务花费很长时间启动时,Elastic Load Balancing(ELB)运行状况检查可能会将任务标记为不正常,并且服务调度程序将关闭该任务。
您可以在ECS服务定义参数中指定运行状况检查宽限期。这指示服务调度程序在实例化任务后的预定时间段内忽略ELB运行状况检查。
https://aws.amazon.com/about-aws/whats-new/2017/12/amazon-ecs-adds-elb-health-check-grace-period/