Lightsail로 띄운 Grafana 서버와 프라이빗 RDS에 연결하기

백엔드·2025년 5월 25일

들어가며

Lightsail 환경에서 Docker-Compose를 이용해 Grafana를 운영 중이었습니다. 이 Grafana 서버에서 RDS에 연결하여 비즈니스 현황을 시각화하는 대시보드를 구성하려 했는데, 연결 이슈가 발생했습니다.

이는 Lightsail의 네트워크 구조 때문인데요. Lightsail 인스턴스는 기본적으로 AWS가 자동으로 생성한 별도의 VPC에 속해 있으며, 이는 일반적으로 우리가 사용하는 RDS 등의 리소스가 위치한 VPC와는 다릅니다.

서로 다른 VPC에 있는 리소스 간 통신을 허용하려면 VPC 피어링(VPC Peering) 설정이 필요합니다. 이를 통해 Lightsail 인스턴스와 RDS가 위치한 VPC 간의 네트워크 연결을 설정할 수 있습니다.


VPC, 서브넷, 피어링

AWS 네트워킹은 VPC(가상 프라이빗 클라우드)에서 시작됩니다.
VPC 내에서는 서브넷을 정의하게 되는데, 이는 각 가용 영역(AZ) 내의 더 작은 IP 주소 범위입니다.

예를 들어, VPC가 10.0.0.0/16이라면, 10.0.1.0/24 (서브넷 A)와 10.0.2.0/24 (서브넷 B)로 나누어 각각 다른 AZ에 배치할 수 있습니다. EC2 인스턴스, RDS 데이터베이스 등 리소스는 이 서브넷들에 배포됩니다.

퍼블릭 서브넷은 해당 서브넷의 라우팅 테이블에 인터넷 게이트웨이(IGW)에 대한 경로가 있는 경우이며,
프라이빗 서브넷은 그런 경로가 없는 경우입니다.

실질적으로 퍼블릭 서브넷에 있는 인스턴스는 IGW를 통해 인터넷에 접근할 수 있고(퍼블릭 IP가 있는 경우 외부에서 접근 가능), 프라이빗 서브넷에 있는 인스턴스는 그런 경로가 없기 때문에 직접 인터넷에 연결되지 않습니다.

IGW(보라색)가 연결된 퍼블릭 서브넷(초록색)은 인스턴스가 인터넷에 연결될 수 있게 해주고, IGW 경로가 없는 프라이빗 서브넷(파란색)은 외부와 격리되어 있습니다.


인터넷 게이트웨이(IGW)와 퍼블릭 서브넷

IGW는 VPC를 퍼블릭 인터넷에 연결해주는 구성 요소입니다.
서브넷을 퍼블릭으로 만들기 위해서는:

  1. IGW를 VPC에 연결하고,

  2. 해당 서브넷의 라우팅 테이블에 0.0.0.0/0 → IGW로 가는 경로를 추가합니다.

이제 퍼블릭 IPv4 주소(Elastic IP 등)를 가진 인스턴스는 인터넷과 통신할 수 있게 됩니다.
퍼블릭 서브넷의 EC2 인스턴스가 Elastic IP를 가지고 웹 서버를 운영한다면, 외부에서 접근이 가능합니다.

반면, 프라이빗 서브넷에는 IGW 경로가 없기 때문에 퍼블릭 IP를 가지고 있어도 인터넷 접근 경로가 없습니다.


NAT 게이트웨이와 프라이빗 서브넷

프라이빗 서브넷에 있는 인스턴스는 인터넷에 직접 접근할 수 없습니다.
아웃바운드 연결이 필요할 경우, AWS는 NAT 게이트웨이를 제공합니다.

NAT 게이트웨이는 퍼블릭 서브넷에 배치되며 Elastic IP를 가지고 있습니다.
프라이빗 서브넷의 인스턴스는 아웃바운드 트래픽을 NAT 게이트웨이로 보냅니다.

NAT는 프라이빗 IP를 퍼블릭 IP로 변환하고, 인터넷에서 오는 응답을 다시 해당 인스턴스로 라우팅합니다.
결과적으로, 외부에서의 직접 연결은 차단하면서도 프라이빗 인스턴스가 외부와 통신할 수 있도록 합니다.

