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만을 사용하여 작업해보자.
- 이름 태그는 기본적으로 my-vpc-01
- IPv4는 10.0.0.0/16 으로 설정해보자.
생성했을 때 자동으로 라우팅테이블, NACL, 보안 그룹이 생성된다.
서브넷 생성
- 방금 생성한 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을 붙여주고
- 라우팅 테이블을 연결시켜줌
라우팅 테이블
기존에 디폴트로 생성되어있는 라우팅 테이블을 private subnet을 위한 라우팅 테이블로 이용하자.
⇒ 이름을 my-private-subnet-rt로 변경
⇒ 작업 → 서브넷 연결 편집을 눌러 명시적으로 서브넷을 연결하자
⇒ 연결 저장을 통해 명시적 서브넷 연결을 완료한다.
⇒ 각 서브넷에 대한 라우팅 테이블을 만들고, 똑같이 서브넷을 하나씩 연결하자.
인터넷 게이트웨이
인터넷을 연결하려면 당연히 인터넷 게이트웨이가 필요하다.
기본적으로 만들어져있는 인터넷게이트웨이 말고, 하나 더 생성하자.
만들고 나서 vpc에 연결해줘야 한다. 작업 ⇒ vpc에 연결
my-vpc-01에 연결.
이후 3개의 서브넷 중 public subnet만 internet gateway에 접근 가능하도록, 라우팅 테이블을 수정해야한다.
라우팅 테이블 > public subnet > 라우팅 > 라우팅 편집
EC2
인스턴스 시작
이름: demo-my-public-ec2
AMI: 기존 그대로
키페어: 없음
네트워크 설정:
- VPC를 기본 vpc에서 my-vpc-01로 변경
- 서브넷은 public-subnet
- 퍼블릭 IP 자동 할당의 경우 기본적으로 비활성화가 되어있음.
- IP가 자동적으로 할당될 것인지를 체크해주는 것인데, 원래는 활성화가 기본이나 서브넷 옵션이 비활성화 이기 때문
my-public-subnet 설정에 들어가서 자동 할당 활성화를 눌러보자.
- 보안그룹은 기존 보안 그룹의 default를 설정.
EC2에는 기존 보안 그룹의 default를 설정하였으나, 해당 보안그룹은 모든 트래픽 및 소스가 잡혀있어서, 접근이 불가함. 그렇기에 규칙 편집을 통해 제거해주어야 한다.
인스턴스가 실행 중 이라면, 인스턴스를 연결해보자.
인터넷이 연결 되는 것을 볼 수 있다.
private EC2 생성
- 이름: demo-my-private-ec2-instance
- AMI: 기존 그대로
- 키 페어: 새 키 페어 생성
- 네트워크 설정
연결을 하기 위해선 아래와 같은 방법이 필요하다.
- Session Manager
- 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
- 네트워크 설정
NAT Gateway
db instance에서 mysql과 같은 라이브러리 설치를 위해선 NAT Gateway가 필요하다.
탄력적 IP 할당이 필요하기 때문에, 할당하도록 하자.
private subnet, db subnet은 인터넷으로 가는 통로가 없기 때문에, 라우팅 테이블을 편집해야 한다.
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