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

Heechan Kang·2023년 12월 3일
0

AWS ECS 배포하기

목록 보기
4/7
post-thumbnail

AWS VPC 구성부터 ECS 배포까지

이번에는 VPC and more이 아닌, 직접 수동으로 모든 요소를 만들고 ECS 배포까지 해보겠습니다.

  • 생성할 요소 목록
    • 네트워크 구성
      • VPC
      • Public Subnet 1, 2
      • IGW
      • Public ACL
    • ECS 배포
      • Cluster
      • Task Definition
      • Service
      • 보안 그룹(Security group)
      • ACL
      • 대상 그룹(Target group)

네트워크 구성

VPC 생성

  • VPC only로 선택해서 VPC만 생성 해 줍니다.
  • IP 대역과 사이더(CIDR)는 10.0.0.0/16으로 구성해줍니다.

Subnets 생성

  • 서브넷은 당연하게도, 위에서 생성한 VPC 내부에 만들어줍니다.

  • 저는 각각 이름을 ford-study-public-1, 2로 생성하겠습니다.

  • 사이더 블록은 각각 10.0.0.0/24, 10.0.1.0/24로 구성해줍니다.

    • CIDR의 개략적인 개념은 아래 표와 같습니다.

      CIDR네트워크 주소사용 가능한 호스트 수총 호스트 수네트워크 클래스
      /321개1개 (단일 호스트)1-
      /24256개254개256C 클래스
      /1665,536개65,534개65,536B 클래스
      /816,777,216개16,777,214개16,777,216A 클래스
  • AZ는 이전에도 말씀드린 대로 a, c로 선택 해 줍니다.

IGW(인터넷 게이트웨이)

  • IGW는 생성시 별도 설정 할 내용이 없습니다.

  • 다만 위 그림처럼 생성 직후 Attach to VPC라는 알림이 뜨는데, 이 때 연결해주는 것이 가장 좋습니다.
  • 만약 이 알림을 놓치셔도 아래와 같이 수동으로 붙여 줄 수 있습니다.

RT(라우트 테이블)

  • 라우트 테이블은 할당된 서브넷에 대한 지도 역할을 합니다.
  • 별도 설정할 것은 없고, 이름과 VPC를 선택 해 줍니다.
  • 대신 생성 후 해줄 일이 두 가지 있습니다.

RT에 IGW 추가

  • 모든 트래픽(0.0.0.0/0)에 대해, 이전에 생성한 Internet Gateway로 연결해줍니다.

RT에 서브넷 할당

  • Subnet associations에서 이전에 만든 public 1, 2 서브넷을 연결해줍니다.
  • 이로서 우리의 서브넷에서 외부 인터넷과의 통신이 가능해졌습니다.

ECS 배포

클러스터 생성(생략)

  • 이전과 같이 클러스터를 생성 해 줍니다.

작업 정의(Task definition) 생성(생략)

  • 이전과 동일하게 작업 정의를 생성 해 줍니다.
  • 컨테이너 생성 시, 사용하는 컨테이너에 따라 포트를 신경 써 주세요.
  • 다른 설정은 기본 설정에서 수정할 필요 없을것같습니다.

Service 생성

  • 비용을 최소화 하기 위해 이전과 같이 진행하겠습니다.
    • Fargate Base 1, Weight 0
    • Fargate spot Base 0, Weight 1

  • Family를 이전에 만든 작업 정의로 선택 해 주고, 우선 Desired Tasks를 2로 설정해서 각 AZ별로 Task가 뜨도록 설정하겠습니다.

Networking

  • Network에서는 VPC를 꼭 이전에 만든 VPC로 선택 해 주시고, Subnets도 public 1, 2가 선택되어있는지 확인합니다.
  • 보안 그룹은 생성 해 주시고, 80, 3000번 포트를 둘 다 열어줍니다.
    • 아마 이 보안그룹이 ALB에서도 사용되는 것 같습니다. 그렇기에 80포트도 같이 열어줍니다.
  • NAT gateway를 사용하지 않으므로, Public IP를 꼭 할당해줍니다.

Load balancing

  • ALB 생성시에 대상 그룹을 같이 생성하게됩니다.
  • 필요한 health check path를 수정해주면 되는데, 우선은 루트로 해 주겠습니다.

이렇게 되면, 기본적인 배포가 완료됩니다.
구버전보다 생성에 시간이 꽤 오래 걸립니다. 약 3~5분 후 확인 해 보면 Service가 정상적으로 운영되고있는 모습을 볼 수 있습니다.

배포 확인

  • 자 이제, 대략적인 배포 과정이 모두 끝났습니다.

  • EC2 -> Load balancers로 들어가서, 배포된 서비스의 DNS 주소를 확인합니다.

  • 초기엔 접근이 다소 오래걸리지만, 아무튼 배포가 성공한 것을 알 수 있습니다.
  • 이와 같이 NAT 없이 운영을 하게 되면, 물론 보안상에 문제는 다소 있을 수 있겠지만, 운영 비용에서 상당한 절감 효과가 있습니다.
  • 따라서 학습용으로 외부에서도 접근 가능한 파이프라인은 유지하되, 비용 부담을 줄이고 싶으신 경우 이와같이 사용해 주시면 좋을 것 같습니다.
  • 실질적으로 운영해본 결과 비용은 일 당 약 800원 정도로, 일부 부하테스트를 진행하더라도 한달 3만원 미만으로 전체 배포 상태를 유지 할 수 있었습니다.
profile
안녕하세요!

0개의 댓글