AWS/AWS 알아두면 좋은 지식

[ECS Fargate] Health Check grace period

[앙금빵] 2022. 8. 29.

만약, 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월에 출시된 기능으로 보인다.
 

Amazon ECS에서 ELB 상태 확인 유예 기간 추가

이제 Amazon ECS(Amazon Elastic Container Service) 서비스 스케줄러는 새로 인스턴스화한 작업의 조기 종료를 예방할 수 있도록 유예 기간을 정의하게 해줍니다.  이전에는 Amazon ECS 작업을 시작하는 데 오

aws.amazon.com


# 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에서는 권장한다.

 

Fargate에서 Amazon ECS 작업에 대한 상태 확인 실패 문제 해결

다음 오류가 발생하면 서비스가 로드 밸런서와 통합되지 않지만 작업의 컨테이너가 서비스가 통과할 수 없는 상태 확인을 사용하고 있습니다. (서비스 AWS-Service) (태스크 ff3e71a4-d7e5-428b-9232-2345657

aws.amazon.com


참조

 

AWS autoscale ELB status checks grace period

I'm running servers in a AWS auto scale group. The running servers are behind a load balancer. I'm using the ELB to mange the auto scaling groups healthchecks. When servers are been started and joi...

stackoverflow.com

 

Grace Period? - AWS EC2 Container Service and Elastic Load Balancers

When an elastic load balancer (ELB) is associated with an auto-scaling group, it is possible to specify a grace period during which new EC2 instances will not be terminated even if they are marked as

stackoverflow.com

 

댓글