티스토리 뷰

SW 개발

Amazon VPC, 개념 및 사용법 정리

지단로보트 2020. 11. 24. 13:45

VPC 개념 및 생성 전략

  • VPC는 하나의 리전에 종속되는 개념으로 리전마다 최대 5개의 VPC를 생성할 수 있다.
  • 보안과 관리 편의를 위해 애플리케이션 환경 단위(dev, qa, stage, prod)로 IAM 사용자 계정을 분리 생성한다.
  • 마찬가지로 보안과 관리 편의를 위해 애플리케이션 환경 단위로 VPC를 분리 생성한다. 또한 각 환경과 무관한 management 전용 VPC를 생성한다. 여기에는 CI/CD, 로그 관제와 같은 시스템을 구성한다.
  • 기본 생성되어 있는 VPC는 삭제한다.
  • 환경 단위로 분리한 VPC 생성의 예는 아래와 같다.
    • management: 10.0.0.0/16
    • dev: 10.10.0.0/16
    • qa: 10.20.0.0/16
    • stage: 10.30.0.0/16
    • prod: 10.40.0.0/16
  • management와 각 격리된 환경 단위 VPC들은 피어링을 통해 서로 제한적으로 통신하도록 구성한다.
  • 서로 다른 리전에 위치하여 격리된 프라이빗 VPC 간에라도 VPC 피어링 연결을 생성하면 마치 동일한 내부 네트워크에 있는 것처럼 취급할 수 있다. [관련 링크]
  • 외부와 완전히 격리된 프라이빗 서브넷에 위치한 EC2 인스턴스가 존재할 경우, 동일한 VPC 내의 퍼블릭 서브넷을 SSH Agent로 경유하여 외부에서 SSH 접속이 가능하다. [관련 링크]

VPC 생성

  • VPC 생성 방법은 아래와 같다.
Amazon VPC 콘솔 접속
→ 리전 선택
→ [VPN] 클릭
→ [VPN 생성] 클릭
# VPC 설정
→ 이름 태그: foobar-dev
→ IPv4 CIDR 블록: 10.10.0.0/16
→ [VPN 생성] 클릭
  • VPC 개수는 리전 단위로 최대 5개로 제한된다. 그 이상 생성을 시도할 경우 The maximum number of VPCs has been reached. 오류가 발생한다.

인터넷 게이트웨이 생성

  • 생성한 VPC가 인터넷과 통신 가능하게 하려면 그 접점이 되는 인터넷 게이트웨이를 생성해야 한다. 인터넷 게이트웨이VPC와 1:1로 맵핑되므로 생성한 VPC 개수 만큼 만들어야 한다. 생성 방법은 아래와 같다.
Amazon VPC 콘솔 접속
→ 리전 선택
→ [인터넷 게이트웨이] 클릭
→ [인터넷 게이트웨이 생성] 클릭
# 인터넷 게이트웨이 설정
→ 이름 태그: foobar-dev (입력)
→ [인터넷 게이트웨이 생성] 클릭

서브넷 개념 및 생성 전략

  • 서브넷은 하나의 VPC를 다시 잘게 쪼개어 영역을 분리하는 개념이다. 서브넷은 크게 3개를 생성한다.
  • 1차로 인터넷에 직접적으로 노출될 퍼블릭 티어(Public Tier)가 있다. 대표적으로 로드 밸런서가 여기에 위치한다.
  • 2차로 인터넷으로의 직접 노출이 제한되는 프라이빗 애플리케이션 티어(Private Application Tier)가 있다. 실제 애플리케이션 인스턴스가 여기에 위치한다.
  • 3차로 인터넷으로의 직접 노출이 제한되는 프라이빗 퍼시스턴스 티어(Private Persistence Tier)가 있다. 실제 데이터베이스 인스턴스가 여기에 위치한다.
구분 IPv4 CIDR 블록
dev-public 10.10.0.0/24
dev-private-application 10.10.10.0/24
dev-private-persistence 10.10.20.0/24

서브넷 생성

  • 서브넷 생성 방법은 아래와 같다.
Amazon VPC 콘솔 접속
→ 리전 선택
→ [서브넷] 클릭
→ [서브넷 생성] 클릭
# VPC
→ VPC ID: dev (서브넷이 소속될 기존 존재하는 VPC 선택)
# 서브넷 설정
→ 서브넷 이름: dev-public
→ IPv4 CIDR 블록: 10.10.0.0/24
→ [서브넷 생성] 클릭

라우팅 테이블 생성 및 퍼블릭 서브넷 설정

  • 생성한 서브넷은 기본적으로 프라이빗으로 설정되어 있다. 퍼블릭으로 변경하려면 해당 서브넷이 소속된 VPC에 맵핑되는 라우팅 테이블을 생성하고, 외부로의 아웃바운드 트래픽을 개방하고, 퍼블릭으로 설정할 서브넷에 연결해야 한다.
  • 먼저 라우팅 테이블을 아래와 같이 생성한다.
Amazon VPC 콘솔 접속
→ 리전 선택
→ [라우팅 테이블] 생성 클릭
→ 이름 태그: foobar-dev-public (입력)
→ VPC: (라우팅 테이블이 소속될 VPC를 선택)
→ [생성] 클릭
  • 해당 라우팅 테이블의 인터넷 아운바운드 트래픽이 가능하도록 아래와 같이 설정한다.
(라우팅 테이블 선택)
→ [라우팅] 클릭
→ [라우팅 편집] 클릭
→ 대상: 0.0.0.0/0 (입력)
→ 대상: [Internet Gateway] 선택 -> (소속된 VPC에 연결된 인터넷 게이트웨이 선택)
→ [라우팅 저장] 클릭
  • 아래 설정을 통해 해당 라우팅 테이블을 퍼블릭으로 설정할 서브넷과 맵핑한다.
(라우팅 테이블 선택)
→ [서브넷 연결] 클릭
→ [서브넷 연결 편집] 클릭
→ 연결된 서브넷: (퍼블릭으로 설정할 서브넷 선택)
→ [저장] 클릭

NAT 게이트웨이 생성 및 프라이빗 서브넷 설정

  • 생성 후 아무 설정도 하지 않은 서브넷은 프라이빗에 외부로의 아웃바운드 트래픽도 제한된 상태이다. 아웃바운드 인터넷이 가능하게 하려면 NAT 게이트웨이를 퍼블릭 서브넷에 생성 후 프라이빗 서브넷에 연결해야 한다.
Amazon VPC 콘솔 접속
→ 리전 선택
→ [NAT 게이트웨이] 클릭
→ [NAT 게이트웨이 생성] 클릭
→ 이름 태그: foobar-dev (입력)
→ 서브넷: (NAT 게이트웨이가 소속될 퍼블릭 서브넷 선택)
→ 탄력적 IP 할당 ID: [탄력적 IP 할당] 클릭
→ [NAT 게이트웨이 생성] 클릭
  • 프라이빗 서브넷과 연결된 해당 라우팅 테이블의 인터넷 아운바운드 트래픽이 가능하도록 아래와 같이 설정한다.
(라우팅 테이블 선택)
→ [라우팅] 클릭
→ [라우팅 편집] 클릭
→ 대상: 0.0.0.0/0 (입력)
→ 대상: [NAT Gateway] 선택 → (NAT 게이트웨이 선택)
→ [라우팅 저장] 클릭

참고 글

댓글
댓글쓰기 폼