[AWS] VPC 구성해보자 (EC2, RDS 배치)

김일한·2023년 7월 24일
0

AWS

목록 보기
1/1
post-thumbnail

🧑🏻‍💻 시작

CI/CD 구축을 위해 AWS에서 제공하는 클라우드 서비스를 이용하려고 한다.
EC2 (애플리케이션 서버) , RDS(데이터베이스 서버)를 나누어 사용하고 이를 위해 VPC를 생성하고 서브넷을 나누어 각각 배치하기 위한 과정을 담아보려한다.
시작하기 앞서 간단하게 VPC에 대해 알아보자

VPC(Virtual Private Cloud)

논리적으로 할당된 가상의 네트워크 공간으로 VPC를 사용하는 유저는 서브넷, 라우팅 테이블, 네트워크 게이트웨이 구성 등 네트워킹 환경을 원하는 대로 설정할 수 있다.
이러한 vpc는 왜 사용할까? 여러가지 이유가 있지만 주요 이유를 몇가지 뽑아 보자면

  • 보안 : VPC는 방화벽, 보안그룹, 네트워크 ACL 등의 기능을 제공하여 네트워크 트래픽을 제어하고 보안을 강화할 수 있다.
  • 격리 : VPC는 독립적인 공간으로 다른 VPC와 격리되어 있다. 따라서 VPC 별로 자원을 할당하여 독립적으로 사용할 수 있다.


VPC 구축 과정

VPC를 생성할 때 VPC뿐 만 아니라 서브넷, 라우팅 테이블, 인터넷 게이트웨이를 함께 생성하면 간편하지만 나는 각각 생성하고 연결해보면서 어떤 구조를 띄는지 확인해볼 것이다.
진행 순서는 VPC생성 -> 인터넷 게이트웨이 생성 -> 라우팅 테이블 생성 -> 서브넷 생성 -> 서브넷 ~인터넷 게이트웨이 연결 순으로 진행하며 VPC를 생성하면 자동으로 라우팅 테이블이 생성되는데 인터넷 게이트웨이부터 생성할 예정이다.

1. VPC 생성


AWS Console 검색창에 vpc를 검색해서 vpc 서비스로 접근한다.

좌측 메뉴에서 VPC를 클릭하고 우측 상단에 있는 'VPC 생성'을 클릭한다.

VPC 생성 폼에서 여러가지 설정을 할 수 있는데 VPC 외 서브넷, 라우팅 테이블, 인터넷 게이트웨이는 수동으로 설정하겠다.
VPC 등 체크박스를 선택해서 생성해도 EC2, RDS를 사용하는데 전혀 문제 없다.
다만, IPv4 CIDR을 설정하는 과정에서 10.0.0.0/24와 같이 할당하게 된다면
해당 VPC 에서는 10.0.0.0 ~ 10.0.0.255 중에서도 D클래스가 0,1,2,3,255인 IP를 제외하고 250개의 IP만 할당할 수 있다.
따라서 VPC IP를 할당하기 전에 본인이 사용할 자원의 갯수와 규모를 파악한 후 VPC를 생성해야 한다.
자세한 내용은 서브넷팅을 검색해보면 된다.

생성한 VPC에 대한 정보를 확인할 수 있다.
Resource map을 보면 서브넷, 라우팅 테이블, 인터넷 게이트웨이가 비어있는데 추후에 생성하고 연결해주겠다.

2. 인터넷 게이트웨이 생성


좌측 메뉴에서 인터넷 게이트웨이를 클릭하고우측 상단에 있는 '인터넷 게이트웨이 생성'을 클릭한다
my-internet-gateway는 미리 만들어 놓고 vpc에 연결해 놓았기 때문에 'Attached' 상태이지만 새롭게 생성할 경우 'Detached' 상태일 것이다.


다음과 같이 인터넷 게이트웨이 이름을 설정하고 생성한다.


방금 생성한 인터넷 게이트웨이를 선택하고 'VPC에 연결'을 선택한다.
생성한 VPC를 선택하고 인터넷 게이트웨이를 연결 시킨다.

3. 라우팅 테이블 생성


좌측 메뉴에서 라우팅 테이블을 클릭하고우측 상단에 있는 '라우팅 테이블 생성'을 클릭한다

