EC2 Container Service(ECS) 사용하기 + AutoScaling
EC2 Container Service(ECS) 사용하기 + AutoScaling
기본적인 Docker 사용법은 안다고 가정하겠습니다. (설치, 명령어 등)

현재 저는 접속하면 hello world를 띄워주는 서비스를 제공 하고 있습니다. 이 서비스는 AWS EC2와 nodejs를 사용하고 있습니다. ECS라는 서비스를 사용 하려고 합니다.
1. 도커 이미지 만들기
Dockerfile
1 | FROM ubuntu:16.04 |
위 처럼 자신이 만들고 싶은 도커 이미지의 Dockerfile을 만듭니다. Dockerfile은 만들 줄 아신다고 생각하겠습니다.
1 | docker build --tag main-image . |
Dockerfile이 있는 위치에서 위의 명령어를 통해 이름이 main-image인 도커 이미지를 만들었습니다.
2. ECS 설정하기
AWS ECS에 들어가서 시작하기를 누릅니다.
우리는 둘 다 할 것이므로 둘다 체크하고 넘어갑니다.
리포지토리 이름은 그냥 test라고 했습니다.
위의 명령어를 통해 리포지토리에 로그인 하고 이미지를 푸쉬하라는데 밑에 자세히 설명하도록 하겠습니다.
일단 AWS CLI를 설치해야 합니다.
맥 기준으로
1 | brew install awscli |
명령어를 통해 AWS CLI를 설치합니다. 다른 OS는 알아서…
그다음에 설정을 해줘야 하는데 aws configure 명령어를 통해
IAM User의 Access ID와 Secret Key를 위 처럼 입력해주시면 됩니다.
이제 AWS CLI 설정은 끝났습니다. 아까 페이지의 명령어를 차례대로 따라하시면 됩니다.
1 | aws ecr get-login --no-include-email --region ap-northeast-2 |
이 명령어를 통해 로그인을 하면
위와 같이 엄청 긴 명령어가 나옵니다.
만약 위와 같이 에러 메세지가 나온다면 aws configure를 통해 설정 해준 유저에 권한이 없어서 생기는 문제입니다.
AWS IAM에서 위의 권한을 유저에 할당하시면 됩니다.
아까의 명령어에서 반환된 결과를 복붙해서 실행합니다.
1 | docker tag main-image:latest 123456789123.dkr.ecr.ap-northeast-2.amazonaws.com/test:latest |
위의 명령어는 예시 입니다. 본인의 명령어는 단계 2: Docker 이미지 빌드, 태그 지정 푸쉬 페이지에서 확인하시기 바랍니다.
우리가 만들어 놓은 도커 이미지 이름은 main-image이고 리포지토리 이름은 test입니다.
이에 주의하면서 위의 명령어를 입력하면 아래와 같이 업로드가 진행됩니다.
위의 명령어를 입력하면 위와 같이 우리가 만들어 놓은 이미지가 리포지토리에 푸쉬됩니다.
그 다음에 페이지의 다음 단계로 넘어갑니다.
작업 정의 이름을 test-task-definition으로
컨테이너 이름을 test-container으로 해줬습니다.
여기서 주의 해야 할 점은 위와 같이 호스트 포트를 꼭 0으로 해주어야 합니다!
0으로 해주지 않으면 뒤에서 할 AutoScaling을 할 때
Load Balancer의 포트 번호가 이미 사용 중이라고 해서 에러가 납니다.
여기서 0의 의미는 자동으로 할당한다는 의미 입니다.
서비스 이름을 test-service라고 지었습니다.
우리가 아까 호스트 포트를 0으로 설정해 놔서
강제로 Load Balancer를 사용 하는 것으로 되어 있습니다.
그리고 넘어갑니다.
자신이 원하는 설정 하시고 넘어갑니다.
인스턴스 시작 및 서비스 실행을 누릅니다
그러면 ELB, VPC, EC2등 다양한 것들을 설정합니다.
이 작업은 몇 분 정도 걸립니다.
작업이 끝나면 서비스 보기를 누릅니다.
위와 같이 나오면 성공입니다.
2. AutoScaling 설정하기
Auto Scaling을 누릅니다.
아직 아무 것도 없다고 뜹니다.
업데이트를 누릅니다.
그냥 넘어갑니다.
여기도 그냥 넘어갑니다.
저는 최소 작업 개수를 1개로 최대 작업 개수를 5개로 했습니다.
다르게 해도 상관 없습니다.
조정 정책 추가를 누릅니다.
정책 이름을 test-policy로 했습니다.
새 경보 생성을 누릅니다.
알람 이름을 test-alarm으로 했습니다.
위와 같이 한 다음에 저장을 누릅니다.
위에서 설정한 값의 의미는 1개의 컨테이너가 1분 이상 평균 CPU 사용량이 1퍼센트가 넘으면 경보가 울린다는 의미입니다.
조정 작업에서 1 추가로 합니다.
이 의미는 경보가 울리면 작업을 1개 추가 한다는 의미 입니다.
그리고 다음 단계로 넘어갑니다.
서비스 업데이트를 누릅니다.
위와 같이 설정 작업이 끝날 때 까지 기다립니다.
EC2 대쉬보드로 들어가서 로드밸런서의 DNS 주소를 찾습니다.
정상적으로 페이지가 나오는 걸 확인 할 수 있습니다.
CloudWatch에 들어가면
위 사진과 같이 우리가 설정해 놓은 알림이 있는 것을 확인 할 수 있습니다.
이제 이 알림이 울리게 하기 위해 아까의 페이지에서 새로고침을 연타합니다! CPU 사용률을 늘려서 AutoScaling이 되는 것을 확인하기 위해서 입니다. (물론 설정해 놓은 사용률이 1%여서 굳이 안해도 경보가 울리긴 합니다.)
그러면 이렇게 경보가 생기는 것을 알 수 있습니다.
이제 ECS 대쉬보드로 넘어가면 AutoScaling이 된 것을 확인 할 수 있습니다.
EC2 Container Service(ECS) 사용하기 + AutoScaling
