[2023 기능대회 준비] 8. ECS 실습 - EC2

Yohan_05·2023년 3월 21일
0
post-thumbnail

실습

간단하게 ecs 쪽 서비스들을 생성해서 컨테이너에 Flask 를 띄우고, 웹 페이지로 확인해 볼 것이다.
ec2 와 fargate. 이렇게 두 종류의 실습을 진행하게 될건데 ec2가 적합한 상황의 경우는 아래와 같다.

  • 각 컨테이너들이 동일한 디스크를 공유해야 하는 경우
  • 세밀한 인스턴스 세팅이 필요한 경우
  • 항상 실행되는 웹서버

ECR

이 글을 읽고 ECR에 이미지를 푸쉬하고 오자.

클러스터

ecs 를 검색, 이후 클러스에 들어가 클러스터 생성 버튼을 눌러준다.

이번엔 ec2에 컨테이너?를 띄울거기 때문에 ec2 linux + 네트워킹을 선택해준다.

이름을 알잘딱 지어주고, 인스턴스 구성은 온디맨드, 용량은 적당한걸로 해주고 대회 아키텍처처럼 ecs 인스턴스 2개를 띄워준다. 인스턴스에 혹시 모를 문제가 생길지도 모르니 키페어를 연결해주어 ssh 연결을 열어준다.

vpc는 기존에 쓰던 vpc, Public subnet 을 사용해준다. private subnet 을 사용하는게 맞겠지만 음.. 귀찮아서 Public 서브넷을 사용했다. 다음 fargate 실습땐 Private subnet 을 사용해서 해보겠다.
보안그룹은 22번, 5000번, 80번 포트를 열어줬다. (더 축소시킬 수도 있을 것 같다. 해보고 수정하겠다.)

IAM 역할은 따로 명시되어있는게 아니라면 기존에 있던 역할을 사용하자.

그리고 생성버튼을 눌러주면 이렇게 클러스터가 생성되어있는것을 볼 수 있다.

클러스터가 제대로 생성이 되었다면 Ec2 인스턴스에 Ecs 로 시작하는 인스턴스들이 보일 것이다.

작업 정의

컨테이너를 구동시키기 위해 최소 단위인 테스크(작업)을 정의해보자. 작업 정의로 이동하여서 새 작업 정의 생성 버튼을 클릭해준다.

Ec2 인스턴스로 띄울거기때문에 ec2를 클릭

이름 = 알잘딱, 테스크 역할 = 별다른 명시 없으면 기본으로, 이후 네트워크 모드도 Default 로 설정했다.

IAM 역할도 기본 역할로 해주고, 작업 메모리, 작업 CPU는 최소값과, 1GB의 절반을 입력해주었다.

이후 컨테이너 추가 버튼을 눌러 컨테이너 이름과, ECR에 푸쉬한 이미지의 링크를 복사해온다. flask는 5천번에서 열리기 때문에 포트 매핑은 80:5000 으로 80번으로 접속할경우 5000번 포트로 이동하게 해준다.

그리고 남은것들은 대충대충 넘기며 작업 정의를 생성해준다.

서비스

방금 만든 작업 정의를 토대로 서비스를 생성해봅시다. 클러스터 - 서비스 - 생성을 클릭해주세요.

이후 ec2, 작업 정의는 아까 생성했던 작업 정의, 개정은 (latest)가 적혀있는걸 골라주시고 서비스 이름도 알잘딱 지어주세요.

배포와 작업 배친데 여기선 큰 상관이 없으니 롤링 업데이트, AZ 균형 분산을 골라줄게요.

로드 밸런싱인데 Private subnet에 생성한게 아니라 굳이 필요는 없지만 Public 에서 private 로만 바꾸면 기능대회 아키텍처와 같아지기 때문에 한번 테스트해볼게요.

ALB에 컨테이너 추가.

오토 스케일링은 일단 생략.

접속해보자

작업이 잘 돌아가고있는것을 확인할 수 있다. 이제 브라우저를 통해 접속해보자.

이후 ec2의 Ip 로 접속해도 잘뜨고

ALB DNS 주소로 접속해도 잘 뜬다.

마치며

다음엔 Fargate 형식으로 ecs 실습을 진행하겠다. 이거랑 많이 비슷할 것 같은데 조금씩 다른 부분이 있기 때문에 정리하려고한다.

profile
안녕하세요 DevOps 엔지니어로 현업에서 활동중인 요한이라고 합니다.

0개의 댓글