일반적으로 Amazon EC2에 Application을 배포하고 EC2를 통해 RDS에 접근한다. 이때 RDS는 Public이 아니라 Private으로 설정하여 외부에서 접근할 수 없도록 해줄 것이다.
그러기 위해서는 먼저 VPC를 생성하고 Public Subnet과 Private Subnet을 생성해야한다. 그리고 Public Subnet은 IGW(Internet Gateway)를 통해 외부와의 통신을 하기 때문에 Router Table에 IGW로부터 들어오는 요청에 대한 접근을 허용해주도록 설정한다. 반면 Private Subnet은 IGW가 아닌 EC2가 속해있는 Public Subnet에 대한 요청에 대한 접근을 허용해주도록 설정해준다.
VPC (Virtual Private Cloud) 생성
VPC 설정에는 VPC 이름과 IPv4 CIDR 을 입력해준다. 위처럼 CIDR를 11.0.0.0/24
라고 입력해주면 11.0.0.0 ~ 11.0.0.255
의 IP를 사용하겠다는 의미이다.
Subnet
먼저 앞서 생성해준 VPC를 선택한다.
우선 Public Subnet을 생성 해줄 것이기 때문에 서브넷 이름, 가용 영역, 서브넷 CIDR 블록을 입력해준다. 이때 위처럼 CIDR 블록을 11.0.0.0/25
라고 입력해주면 11.0.0.0 ~ 11.0.0.127
의 IP를 사용하겠다는 의미이다.
그리고 Private Subnet은 위처럼 Public Subnet과 다른 가용 영역을 선택해준 다음 CIDR는 나머지 반 11.0.0.128/25 (11.0.0.128 ~ 11.0.0.255)
을 지정해준다.
이로써 Public Subnet과 Private Subnet은 다음과 같은 IP 영역을 가진다.
- Public Subnet: 11.0.0.0 ~ 11.0.0.127
- Private Subnet: 11.0.0.128 ~ 11.0.0.255
VPC의 CIDR 블록을 반반 나눠가진 셈이다.
Public Subnet 설정
Public Subnet은 위처럼 퍼블릭 IP 주소를 활성화 시켜주어야한다.
Route Table
Public Subnet의 Route Table
먼저 Public Subnet의 Route Table을 위처럼 이름과 VPC를 입력해주고 생성해준다.
그리고 외부와의 연결을 위해 인터넷 게이트웨이(IGW)를 생성해준다.
생성한 인터넷 게이트웨이(IGW)는 VPC와 연결해준다.
이제 Route Table에서 인터넷 게이트웨이와 외부 모든 IP(0.0.0.0/0)를 라우팅해준다.
Private Subnet의 Route Table
Private Subnet은 위처럼 생성만 해주면 끝이다. Public Subnet과의 Inbound 설정은 이후 RDS의 Security Group을 통해서 해줄 것이다.
EC2
이름 및 AMI 입력
키 페어 생성
네트워크 설정
VPC, Public Subnet 을 입력하고 퍼블릭 IP 자동 할당을 활성화한다. 그리고 외부 접근에대한 인바운드 설정을 위해 보안 그룹을 생성한다.
ssh의 22 포트, TCP의 8080, 80 포트를 보안 그룹 규칙에 추가해준다. (또는 개인에 따라 다르게 설정해준다.)
생성 후 퍼블릭 IPv4 DNS가 할당되지 않았다면 EC2를 다른 설정을 모두 마친 후 마지막에 다시 생성한다.
RDS
데이터베이스 생성
표준 생성으로 DB 엔진을 선택해준다. 손쉬운 생성으로는 서브넷을 설정해줄 수 없다.
엔진 버전은 기본 값으로 두고 (필요하다면 변경) 템플릿은 프리티어로 해준다.
DB 인스턴스 식별자, 마스터 사용자 이름, Password를 입력해준다. 이때 DB 인스턴스 식별자는 실제 DB 이름이 아니다. RDS의 이름을 의미한다. 마스터 사용자 이름과 password는 DB에 접속하기위한 정보이므로 반드시 기억하고 있어야한다.
EC2 연결은 따로 연결해줄 것이기 때문에 지금 연결해주지않는다. 그리고 VPC, 퍼블릭 액세스를 위처럼 지정해준다. 이때 지정한 VPC에는 2개 이상의 가용 영역이 존재해야한다.
보안 그룹은 EC2와의 인바운드 설정을 위해 새로 생성한다. 이때 가용 영역은 Private Subnet과 동일한 영역을 선택한다.
서브넷 그룹을 따로 생성해주지 않을 경우 VPC 내의 Subnet들로 자동 생성된다.
모니터링은 꺼준다.
보안 그룹 설정
생성한 데이터베이스는 새로 생성해준 보안 그룹이 위처럼 지정된다.
보안 그룹을 클릭하여 인바운드 규칙을 위와 같이 추가해준다. 소스에는 생성한 EC2의 security group을 지정해주도록 한다.
Subnet은?
앞서 구조가 그려진 이미지를 확인해보면 RDS를 Private Subnet에 넣어놓았는데 실제로는 생성한 RDS를 확인해보면 Public Subnet, Private Subnet 모두가 지정되어있다. 다시 말해 Public Subnet, Private Subnet가 속해있는 서브넷 그룹을 가진다.
하지만 보안 그룹의 인바운드 규칙에 의해 RDS는 Public Subnet(EC2)를 통해서 접근할 수 있도록 설정했기 때문에 유사 Private Subnet에 존재하는 것처럼 만들 수 있는 것이다.
RDS Test Connection
RDS 연결 테스트는 다음 명령어로 수행할 수 있다.
nc -zv [DB-instance-endpoint] [port]
[Reference]