반응형

각 단어에 대한 상세설명은 1. 간략 개요 글을 읽어주기 바랍니다.

각 단계에서 일어나는 일들을 위 도식도 순서에 맞게 설명을 덧붙여 보겠습니다.

PROVISIONING

내부적으로 준비하는 상태( 간략개요글 참고 )

PENDING

ECR에서 Docker 이미지를 가져와 실행

이때 ECR이미지는 이미 빌드가 완료된 Docker image를 저장하고 있어야 한다.

특별한 설정을 하지 않았다면, 빌드가 잘못되었다고해서 run이 안되진 않는다.

ACTIVATING

TargetGroup에 Task를 등록하는 상태

이때 Task Definition에는 서버 리소스 사용, 환경변수, 여러 상태를 미리

정의시켜놓고 늘 그 상태로 배포될수있는 외적인 요소들이라고 생각하면 된다.

 

이때 제일 많이 나는 오류

  1. ECR의 주소를 못찾아서

RUNNING

이때는 배포한다는 흐름상

Old_Service가 New_Service로 교체되는 상황이 생긴다.

위에서 TargetGroup이 Old_Service와 New_Service의 HealtyCheck를 하여서

서비스 교체의 여부를 결정짓는다.

이때는 여러 오류가 생겨서 Old_Service와 New_Service의 교체가 이루어 지지 않는다.

다음과 같은 오류들이 생긴다.

  1. DB Connection 오류 ( 인프라상 접근이 불가하면 Connection Time out )
  2. 로드밸런서의 상태확인의 실패 ( TargetGroup 에서 healty Check Path 확인 )
  3. 로드밸런서의 상태확인 코드 설정 범위 ( 기본 200 → 200-404 까지 범위 허용 )
  4. 로드밸런서의 상태체크 횟수 확장 ( 기본 2 → 5 )
  5. Service 설정시 설정 값.
    healthCheckGracePeriod :
    정의된 기간동안 ALB의 상태확인은 무시된다.

    => 애플리케이션이 로드되는 시간을 넉넉잡아 해두어야 한다.

이 밖에도 여러 오류가 생긴다.

해당 오류를 디버깅하기 위해서는 두가지만 유의깊게 보면 된다.

  1. Running으로 돌아서지만 계속 STOPPED되는 경우 ⇒ Task Definition에서 CloudWatch 로그 경로를 꼭 설정하고 로그를 확인.
  2. Running이 보이기도 전에 STOPPED되는 경우 ⇒ 이때는 꼭 STOPPED된 Task를 들어가 상세한 정보를 확인하여야한다. 보통 ECR Pull Fail 이런 오류가 많이 날텐데 ECR url을 올바르게 수정해본다.

DEACTIVATING

TargetGroup에서 Task가 등록 취소 된다.

Old_Service와 New_Service의 교체가 이루어지는 과정에서 성공이든 실패든 해당 과정으로 오게되어있다.

재시도를 할 수 있고 정상 처리가 될 수도있다.

해당 상태로 성공적인 배포라 판단하면 안된다.

 

STOPPING

실행중인 컨테이너를 정상적으로 종료하는 프로세싱 단계

이미 중지되었다면 처리되지 않지만 정상적으로 설정되었다면 StopTimeout 설정값 까지 대기하고 컨테이너를 강제 종료. (기본값 30초)

 

DEPROVISIONING

생성된 리소스, 네트워크에서 정리 및 분리

 

STOPPED

최종적으로 정리된 상태


참고 :

https://garbe.io/blog/2020/03/04/deep-dive-ecs-deployment/

'Cloud > AWS-ECS' 카테고리의 다른 글

[AWS] TaskLifeCycle 단어 정의  (0) 2020.12.12
[AWS] Schduled task(EC2/Fargate)  (0) 2020.12.12
반응형

수명주기 상태

다음은 각 작업 수명주기 상태에 대한 설명입니다.

 

PROVISIONING

Amazon ECS는 작업을 시작하기 전에 추가 단계를 수행해야합니다. 
예를 들어 awsvpc네트워크 모드 를 사용하는 작업의 경우 탄력적 네트워크 인터페이스를 프로비저닝해야합니다.

 

PENDING

이는 Amazon ECS가 추가 작업을 수행하기 위해 컨테이너 에이전트를 기다리는 전환 상태입니다.

 

ACTIVATING

Amazon ECS는 작업이 시작된 후 작업이 RUNNING상태로 전환되기 전에 추가 단계를 수행해야합니다 . 
예를 들어 서비스 검색이 구성된 작업의 경우 서비스 검색 리소스를 만들어야합니다. 

여러 Elastic Load Balancing 대상 그룹을 사용하도록 구성된 서비스의 일부인 작업의 경우 대상 그룹 등록이이 상태에서 발생합니다.

 

RUNNING

작업이 성공적으로 실행 중입니다.

 

DEACTIVATING

Amazon ECS는 작업이 중지되기 전에 추가 단계를 수행해야합니다. 

예를 들어 여러 Elastic Load Balancing 대상 그룹을 사용하도록 구성된 서비스의 일부인 작업의 경우
대상 그룹 등록 취소가이 상태에서 발생합니다.

 

STOPPING

이는 Amazon ECS가 추가 작업을 수행하기 위해 컨테이너 에이전트를 기다리는 전환 상태입니다.

 

DEPROVISIONING

Amazon ECS는 작업이 중지 된 후 작업이 STOPPED상태로 전환되기 전에 추가 단계를 수행해야합니다 . 

예를 들어 awsvpc네트워크 모드 를 사용하는 작업의 경우 탄력적 네트워크 인터페이스를 분리하고 삭제해야합니다.

 

STOPPED 작업이 성공적으로 중지되었습니다.

 

 


 

참고 :

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-lifecycle.html

'Cloud > AWS-ECS' 카테고리의 다른 글

[AWS] TaskLifeCycle 상세 설명  (0) 2020.12.12
[AWS] Schduled task(EC2/Fargate)  (0) 2020.12.12
반응형

Batch작업이 있어 기존에 EC2로 작업해두었던 Task

Fargate형식으로 바꾸는 작업을 진행을 하였다. 

기존의 방식은 스케줄링에 의해서 EC2인스턴스를 일정기간동안 띄워서

해당 스케줄링이 정상 처리되도록 task를 작동시키는 방법이었다.

 

1. Create버튼 클릭

2. 맨아래 Launch Type 에서 EC2로

 

문제는 EC2는 비싸다는것이다.
실무 시스템상 EC2의 고정 리소스는 필요가 없었고 필요할때만 쓰면 되는 것이었다.
람다도 좋지만 람다의 특성이 있기때문에 ECS에서 빌드하여 배포된 이미지로 작업을 해야했다.

작업 순서는 위와 동일화고 Launch Type만 Fargate로 진행하면 된다.


1. Create버튼 클릭

2. 맨아래 Launch Type 에서 Fargate

 

 

Cron Expression은 친절하게 입력하면 스케줄 표가 보이니 하나씩 변경해보면

금방 이해가 될 것이다.

'Cloud > AWS-ECS' 카테고리의 다른 글

[AWS] TaskLifeCycle 상세 설명  (0) 2020.12.12
[AWS] TaskLifeCycle 단어 정의  (0) 2020.12.12

+ Recent posts