[AWS] VPC 구성 및 ECS 배포 해보기(+기본개념) [3. ECS 샘플 배포]

Heechan Kang·2023년 12월 1일
0

AWS ECS 배포하기

목록 보기
3/7
post-thumbnail

AWS VPC 구성부터 ECS 배포까지

❗참고❗
실습 후에 꼭 모든 VPC와 서비스 등을 삭제 해 주셔야합니다.
특히 NAT Gateway의 경우, 생성만 해 두어도 돈이 줄줄 흘러나갑니다!

클러스터(Cluster) 생성

  • Cluster name 지정 후 Infrastructure에서 Fargate 선택(기본선택)

작업 정의(Task Definition) 생성

  • Service를 만들기 전에, Task Definition을 만들어줍니다.

  • Task definition family에 작업정의의 이름을 작성해 주고
  • Launch type은 AWS Fargate로 선택해줍니다. 기본 선택되어있습니다.
  • 가장 저렴한 0.25 vCPU / 0.5GB Memory를 선택해줍니다.
  • 처음 하시는 경우, Task execution role이 없을텐데, 기본으로 만들어줍니다.

  • 컨테이너의 이름은 편의대로 nestjs로 설정하겠습니다.
  • 이미지는 제가 이전에 weston0713/nestjs로 Hello World 프로젝트를 배포해 두었으니, 이것을 사용하시거나, nginx 등을 사용하셔도 무방합니다.
  • 포트는 사용하시는 이미지에 따라 열어줍니다. 저는 nestjs를 사용하므로 3000번 포트를 열어주겠습니다.
  • ❗여기서 제 이미지를 사용하는 경우, 보안그룹과 혼동하여 80, 3000포트를 둘다 열지 않도록 주의해 주세요.

  • 필수사항은 아니지만, Node 서버를 띄울땐 이왕이면 nofile을 65535로 풀어주시면 좋습니다.

서비스(Service)생성

이후 다시 Clusters -> ford-study -> Services로 이동해줍니다.

  • 신버전에서는 기본적으로 용량 공급자 방식(Capacity provider strategy)이 선택되어있네요.

  • 위 사진처럼 선택해 줍니다.(사실 아직은 상관 없습니다)

    이름기본가중치특징
    Fargate10비싸다. 바로 사용 가능하다
    Fargate01저렴하다. 항상 가능한건 아니다

  • Service로 생성해줍니다.
  • Service name은 편의에 따라 설정 해 주시고,
  • Desired tasks는 우선 두개 생성하겠습니다.

Networking

  • VPC를 반드시, 이전에 만들어준 ford-study-vpc로 변경해준 후, 서브넷을 private 1, 2로 선택해줍니다.
  • 이후 적당한 포트를 열어주시고,
  • 당연하게요 Public IP는 사용하지 않습니다.

Load balancing

  • 로드밸런서는 Application Load Balancer를 선택해줍니다.
  • 이름을 적당히 작성 해 주고,
  • Listener와 Target group을 위처럼 생성해줍니다.

Service auto scaling(생략)

생성에 약 3분정도 시간이 걸리네요. 이전보다 더 늦는듯 합니다.
아무래도 ALB, SG, TG등을 한번에 만들어서 그런가봅니다.

  • 이후 새로고침 해 보면 위와같이 Tasks가 떠있는것을 볼 수 있습니다.

배포확인

  • Task가 Running 상태가 된 후, 상세정보에서 로그를 확인하면 위와 같이 정상적으로 실행되었다는 메시지를 볼 수 있습니다.
  • 로컬에서 편의상 처리해둔 색상표시때문에 로그 자체는 굉장히... 지저분하네요.

  • EC2 -> Load balancers에 가보시면 우리가 만든 alb를 찾을 수 있습니다.
  • 이 DNS 주소를 크롬 url에 입력 해 보시면

=> 안되는데,, 왜 안돼..?

  • 확인해보니 ALB를 자동으로 생성하면 별도 선택없이 서브넷을 Private1, 2(fargate 배포를 위해 선택한 서브넷)을 기준으로 만드는것같습니다.
  • 위 사진처럼 EC2 -> Load balancers에서 직접 수정해주시거나, 아니면 처음부터 직접 만들어서 쓰시는 게 좋을 것 같습니다.

전반적으로 신버전 UI에서는 대부분의 하위 요구사항(ALB, 보안그룹, 타겟 그룹 등)들을 동일한 페이지에서 생성 할 수 있도록 신경을 써 준 것 같은데, 복잡도를 낮추겠다는 이유로 너무 많은게 생략되는것같습니다.
다음 글 부터는 이런부분 좀 더 신경써서 작성 해 보겠습니다.

결과적으로 아래와 같이 정상 배포된 모습을 확인 할 수 있습니다.

profile
안녕하세요!

0개의 댓글