AWS에서 RDS를 생성하고 로컬 개발환경에서 외부(DBeaver 등)에서 연결하려고 할 때,
퍼블릭 액세스가 안 돼서 타임아웃 나는 경우, 대부분은 VPC 및 서브넷 설정이 잘못되어 있기 때문입니다.
이번 포스트에서는 퍼블릭 액세스 가능한 RDS 인스턴스를 직접 생성하면서 겪은 문제와 해결 방법을 정리합니다.
현재 구성은 AWS 실습 및 테스트를 위한 구성 설정이므로, 운영 환경에서 아래처럼 구성하는 것은 추천드리지 않습니다.
저는 테스트를 위한 용도로 구성했으니 참고해주세요!
✅ 목표
- VPC 내에 퍼블릭 / 프라이빗 서브넷 구분
- 퍼블릭 서브넷에 RDS 인스턴스를 배치
- 외부 툴 (ex. DBeaver)에서 접속 가능하도록 설정
RDS 연결 안 될 때 점검 순서
- RDS → Publicly Accessible = ✅ Yes
- DB Subnet Group → 퍼블릭 서브넷으로만 구성됐는가?
- 해당 서브넷 → 퍼블릭 IP 자동 할당 ✅
- 라우팅 테이블 → IGW 연결 ✅
- 보안 그룹 → 포트 3306 열렸는가?
- NACL → Inbound/Outbound 다 열려 있는가? ← 이거 놓치면 절대 연결 안 됨 ❗
현재 VPC 구성도
VPC 아래에 2개의 AZ에 서브넷을 3개씩 구성했습니다. public subnet에 한해서 인터넷 게이트웨이를 구성하여 외부와 통신가능하도록 구성했으며, 개발용 db를 우선 public 서브넷에 구성하여 테스트 이후 최종적으로 db 서브넷으로 이동시키고자 합니다.
RDS 퍼블릭 액세스 허용
아래와 같이 퍼블릭 엑세스를 가능하도록 설정해주면 끝!
RDS 인스턴스 생성 및 서브넷 그룹 생성
RDS 인스턴스 생성의 경우, "연결" 카테고리를 제외하고는 네트워크와 큰 관련이 없기 때문에, "연결" 카테고리만을 대상으로 글을 작성합니다.
기본적으로는 DB 서브넷 그룹이 default로 시작하는 기본 DB 서브넷 그룹으로 설정되어 있습니다. 그럼 이 DB 서브넷 그룹은 무엇일까요?
DB 서브넷 그룹 (DB Subnet Group) 이란, AWS RDS에서 어느 서브넷들 중에서 인스턴스를 배치할지를 지정하는 논리적 묶음입니다.
RDS는 고가용성을 위해 다중 AZ 배치가 가능한데, 이때 어떤 AZ의 어떤 서브넷에 배치할지를 AWS가 선택해야 합니다. 이를 DB 서브넷 그룹에서 설정하는 것이죠!
서브넷 그룹이라는 이름 때문에, VPC 설정에서 찾다가 RDS 하위 메뉴인것을 늦게 찾아서 시간이 조금 걸렸습니다! 여러분들은 잊지 마시고, RDS 하위 메뉴에서 찾으시길 바랍니다 ㅎㅎ
이름과 설명을 적절하게 입력하고, 생성한 vpc, az, subnet을 각각 선택하여 DB 인스턴스가 위치할 서브넷 그룹을 선택하면 끝입니다!
보안그룹 설정
보안그룹의 경우 기본적으로 내부 통신만 가능하도록 설정되어 있으므로, 외부에서 들어오는 연결 요청에 대해 허용이 필요합니다.
저는 우선 외부 모든 IP에서 들어오는 요청 중 3306 포트로의 인바운드를 허용하도록 수정하여 외부에서 3306 포트로 접근을 허용하도록 설정 했습니다.
여기까지 설정 시 VPC에 속한 RDS로 Dbeaver 접근할 수 있었습니다. 누락된 부분이 좀 있어서, 설정하면서 어려운 부분이 있다면 댓글 남겨주시면 같이 열심히 찾아보겠습니다..!!
'Infra' 카테고리의 다른 글
클라우드 인프라에서 HA(High Availability)를 보장하는 방법 고민 (0) | 2025.06.24 |
---|---|
로그를 작성하는 기준이 있나요? "인포는 인포용, 디버그는 디버그용이요.." (2) | 2025.05.30 |
WSL2에서 Cockpit 환경 실습하기: systemd 설정부터 접속까지 (0) | 2025.05.30 |
Jenkins에서 SSL 인증서 문제 해결하기: skip-certificate-check 플러그인, 괜찮은가요? (1) | 2025.05.28 |
LightSwitch 서비스 인프라 트러블 슈팅 - Docker Network (0) | 2024.05.28 |