본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Managed Postgres 클러스터 생성 및 연결

원문 보기 위키 갱신

Managed Postgres(MPG) 클러스터를 어떻게 만들고 연결하는지 알려드릴게요. 대시보드나 flyctl로 클러스터를 생성하고, 앱을 데이터베이스에 연결하며, 로컬 머신에서 안전하게 접속하는 방법까지 단계별로 정리했어요.

출처: 문서

본문

대시보드에서 Managed Postgres 클러스터 생성하기

새 Managed Postgres(MPG) 클러스터를 만들려면 Fly.io 대시보드에 방문해 왼쪽의 "Managed Postgres" 탭을 선택하고 "Create new cluster" 버튼을 클릭하세요.

클러스터의 다음 항목을 설정하라는 메시지가 나타납니다:

  • 클러스터 이름 (조직 내에서 고유해야 함)
  • 지역 (지역(region) 사용 가능한 MPG 지역 참조)
  • 사전 정의된 하드웨어 리소스를 가진 플랜:
    • Basic: 공유 vCPU 2개, 1GB RAM
    • Starter: 공유 vCPU 2개, 2GB RAM
    • Launch: Performance vCPU 2개, 8GB RAM
    • Scale: Performance vCPU 4개, 32GB RAM
    • Performance: Performance vCPU 8개, 64GB RAM
  • 초기 스토리지 크기: 생성 시 최대 500GB
  • 선택적인 PostGIS 지원. pgvector를 포함한 다른 확장은 생성 후 Extensions 페이지에서 활성화됩니다

flyctl에서 Managed Postgres 클러스터 생성하기

flyctl 명령줄 도구를 사용해 MPG 클러스터를 만들 수도 있습니다. 시작하려면 다음을 실행하세요:

fly mpg create

프롬프트에 따라 클러스터 이름, 플랜, 지역을 구성하세요. 기본적으로 클러스터는 10GB 초기 볼륨으로 생성되며 데이터가 늘어남에 따라 자동으로 커집니다. --volume-size 플래그로 더 크게 시작할 수 있습니다:

fly mpg create [flags]
 -n, --name string       The name of your Postgres cluster
 -o, --org string        The target Fly.io organization
      --plan string       The plan to use for the Postgres cluster (basic, launch, scale)
 -r, --region string     The target region
      --volume-size int   Initial volume size in GB (default 10)

모든 옵션이 설정되면 클러스터가 초기화를 시작합니다. 완료되면 이제 클러스터에 연결할 수 있습니다.

애플리케이션을 Managed Postgres 데이터베이스에 연결하기

Fly.io에서 실행 중인 애플리케이션을 Managed Postgres 인스턴스에 연결하려면 DB 연결 정보를 앱의 시크릿으로 추가해야 합니다. 이 작업은 대시보드나 flyctl로 할 수 있습니다.

MPG 대시보드에서 앱 연결하기

MPG 클러스터 페이지의 "Connect" 탭에서 조직의 특정 앱을 데이터베이스에 연결할 수 있습니다.

  1. 드롭다운에서 연결할 앱을 선택하세요
  2. 필요하면 데이터베이스 연결 URL에 사용할 변수 이름을 사용자 지정하세요. 기본값은 DATABASE_URL입니다. 선택한 앱에 이미 DATABASE_URL이라는 시크릿이 있다면 배포 전에 새 변수 이름을 선택해야 합니다.
  3. "Set secret and deploy"를 선택하세요. 그러면 새 시크릿을 추가하기 위해 선택한 앱의 배포가 트리거됩니다.
  4. 앱은 이제 DATABASE_URL 환경 변수를 사용해 데이터베이스에 연결할 수 있습니다

flyctl로 앱 연결하기

flyctl로 애플리케이션을 데이터베이스에 연결하려면 다음을 실행하세요:

fly mpg attach <clusterID> -a <app-to-attach>

이 작업은 시크릿을 추가하기 위해 선택한 앱의 재시작도 트리거합니다. 클러스터 ID는 MPG 대시보드에서 또는 fly mpg list 명령으로 찾을 수 있습니다.

두 연결 옵션 모두 풀링된 연결 URL을 사용하며, 이는 PGBouncer를 사용해 데이터베이스 연결을 효율적으로 관리하는 데 도움이 됩니다. 이는 대부분의 앱에 권장됩니다.

연결 문자열을 사용해 수동으로 앱 연결하기

데이터베이스가 생성되면 "Connection" 탭에 풀링된 연결 URL과 직접 데이터베이스 연결 주소에 대한 연결 문자열이 모두 표시됩니다. 이를 Fly.io 애플리케이션의 시크릿으로 설정해 앱을 데이터베이스에 수동으로 연결할 수 있습니다:

fly secrets set DATABASE_URL="postgres://username:***@host:port/database"

flyctl로 로컬 머신에서 연결하기

MPG 클러스터는 Fly.io 사설 네트워크 안에서 실행되므로 공개 인터넷으로는 접근할 수 없습니다. flyctl을 사용해 개발, 수동 DB 작업, 또는 로컬 도구 연결을 위해 로컬 머신에서 데이터베이스에 안전하게 연결할 수 있습니다. flyctl을 사용한 모든 연결은 조직의 사설 WireGuard 네트워크를 통해 안전하게 라우팅됩니다.

psql로 연결하기

psql을 사용해 Managed Postgres 데이터베이스에 직접 연결하려면:

fly mpg connect [flags]

이 명령은 데이터베이스에 직접 연결을 만들고 psql 세션을 엽니다. 로컬에 호환되는 psql 버전이 설치되어 있어야 합니다.

프록시 연결 설정하기

'mpg proxy' 명령을 사용해 Managed Postgres 데이터베이스에 프록시 연결을 만들 수 있습니다:

fly mpg proxy [flags]

이렇게 하면 데이터베이스로 전달되는 로컬 포트 중 하나에 연결이 열립니다.

$ fly mpg proxy    
? Select Organization: My Organization (personal)
? Select a Postgres cluster my-test-cluster (iad)
Proxying localhost:16380 to remote [fdaa:1:2345:0:0::11]:5432

이 명령은 psql이 아닌 다른 도구(데이터베이스 관리 도구나 개발 중인 애플리케이션 같은)로 로컬 머신에서 데이터베이스에 연결하려 할 때 유용합니다.

로컬 프록시 연결을 사용하려면 대시보드의 직접 연결 문자열에서 "flympg.net" 도메인을 "localhost"로 바꾸면 됩니다:

Connection String: postgres://fly-user:***@localhost:16380/fly-db

대안: WireGuard를 통한 연결

flyctl 프록시 명령을 사용하는 대안으로, WireGuard를 사용해 조직의 사설 네트워크를 통해 MPG 클러스터에 직접 연결할 수 있습니다.

먼저 사설 네트워크에 WireGuard 연결을 설정하세요. 연결되면 MPG 대시보드의 직접 연결 문자열을 사용할 수 있습니다:

psql "postgresql://fly-user:***@direct.<CLUSTER_HASH_ID>.flympg.net/fly-db"

이 연결 방법은 지속적인 연결이 필요한 데이터베이스 관리 도구나 직접 데이터베이스 접근을 원하는 개발 환경에 특히 유용합니다.

더 알아보기 (Learn more)