본문 바로가기
AWS/서비스

[AWS] ECS 설정 방법 (ECR, Cluster, VPC, Fargate)

by Johnny's 2023. 4. 22.

ECS 구성

 

ECS 설정 순서

1. 클러스터 Cluster 생성 - VPC 생성

2. ECR 생성

3. ELB 생성

4. Dockerfile 작성 또는 수정 - Docker Image ECR에 PUSH

5. 작업정의서 Task Definition 

6. 서비스 배포

클러스터 생성하기 - VPC 생성

ECS 클러스터 : 도커 컨테이너를 실행할 수 있는 논리적인 공간, 일종의 디렉토리

 

네트워킹 전용 선택 후 다음단계 클릭

 

처음 클러스터를 생성하므로 클러스터를 위해 VPC를 새로 만들어준다. 

 

클러스터가 잘생성 되었다.

 

ECR(Amazon Elastic Container Registry) 레파지토리 만들기 

ECR이란? AWS 관리형 컨테이너 이미지 레지스트리 서비스 즉, AWS용 Docker Hub

리포지토리를 생성해준다.

 

 

 

리포지토리를 생성했으니, 이제 이미지를 PUSH 해보자. 해당 리포지토리로 들어가서 푸시명령보기를 클릭한다.

 

AWS CLI 설정이 안되어 있다면, 다음글을 참고하자. IAM 사용자 생성하는법 - 액세스 키 발급

혹시 AWS CLI 로그인 하는데 아래와 같은 에러가 발생한다면AWS CLI 버전 2를 사용하기 위한 사전 조건 내용을 참고하자.

 

Unable to locate credentials
You can configure credential by running "aws configure".

 

1. Docker 클라이언트 인증

2. 이전에 node 애플리케이션을 만들었던 이미지를 빌드하겠다. (docker-node-application) 나만의 도커파일 & 이미지 생성(EC2 환경)

3 ~ 4. AWS 리포지토리로 푸시한다.

ECR 레파지토리에 이미지가 잘 PUSH 되었다.

 

 

로드밸런서 정의 - ELB 생성

- Task Definition을 하기전에 ALB를 만들어준다.  Task Definition하는 과정에서 ALB 설정 하는 과정이 있다.(미리 만듬)

 

EC2로 이동한 후 로드밸런서를 클릭한다.

Application Load Balancer를 생성해준다.

 

생성한 ALB는 삭제할 것이기 때문에 가볍게 만들면 된다.

 

대상 그룹(타켓그룹) 생성을 클릭한다.


<대상 그룹 생성하기>


이어서 로드밸런서를 생성해준다.

 

만들어준 리스너와 대상그룹을 삭제해준다.

그럼 아무것도 설정이 안된 깨끗한 로드밸런서가 만들어져 있다고 보면된다. 나중에 Task Definition 만들때 추가해주면 된다.

 

Task Definition (작업정의서) - Amazon ECS 태스크 정의

어떤 작업을 할지 정의하는 부분이다.

FARGATE를 선택한다.

 

 

할당 메모리, CPU를 설정하고 컨테이너 추가 버튼을 클릭한다.

 

 

컨테이너 이름은 나중에 ELB에서 타켓그룹 매핑할 때 해당 컨테이너 이름 기준으로 매핑하므로 신경써서 잘 설정한다.(이름 잘짓기)

 

 

작업정의 생성 완료 → 생성한 Task Definition을 가지고 Service를 만들거나 Task를 실행할 수 있다.

 

Task와 Service 의 차이

Task : 하나의 작업

Service : Task 여러개를 한번에 관리, 다양한 설정 가능 (ELB / Auto Scaling)

 

서비스 생성

 

롤링 업데이트 방식 - 한 Task 씩 업데이트 하는 구조, 배포시 하나가 실행되면 하나가 멈추고, 또하나가 실행되면 하나가 멈추며 전체를 배포하는 형식

예시) 서버 1,2,3,4가 있고, 새로 서버 A,B,C,D를 새로 띄운다고 했을 때, A를 띄우고 1을 죽이고, B를 띄우고 2를 죽이고, C를 띄우고 3을 죽이고, D를 띄우고 4를 죽이는 방식 

 

블루/그린 배포 방식 - 한번에 새로운 Task를 동시에 띄운 뒤 기존의 Task는 다 꺼버리는 방식 

예시) 기존 서버 1,2,3,4가 있다면, 새로 띄울 서버 A,B,C,D를 동시에 4개를 띄워서 총 8개를 만든 뒤 기존 4개(1,2,3,4)를 꺼버리는 방식 (CodeDeploy 설정이 필요)

 

 

클러스터 VPC와 서브넷을 각각 알맞게 설정해준다.

 

로드밸런서에 추가 버튼을 클릭한다.

 

 

조정작업 : 알람 발생시 태스크를 1개씩 추가하겠다는 의미

휴지 기간 : 한번 발생시 300초 동안은 쿨타임, 300초에 한번씩만 Scaling 하겠다.

규모축소 (Scale In) 도 비슷하게 설정해준다.

 

 

 

모든 설정을 마무리하고 서비스 배포를 해보자

 

 

 

 

 

* 참고

- 원티드(프리온보딩 백엔드 챌린지 4월) - Docker: 나만의 도커 이미지 만들기부터, 클라우드 배포까지! - 강의자료

- 스토리로 배우는 ECS with VPC 1부 - DevJelly(최현묵)

- Amazon ECS 클러스터

댓글