Tempo Di Valse

[AWS] ECS 에 Docker 연동하기 -3- (서비스/클러스터 생성) 본문

개발/AWS

[AWS] ECS 에 Docker 연동하기 -3- (서비스/클러스터 생성)

TempoDiValse 2022. 11. 21. 14:47

저번 포스팅 에서는 ECS 환경에 로컬에서 작업했던 이미지를 띄우기 전, 기본 환경 작업인 Task 정의에 대해 포스팅을 작성해 보았고,

 

 

[AWS] ECS 에 Docker 연동하기 -2- (ECS Task 정의)

이번 포스팅은 ECS - Docker 연동기 두번째 포스팅으로, 첫번째였던 ECR 리포지토리 생성에 이어서 이 리포지토리를 컨테이너에 올리기위한 Task 라는 것을 정의/등록 하는 방법에 대해 적어보려 한

tempodivalse.tistory.com

이번 포스팅에서는 정의한 Task 를 이용하여 실행을 시키는 단계인 클러스터 및 서비스 생성 부분에 대해 작성해 보려고 한다.

 

작업했던 흐름에 대해서 작성하는 것이기 때문에 딥하게 들어가진 않고 흐름만 작성되어있기 떄문에 자세한 사항이 궁금하다면 공식문서를 확인해 보도록 하자


1. 서비스와 클러스터는?

ECS 에서 사용하는 단어들은 한번에 알아듣기 어려운 모호한 부분이 있다. 그래서 쉽게 어떻게 풀이하면 와닿을 수 있을까 생각을 해봤지만 어려웠다. 그래서 단순하게 얘기를 해보자면, 서비스는 태스크를 실행하는 서버 한대 라고 생각되고, 클러스터는 이 서버 들을 모아놓은 서버 랙 이라고 생각이 된다.

 

조금 딥한 설명을 원한다면 이 블로거님의 포스팅을 참조하길 바란다.

 

[AWS ECS] ECS(Elastic Container Service) 란?

ECS란? Docker는 최근 각광 받고 있는 컨테이너 기술이다. 하지만 Docker를 이용해 서비스를 구축 하려면 여러가지 고려 해야할 사항이 많다. 따라서 필연적으로 컨테이너를 적절하게 배치하고 관리

wooono.tistory.com

 

환경을 구성하는 순서는 하드웨어 서버를 구성할 때 랙이 있어야 서버를 껴놓는 것 처럼, 클러스터를 먼저 만들어 주고 그 다음에 서비스를 만들어 주도록 한다.

 

2. 클러스터 생성

이름은 정의하고 싶은 대로 정의할 수 있으며, 클러스터를 정의하는 단계에서는 VPC 부분에서 특이한 점이 없으면 기본적인 세팅을 사용해서 바로 생성해도 괜찮다.

 

3. 서비스 생성

서비스는 생성한 클러스터에서 생성할 수도 있고, 정의한 태스크에서 배포 기능을 통해서 배포 할 수도 있다. 지금 해보는 방식은 정의했던 태스크를 통해서 만들어보도록 하겠다.

 

태스크 목록에서 정의했던 태스크를 선택하고 배포-서비스 생성 버튼을 누르게 되면,

이 서비스가 어느 클러스터에서 실행할 지 선택을 할 수 있고, 컴퓨팅 옵션에 용량 공급자라는 옵션을 선택할 수 있는 항목이 나열 되어 있다. 용량 공급자에 대해서는 AWS 공식문서에도 "이 것이 어떤 것이다." 라는 확실한 정의는 없으며, 두루뭉술하게 의미가 서술되어있기 때문에 쉽게 파악하긴 어렵지만 Auto-Scaling 하는 데에 필요한 요소 중에 하나라는 것만 유추할 수 있었다. 관련 자료는 다음 글을 보도록 한다.

 

Amazon ECS 클러스터 자동 스케일링 정식 출시 (서울 리전 포함)

Amazon Elastic Container Service(ECS) 클러스터에 대한 자동 스케일링(Auto Scaling) 기능이 정식 출시되어, 이제 클러스터 스케일아웃의 속도 및 안정성이 높아지고 사용자의 클러스터 조정 경험이 개선되

www.megazone.com

다음 파트인 배포 구성에는, 첫 과정이 정의된 태스크에서 서비스 생성하는 방법을 선택했기 때문에 딱히 건들 것은 없어보인다.

여기에서 서비스 이름만 간단히 작성하고 넘어가자.

 

다음에는 4개의 닫혀있는 항목이 있다.

  • 네트워킹
  • 로드밸런싱
  • 서비스 자동 크기 조절
  • 태그

네트워킹을 제외한 나머지는 선택 항목인 데다가 네트워킹 항목도 이미 정해져있는 값이 있어서 기본값이 닫혀있는 지 모르겠지만, 네트워킹과 로드밸런싱은 서비스를 외부와 연결할 때에는 필수적으로 설정해야 할 항목이다. 

보안 그룹은 없으면 새로 만들어도 되고, 기존 보안 그룹이 있다면 사용하던 보안 그룹을 선택하면 된다. 단, 사용하는 보안 그룹에는 HTTP 통신을 위한 포트는 열려있어야 웹 브라우저에서 연결 할 수 있을 것이다.

 

다음 로드밸런싱 항목에서는 처음에는 '없음' 이 선택 되어있기 때문에 별 다른 항목이 없어보이지만

항목 중에 Application Load Balancer 나 Network Load Balancer 를 선택하게 된다면 추가적으로 셋팅해야하는 속성들이 나올 것이다. 나는 여기에서 Application Load Balancer 항목을 선택했다.

항목에서는 로드밸런서와 대상 그룹의 이름, 상태 확인 경로만 입력하면 되는데 이름은 그냥 짓는거니까 입력을 하면 되겠지만, 상태 확인 경로에 대해서는 조금 생각을 해볼 필요가 있다. EC2 에서 로드밸런싱을 통해 연결하는 경우에는 해당 주소가 살아 있는 지, 아닌 지를 확인하기 위해 HealthCheck 라고 하는 말 그대로 상태확인을 한다. 그래서 상태 확인 경로에 해당되는 곳을 웹 서버가 접근하면 200 코드를 밷어 생사 여부를 할 수 있도록 만들기 위해 경로를 지정해야 된다. 대상 그룹과 로드밸런싱은 EC2 콘솔 메뉴에서도 생성과 수정이 가능하기 때문에 추후에 맞지 않을 경우에는 수정할 수 있다.

 

모두 셋팅이 완료된 후에는 배포 버튼을 눌러 완료를 하도록 한다. 그러면 내가 만든 클러스터 내에 서비스 탭에,

성공이 되면 "배포 및 태스크" 항목이 초록색으로 변해있는 것이 있을 것이고, 나 같은 경우에는 여러 환경설정을 스킵하고서 간단하게 배포만 했기 때문에 에러가 나서 빨간색이 뜨게 된다.

 

내가 포스팅 작성한다고 빼먹은 것 들은,

  • 볼륨 설정
  • 보안 그룹 포트 설정

등이 있는데, 해당 내용은 서비스를 구축하면서 작성하기 때문에 다음 포스팅으로 넘어가서 나도 구축을 해보면서 작성을 하도록 하겠다.

반응형
Comments