[ECS Fargate] Health Check grace period
만약, ECS 서비스 대상 배포한 Task가 어플리케이션을 실행하는데 있어 캐시를 불러들인다던지 다른 사유로 다소 시간이 소요된다면 Health check grace period 값 설정을 진행해보자.
이슈 상황
ECS Service Task에 대한 Health Check 실패
1. ECS Health check grace period
💡 ECS Service 동작 과정
(1) ECS Service가 Task를 실행할 때 Task는 Running State에 진입하게 된다.
(여기서 유의할 점으로 Running state에 진입하였다고 해서 어플리케이션이 동작한다는 것을 의미하는 것은 아니다. Task에 내장된 어플리케이션을 실행시키고 트래픽을 수용하는데 있어 boot up 시간이 존재하기 때문이다.)
(2) Task가 Running State 상태에 진입하였을 때, ECS Scheduler는 "Register Target" API 를 호출하며 생성된 Task를 Target Group에 할당한다.
(3) Target ALB는 Target Group에 할당된 Task에 대하여 설정된 주기를 기반으로 Health check를 진행한다.
(4) 여기서 만약, 어플리케이션이 bootup이 되어 있지 않았다면 Health Check는 실패하게 되며, ECS Scheduler는 Health Check에 실패한 Task를 강제 중지시키게 된다.
1-1. ECS 서비스 대상 배포한 Task가 어플리케이션을 실행하는데 있어 다소 시간이 소요 .
1-2. ECS Service 설정 값에 "Health Check grace period" 항목 값이 존재하며 기본값은 0으로 설정되어 있다. 이는, Task가 Target Group으로 할당되는 순간 ALB가 대상 Task의 타겟 그룹으로 Health Check를 실행함을 의미한다.
💡 Health Check grace period
ALB가 Task가Target Group에 할당되는 시점으로부터 Health Check를 진행 시작하는 시간 설정 값이다.
아래 링크를 참조하였을 때, 2017년 12월에 출시된 기능으로 보인다.
# Service definition parameters
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html
1-3. startup 시간이 다소 소요되는 Application이고, Health Check grace period = 0으로 설정되어 있다면 Health Check는 실패하게되고, ECS Scheduler는 비정상적인 Task로 인식하여 이를 강제 종료시킨다.
2. 재발 방지 대책
어플리케이션이 정상상태에 도달하기에 있어 필요한 시간을 여러 테스트를 통해 산정해야 한다. stackoverflow 내용에서 권장하는 상황은 startup 시간보다 2배 시간으로 설정할 것을 권장하고 있다. 예를들어 어플리케이션 실행시간이 3분(180초)이라면 6분(360초)를 Health Check grace period 속성값에 설정한다는 의미이다.
# 참조링크(클릭)
만약, 이런 조치로 해결되지 않는다면 아래의 조치들을 취하는 것을 AWS에서는 권장한다.
참조
- AWS Case Open
- https://stackoverflow.com/questions/27322659/aws-autoscale-elb-status-checks-grace-period
'AWS > AWS 알아두면 좋은 지식' 카테고리의 다른 글
[AWS] CloudWatch agent를 통한 Group 레벨 메모리 메트릭 관찰하기 (0) | 2023.11.10 |
---|---|
[AWS] ACM 인증서 - Deep Dive (인증서 구조, Amazon Root CA, ACM 다운로드) (0) | 2022.12.01 |
[EKS] ALB Ingress Controller 필요성 (0) | 2022.09.05 |
[AWS EC2] 백업중인 EC2에서 네트워크 부하 발생 여부 (0) | 2022.07.14 |
[RDS] AWS Aurora Auto Scaling 정책 - Deep Dive (0) | 2022.05.30 |
댓글