Search

DRAINING

대분류
DevOps/Tool
소분류
Trouble Shooting
설명
AWS ALB Target Group의 Draining 이 너무 길 때
유형
AWS
부유형
ECS
ALB
주요 레퍼런스
https://repost.aws/ko/knowledge-center/ecs-tasks-stop-delayed-draining
https://elegantcoder.com/posts/alb-target-group%EC%9D%98-draining-%EC%9D%B4-%EB%84%88%EB%AC%B4-%EA%B8%B8%EB%8B%A4%EB%A9%B4/
최종 편집 일시
2024/11/01 01:42
생성 일시
2024/10/11 18:38
12 more properties

문제

값은 300초가 주어지기 때문에 트래픽이 많지 않거나 커넥션을 오래 유지할 필요가 없다면 이 시간만큼 Fargate인스턴스를 더 사용하는 셈 그래서 비용 및 시간 문제에 직면함

문제 설명

컨테이너 인스턴스가 DRAINING으로 설정된 경우 중지하는 데 시간이 오래 걸리는 Amazon ECS 작업

문제 설명

ECS 인스턴스를 DRAINING으로 설정하면 Amazon ECS가 다음을 수행한다.
컨테이너 인스턴스에 새 작업을 배치하도록 예약하는 것을 방지
RUNNING 상태인 컨테이너 인스턴스의 작업 중지
구성 매개 변수 또는 작업 문제로 인해 작업이 RUNNING 상태에서 중단되거나 STOPPED 상태로 이동하는 데 시간이 더 오래 걸릴 수 있다.
이러한 문제를 해결하려면 다음 옵션을 고려해 보자.
DeploymentConfiguration 파라미터가 올바르게 설정되었는지 확인
등록 취소 지연 값이 올바르게 설정되었는지 확인
ECS_CONTAINER_STOP_TIMEOUT 값이 올바르게 설정되었는지 확인

해결 방법

Draining을 해결하는 방법은 여러가지가 있지만 필자는 ALB Target Group Draining 해결 방법을 사용함.
ALB Target Group Draining 해결
타겟그룹의 Draining에 걸리는 시간은 “Deregistration delay”항목에서 수정할 수 있다.
DeploymentConfiguration 파라미터가 올바르게 설정되었는지 확인
1.
Amazon ECS 콘솔을 엽니다.
2.
탐색 창에서 클러스터를 선택한 다음 컨테이너 인스턴스가 드레이닝되는 클러스터를 선택합니다.
3.
ECS 인스턴스 탭을 선택한 다음 상태 섹션에서 DRAINING을 선택합니다.
4.
컨테이너 인스턴스를 선택한 다음 드레이닝되거나 드레이닝되는 데 시간이 오래 걸리는 작업에 대한 서비스를 찾습니다.
5.
서비스 탭을 선택하고 서비스를 선택한 다음 배포를 선택합니다.
6.
minimumHealthyPercent 및 maximumPercent 값을 확인합니다.참고: RUNNING 상태인 컨테이너 인스턴스의 서비스 작업이 서비스의 배포 구성 파라미터(minimumHealthyPercent and maximumPercent)에 따라 중지되고 대체됩니다.
등록 취소 지연 값이 올바르게 설정되었는지 확인
중요: 다음 단계는 Application Load Balancer 또는 Network Load Balancer를 사용하는 서비스에만 적용됩니다. 서비스에서 Classic Load Balancer를 사용하는 경우 Connection Draining 값을 확인합니다.
1.
Amazon ECS 콘솔을 엽니다.
2.
탐색 창에서 클러스터를 선택한 다음 컨테이너 인스턴스가 드레이닝되는 클러스터를 선택
3.
서비스 탭을 선택한 다음 스택이 RUNNING에 멈춘 서비스를 선택
4.
대상 그룹 이름을 선택
5.
세부 정보 탭에서 아래로 스크롤한 다음 등록 취소 지연 확인란을 선택
ECS_CONTAINER_STOP_TIMEOUT 값이 올바르게 설정되었는지 확인
2.
docker inspect ecs-agent --format '{{json .Config.Env}}' 명령을 실행
3.
ECS_CONTAINER_STOP_TIMEOUT 값이 있는지 확인
참고: ECS_CONTAINER_STOP_TIMEOUT : Amazon ECS가 컨테이너를 종료하기 전에 대기하는 시간을 정의하는 ECS 컨테이너 에이전트 파라미터 기간은 작업이 중지될 때 계산되기 시작 2단계에서 명령을 실행한 후 출력에 ECS_CONTAINER_STOP_TIMEOUT 파라미터가 표시되지 않는 경우 Amazon ECS는 기본값인 30초를 사용하고 있는 것이다.
기타 작업 관련 문제 찾기
2.
Docker 대몬과 Amazon ECS 컨테이너 에이전트가 Amazon Linux 1 AMI 또는 Amazon Linux 2 AMI에 대해 실행되고 있는지 확인
3.
logConfiguration에서 설정한 로그 드라이버를 기반으로 애플리케이션 로그 확인
참고: 예를 들어 작업이 awslogs 로그 드라이버를 사용하는 경우 Amazon CloudWatch Logs에서 문제가 있는지 확인