VPC 생성 실습 - aws_introduction[18]

VPC 생성 실습 - aws_introduction[18]

생성일
Aug 13, 2024 05:01 AM
Description
VPC를 만들어보자
Tag
AWS

VPC 관련 몇 가지 알아둘 점

  • 커스텀 VPC 생성 시 만들어지는 리소스: 라우팅 테이블, 기본 NACL, 기본 보안그룹
    • 서브넷 생성 시 모두 기본 라우팅 테이블로 자동 연동
  • 서브넷 생성시 AWS는 총 5개의 IP를 미리 점유함
  • VPC에는 단 하나의 Internet Gateway만 생성 가능
    • Internet Gateway 생성 후 직접 VPC에 연동 필요
    • Internet Gateway는 자체적으로 고가용성/장애내구성을 확보
  • 보안 그룹은 VPC 단위
  • 서브넷은 가용영역 단위(1 서브넷 = 1 가용영역)
  • 가장 작은 서브넷 단위는 /24 (11개, 16-5)
 

VPC 생성 실습

  • 직접 커스텀 VPC 생성 (10.0.0.0/16)
  • 서브넷 3개 생성: Public, Private, DB
  • 각 서브넷에 각각 Routing Table 연동
  • Public 서브넷에 인터넷 경로 구성: Internet Gateway
  • Public Subnet에 EC2 프로비전
  • Private Subnet에 EC2 프로비전
    • Bastion Host
  • DB Subnet에 DB 생성
    • NAT Gateway Setup
 

VPC

아무것도 하지 않았지만, 기본적으로 VPC를 가지고 있다.
아무것도 하지 않았지만, 기본적으로 VPC를 가지고 있다.
 

VPC → VPC 생성

VPC 등은 모두 설정이 되어있다.
VPC 등은 모두 설정이 되어있다.
하나하나 설정해보기 위해 VPC만을 사용하여 작업해보자.
notion image
  • 이름 태그는 기본적으로 my-vpc-01
  • IPv4는 10.0.0.0/16 으로 설정해보자.
 
생성했을 때 자동으로 라우팅테이블, NACL, 보안 그룹이 생성된다.
 

서브넷 생성

notion image
  • 방금 생성한 my-vpc-01 안에 public subnet을 생성하자.
  • CIDR 블록은 10.0.0.0/24
 
똑같은 방법으로 아래의 서브넷들을 생성하자.
서브넷 이름
AZ
서브넷 CIDR 블록
my-private-subnet
b
10.0.1.0/24
my-db-subnet
d
10.0.2.0/24
서브넷을 생성하면
  • NACL을 붙여주고
  • 라우팅 테이블을 연결시켜줌
 

라우팅 테이블

notion image
기존에 디폴트로 생성되어있는 라우팅 테이블을 private subnet을 위한 라우팅 테이블로 이용하자.
⇒ 이름을 my-private-subnet-rt로 변경
 
notion image
⇒ 작업 → 서브넷 연결 편집을 눌러 명시적으로 서브넷을 연결하자
 
notion image
⇒ 연결 저장을 통해 명시적 서브넷 연결을 완료한다.
 
notion image
⇒ 각 서브넷에 대한 라우팅 테이블을 만들고, 똑같이 서브넷을 하나씩 연결하자.
 
notion image
 

인터넷 게이트웨이

인터넷을 연결하려면 당연히 인터넷 게이트웨이가 필요하다.
기본적으로 만들어져있는 인터넷게이트웨이 말고, 하나 더 생성하자.
notion image
 
이름은 my-internet-gateway
이름은 my-internet-gateway
만들고 나서 vpc에 연결해줘야 한다. 작업 ⇒ vpc에 연결
my-vpc-01에 연결.
 
이후 3개의 서브넷 중 public subnet만 internet gateway에 접근 가능하도록, 라우팅 테이블을 수정해야한다.
 

라우팅 테이블 > public subnet > 라우팅 > 라우팅 편집

로컬 트래픽이 아닌 경우는 intenet gateway로 가도록 만들자.
로컬 트래픽이 아닌 경우는 intenet gateway로 가도록 만들자.
 

EC2

인스턴스 시작

이름: demo-my-public-ec2
AMI: 기존 그대로
키페어: 없음
네트워크 설정:
notion image
  • VPC를 기본 vpc에서 my-vpc-01로 변경
  • 서브넷은 public-subnet
  • 퍼블릭 IP 자동 할당의 경우 기본적으로 비활성화가 되어있음.
    • IP가 자동적으로 할당될 것인지를 체크해주는 것인데, 원래는 활성화가 기본이나 서브넷 옵션이 비활성화 이기 때문
 
notion image
my-public-subnet 설정에 들어가서 자동 할당 활성화를 눌러보자.
 
notion image
  • 보안그룹은 기존 보안 그룹의 default를 설정.
 
EC2에는 기존 보안 그룹의 default를 설정하였으나, 해당 보안그룹은 모든 트래픽 및 소스가 잡혀있어서, 접근이 불가함. 그렇기에 규칙 편집을 통해 제거해주어야 한다.
notion image
모든 트래픽이 가능하도록 변경해주자.
모든 트래픽이 가능하도록 변경해주자.
 
인스턴스가 실행 중 이라면, 인스턴스를 연결해보자.
notion image
인터넷이 연결 되는 것을 볼 수 있다.
 

private EC2 생성

  • 이름: demo-my-private-ec2-instance
  • AMI: 기존 그대로
  • 키 페어: 새 키 페어 생성
notion image
  • 네트워크 설정
notion image
생성이 완료되었더라도, 퍼블릭 서브넷에 존재하지 않기 때문에 (Internet Gateway에 연결이 되어있지 않기 때문에) 연결이 불가능하다.
생성이 완료되었더라도, 퍼블릭 서브넷에 존재하지 않기 때문에 (Internet Gateway에 연결이 되어있지 않기 때문에) 연결이 불가능하다.
연결을 하기 위해선 아래와 같은 방법이 필요하다.
  1. Session Manager
  1. Bastion Host ( 해당 방법 사용 )
public-instance에 연결 후
vim demo-my-vpc-keypair.pem
이후, 그냥 pem키를 복사 붙여넣기 이후 :wq
 
chmod 400 demo-my-vpc-keypair.pem
을 통해 파일 권한 변경
 
ssh -i demo-my-vpc-keypair.pem ec2-user@{PRIVATE INSTANCE의 IP}
 

db EC2 생성

  • 이름: demo-my-db-ec2
  • AMI: 그대로
  • 키페어: demo-my-vpc-keypair
  • 네트워크 설정
notion image
 

NAT Gateway

db instance에서 mysql과 같은 라이브러리 설치를 위해선 NAT Gateway가 필요하다.
 
탄력적 IP 할당이 필요하기 때문에, 할당하도록 하자.
notion image
 
private subnet, db subnet은 인터넷으로 가는 통로가 없기 때문에, 라우팅 테이블을 편집해야 한다.
notion image
 

db-ec2 연결

아까와 같은 방법으로 db-ec2에 접속하고 나서, mysql을 다운로드 해보자
dnf -y localinstall https://dev.mysql.com/get/mysql80-community-release-el9-4.noarch.rpm dnf -y install mysql mysql-community-client
 

References