동작 흐름

  1. 프라이빗 서브넷에 있는 인스턴스가 외부로 요청을 보냅니다.

  2. 해당 트래픽은 라우팅 테이블을 통해 퍼블릭 서브넷에 위치한 NAT Gateway로 전달됩니다.

  3. NAT Gateway는 해당 요청의 프라이빗 IP를 Elastic IP로 변환하여 인터넷으로 전송합니다.

  4. 외부 응답은 NAT Gateway의 퍼블릭 IP로 들어오며,

  5. NAT Gateway는 이를 다시 해당 인스턴스의 프라이빗 IP로 역변환하여 전달합니다.


VPC 피어링 – 두 VPC 간 연결

VPC 피어링이란?

  • VPC 피어링은 AWS 내 두 개의 Virtual Private Cloud(VPC)를 사설 네트워크로 직접 연결하는 기능입니다.

  • 이를 통해 두 VPC가 마치 하나의 네트워크처럼 서로 통신할 수 있게 됩니다.

  • 피어링된 VPC 간 트래픽은 퍼블릭 인터넷을 거치지 않고, 프라이빗 IP를 사용하여 안전하고 빠른 통신이 가능합니다.

  • 주로 조직 내 여러 VPC를 연결하거나, AWS 계정 간 자원 접근을 위해 사용합니다.

Lightsail과 기본 VPC의 관계

  • Lightsail은 AWS에서 별도로 관리되는 자체 VPC 환경 내에서 인스턴스를 실행합니다.

  • 사용자의 기본 VPC와는 별개의 네트워크입니다.

  • 따라서 Lightsail 인스턴스에서 기본 VPC 내 리소스(예: RDS, EC2 등)에 직접 접근할 수 없습니다.

VPC 피어링을 통한 연결

  • VPC 피어링 연결을 설정하면 Lightsail VPC와 기본 VPC 간에 프라이빗 네트워크 다리가 만들어집니다.

  • 이 연결을 통해 두 VPC 내 리소스가 서로의 프라이빗 IP 주소를 이용해 직접 통신할 수 있습니다.

  • 예를 들어, Lightsail에서 운영 중인 Grafana 서버가 기본 VPC 내의 RDS 데이터베이스에 접속할 수 있습니다.

설정 이후 필요한 추가 작업

  • 라우팅 테이블 설정

    • 피어링 연결만으로는 통신이 이루어지지 않고, 각 VPC 내 라우팅 테이블에 피어링 연결 경로를 명시해야 합니다.

    • 예를 들어,

      • 기본 VPC의 라우팅 테이블에 Lightsail VPC CIDR 대역을 목적지로 추가하고,

      • Lightsail VPC 라우팅 테이블에 기본 VPC CIDR 대역을 목적지로 추가합니다.

    • 이를 통해 양방향으로 트래픽이 적절히 전달됩니다.

  • 보안 그룹 및 네트워크 ACL 설정

    • 피어링 연결 자체는 네트워크 연결만을 의미하며,

    • 실제 트래픽 허용 여부는 보안 그룹(Security Group) 과 네트워크 ACL 에서 규칙을 설정해야 합니다.

    • 예를 들어, RDS 보안 그룹에 Lightsail VPC CIDR 대역 또는 특정 IP를 허용하는 인바운드 규칙을 추가해야 접속이 가능합니다.


Lightsail ↔ RDS (VPC Peering) 연결 방법

목적

AWS Lightsail 인스턴스는 기본적으로 AWS에서 자동 생성한 별도 VPC에서 동작하며, 동일 계정의 일반 VPC(RDS가 위치한 네트워크)와는 격리되어 있습니다.

따라서, Lightsail 인스턴스에서 VPC 내부의 RDS에 접근하려면 VPC Peering 설정이 필요합니다.

설정 방법

1. Lightsail에서 VPC 피어링 활성화

  1. AWS 콘솔 > Lightsail 접속

  2. Account > 고급 탭

  3. 하단으로 스크롤하여 VPC 피어링 상태 변경 활성화


해당 버튼 클릭 시 다음이 자동으로 처리됩니다:

  • VPC 피어링 연결 생성

  • 라우팅 테이블 자동 추가


2. RDS 보안 그룹 인바운드 설정

보안그룹 설정에서 RDS 가 위치한 VPC 보안그룹에서 Lightsail 의 CIDR 블록으로부터의 인바운드 트래픽을 허용시켜 줍니다.

profile
백엔드 개발자

0개의 댓글