처음 생성했던 VPC를 선택하고 라우팅 테이블을 생성한다. 테이블 이름은 선택사항이라 굳이 설정하지 않아도 된다.
VPC가 생성되면 기본적으로 1개의 라우팅 테이블이 주어지기 때문에
default VPC의 기본 라우팅 테이블 1개
우리가 VPC를 생성할 때 같이 생성된 기본 라우팅 테이블 1개
방금 생성한 라우팅 테이블 1개
총 3개의 라우팅 테이블이 존재할 것이다.
default VPC는 사용하지 않고, 우리가 생성한 VPC의 라우팅 테이블 2개만 이용할 것이다.


4. 서브넷 생성


좌측 메뉴에서 서브넷을 클릭하고우측 상단에 있는 '서브넷 생성'을 클릭한다.

생성해놨던 VPC ID를 선택한다.

사진과 같이 EC2를 배치하기 위한 서브넷 ec2-subnet1,2를 생성한다.
RDS를 배치하기 위한 서브넷은 4개로 생성했으며 추후 RDS를 생성할 때 가용 영역이 최소 2개는 필요하기 때문에
아시아 태평양(서울) ap-norheast-2a 2b 2c 2d로 가용 영역을 나누어 생성했다.

rds-subnet1 10.0.1.0/26
rds-subnet2 10.0.1.64/26
rds-subnet3 10.0.1.128/26
rds-subnet4 10.0.1.192/26
본인이 사용할 리전을 기준으로 가용 영역을 2개 이상으로만 나누면 상관 없다.

생성된 서브넷의 목록이다.
VPC, 서브넷, 라우팅 테이블, 인터넷 게이트웨이 생성을 완료 했으니 이제 각각 연결 시킴으로써 VPC를 완성시켜보자



5. 서브넷 -라우팅 테이블 연결

EC2, RDS에 배치할 서브넷을 나눈 것 처럼 라우팅 테이블도 EC2 서브넷이 사용할 라우팅 테이블, RDS 서브넷이 사용할 라우팅 테이블로 나누어 연결해보겠다.
좌측 메뉴에서 라우팅 테이블을 클릭하면 3개의 라우팅 테이블이 존재하는데
default vpc에 연결된 라우팅 테이블이 생성한 VPC와 연결된 라우팅 테이블 2개를 찾아서 1개씩 서브넷을 연결해보겠다.
우선 직접 생성한 라우팅 테이블이 아닌 VPC를 생성하며 같이 생성된 라우팅 테이블을 선택하여 '서브넷 연결 편집'을 클릭한다.

우리가 생성한 총 6개의 서브넷 (EC2 2개, RDS 4개)가 모두 연결되어 있을텐데 여기서 EC2에 사용할 서브넷만 선택하거나 RDS에 사용할 서브넷만 선택하여 저장한다.
그리고 직접 생성한 라우팅 테이블에는 나머지 서브넷을 선택하여 저장한다.

VPC를 생성하며 같이 생성된 라우팅 테이블에 EC2에 사용할 서브넷 2개
직접 생성한 라우팅 테이블에 RDS에 사용할 서브넷 4개가 연결된 모습이다.

6. 라우팅 테이블 - 인터넷 게이트웨이 연결

마지막으로 라우팅 테이블과 인터넷 게이트웨이를 연결 시켜보겠다.
서브넷을 연결한 라우팅 테이블을 선택하고 우측 하단에 있는 '라우팅 편집'을 클릭한다.

사진과 같이 인터넷 게이트웨이를 추가하고 변경 사항을 저장한다.
2개의 라우팅 테이블 모두 인터넷 게이트웨이를 연결하고 난 뒤 생성한 VPC를 클릭해보면
사진과 같이 서브넷, 라우팅 테이블, 인터넷 게이트웨이가 모두 연결되어 있음을 확인할 수 있다.

실제로는 같은 VPC 내에 있는 자원(EC2, RDS)들은 서로 접근할 때 인터넷 게이트웨이를 거치지 않고 직접 통신할 수 있다.
해당 VPC에서는 public subnet , private subnet을 나누어 생성하지 않았지만
EC2, RDS 모두 private subnet으로 배치하고 인터넷 게이트웨이를 연결시키지 않음으로써 외부에서 접근할 수 없도록 만드는 것이 좋다.
로컬에서 SSH 원격 접속과 같이 필요에 의해 NAT 게이트웨이 설정으로 외부에서 연결할 수 있다. 하지만 무료가 아니다...
그렇기 때문에 RDS, EC2 모두 public subnet에 배치 시키고 최종적으로 EC2에서 RDS에 접근하는 것 까지 테스트 해보겠다.

profile
도전을 즐기는 개발자, 김일한입니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

좋은 정보 감사합니다

답글 달기