VPC 외부에서 클러스터에 연결

이 페이지에서는 구성된 Virtual Private Cloud (VPC) 외부에서 PostgreSQL용 AlloyDB 클러스터에 연결하는 다양한 방법을 살펴봅니다. 이미 AlloyDB 클러스터를 만들었다고 가정합니다.

외부 연결 정보

AlloyDB 클러스터는Google Cloud VPC 내의 여러 노드로 구성됩니다. 클러스터를 만들 때 VPC 중 하나와 새 클러스터가 포함된 Google 관리형 VPC 간에 비공개 서비스 액세스를 구성합니다. 이 피어링된 연결을 사용하면 비공개 IP 주소를 사용하여 클러스터의 VPC에 있는 리소스에 마치 자체 VPC의 일부인 것처럼 액세스할 수 있습니다.

애플리케이션이 연결된 VPC 외부에서 클러스터에 연결해야 하는 경우가 있습니다.

  • 애플리케이션은 비공개 서비스 액세스를 통해 클러스터에 연결한 VPC 외부의 Google Cloud 생태계 내 다른 위치에서 실행됩니다.

  • 애플리케이션이 Google 네트워크 외부에 있는 VPC에서 실행됩니다.

  • 애플리케이션은 공개 인터넷의 다른 곳에 있는 머신에서 '온프레미스'로 실행됩니다.

이 모든 경우에 추가 서비스를 설정하여 AlloyDB 클러스터에 대한 이러한 종류의 외부 연결을 사용 설정해야 합니다.

외부 연결 솔루션 요약

니즈에 따라 외부 연결을 설정하는 데 다음 두 가지 일반적인 솔루션을 사용하는 것이 좋습니다.

  • 프로젝트 개발 또는 프로토타입 제작 또는 비교적 저렴한 프로덕션 환경의 경우 VPC 내 bastion이라고도 하는 중간 가상 머신(VM)을 설정합니다. 이 중간 VM을 외부 애플리케이션 환경과 AlloyDB 클러스터 간의 보안 연결로 사용하는 다양한 방법이 있습니다.

  • 고가용성이 필요한 프로덕션 환경의 경우 Cloud VPN 또는 Cloud Interconnect를 통해 VPC 및 애플리케이션 간에 영구 연결을 설정하는 것이 좋습니다.

다음 몇 개의 섹션에서는 이러한 외부 연결 솔루션을 자세히 설명합니다.

중간 VM을 통해 연결

오픈소스 도구와 최소한의 추가 리소스를 사용하여 VPC 외부에서 AlloyDB 클러스터에 연결을 설정하려면 해당 VPC 내에 설정된 중간 VM에서 프록시 서비스를 실행합니다. 이 목적으로 새 VM을 설정하거나 AlloyDB 클러스터의 VPC 내에 이미 실행 중인 VM을 사용할 수 있습니다.

자체 관리형 솔루션으로 중간 VM을 사용하는 것은 일반적으로 네트워크 연결 제품을 사용하는 것보다 비용이 적게 들고 설정 시간이 더 빠릅니다. 또한 연결의 가용성, 보안, 데이터 처리량이 모두 프로젝트의 일부로 유지해야 하는 중간 VM에 따라 달라지는 단점도 있습니다.

IAP를 통해 연결

IAP (Identity-Aware Proxy)를 사용하면 중간 VM의 공개 IP 주소를 노출하지 않고도 클러스터에 안전하게 연결할 수 있습니다. 이 경로를 통한 액세스를 제한하기 위해 방화벽 규칙과 Identity and Access Management(IAM)를 조합하여 사용합니다. 따라서 IAP는 개발 및 프로토타입 제작과 같은 비프로덕션 용도에 적합한 솔루션입니다.

클러스터에 대한 IAP 액세스를 설정하려면 다음 단계를 따르세요.

  1. 외부 클라이언트에 Google Cloud CLI를 설치합니다.

  2. IAP TCP 전달을 위한 프로젝트 준비

    새 방화벽 규칙을 정의할 때 포트 22(SSH)로 들어오는 인그레스 TCP 트래픽을 허용합니다. 자동 입력된 default-allow-ssh 규칙이 사용 설정된 프로젝트의 기본 네트워크를 사용하는 경우 추가 규칙을 정의할 필요가 없습니다.

  3. IAP를 통한 SSH를 사용하여 외부 클라이언트와 중간 VM 간에 포트 전달을 설정합니다.

    gcloud compute ssh my-vm \
           --tunnel-through-iap \
           --zone=ZONE_ID \
           --ssh-flag="-L PORT_NUMBER:ALLOYDB_IP_ADDRESS:5432"

    다음을 바꿉니다.

    • ZONE_ID: 클러스터가 있는 영역의 ID입니다(예: us-central1-a).
    • ALLOYDB_IP_ADDRESS: 연결하려는 AlloyDB 인스턴스의 IP 주소입니다.
    • PORT_NUMBER: VM의 포트 번호입니다.
  4. 외부 클라이언트에서 psql을 사용하여 연결을 테스트하고 이전 단계에서 지정한 로컬 포트에 연결합니다. 예를 들어 postgres 사용자 역할로 5432 포트에 연결하려면 다음을 실행합니다.

    psql -h localhost -p 5432 -U USERNAME

    다음을 바꿉니다.

    • USERNAME: 인스턴스에 연결할 PostgreSQL 사용자입니다(예: 기본 사용자 postgres).

SOCKS 프록시를 통해 연결

중간 VM에서 SOCKS 서비스를 실행하면 AlloyDB 인증 프록시에서 제공하는 엔드 투 엔드 암호화를 통해 AlloyDB 클러스터에 유연하고 확장 가능한 연결을 제공할 수 있습니다. 적절한 구성을 통해 프로덕션 워크로드에 적합하게 만들 수 있습니다.

이 솔루션에는 다음 단계가 포함됩니다.

  1. 중간 VM에 SOCKS 서버를 설치, 구성, 실행합니다. 널리 사용되는 오픈소스 솔루션인 Dante가 한 가지 예입니다.

    외부 및 내부 연결 모두에 대해 VM의 ens4 네트워크 인터페이스에 바인딩되도록 서버를 구성합니다. 내부 연결에 사용할 포트를 지정합니다.

  2. VPC 방화벽을 구성하여 적절한 IP 주소 또는 범위에서 SOCKS 서버의 구성된 포트로 TCP 트래픽을 허용합니다.

  3. 외부 클라이언트에 AlloyDB 인증 프록시를 설치합니다.

  4. ALL_PROXY 환경 변수를 중간 VM의 IP 주소로 설정하고 SOCKS 서버가 사용하는 포트를 지정하여 외부 클라이언트에서 AlloyDB 인증 프록시를 실행합니다.

    이 예에서는 AlloyDB 인증 프록시가 198.51.100.1의 포트 1080에서 실행되는 SOCKS 서버를 통해 my-main-instance의 데이터베이스에 연결하도록 구성합니다.

    ALL_PROXY=socks5://198.51.100.1:1080 ./alloydb-auth-proxy \
    /projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

    피어링된 VPC에서 연결하는 경우 중간 VM의 내부 IP 주소를 사용하고 그렇지 않은 경우 외부 IP 주소를 사용합니다.

  5. 외부 클라이언트에서 psql을 사용하여 연결을 테스트하고 AlloyDB 인증 프록시가 리슨하는 포트에 연결합니다. 예를 들어 postgres 사용자 역할로 5432 포트에 연결하려면 다음을 실행합니다.

    psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME

PostgreSQL 풀러를 통해 연결

외부 클라이언트 대신 중간 VM에 AlloyDB 인증 프록시를 설치하고 실행해야 하는 경우 이를 풀러라고도 하는 프로토콜 인식 프록시와 연결하여 보안 연결을 활성화할 수 있습니다. PostgreSQL의 널리 사용되는 오픈소스 풀러에는 Pgpool-IIPgBouncer가 포함됩니다.

이 솔루션에서는 AlloyDB 인증 프록시와 풀러를 중간 VM에서 모두 실행합니다. 그러면 클라이언트 또는 애플리케이션이 추가 서비스를 실행할 필요 없이 SSL을 통해 풀러에 직접 안전하게 연결할 수 있습니다. 풀러는 인증 프록시를 통해 PostgreSQL 쿼리를 AlloyDB 클러스터에 전달합니다.

AlloyDB 클러스터 내의 모든 인스턴스에는 별도의 내부 IP 주소가 있으므로 각 프록시 서비스는 기본 인스턴스, 대기 인스턴스, 읽기 풀 중 하나의 특정 인스턴스와만 통신할 수 있습니다. 따라서 클러스터의 모든 인스턴스에 대해 적절하게 구성된 SSL 인증서를 사용하여 별도의 풀러 서비스를 실행해야 합니다.

Cloud VPN 또는 Cloud Interconnect를 통해 연결

고가용성(HA)이 필요한 프로덕션 작업의 경우 외부 서비스의 요구와 네트워크 토폴로지에 따라 Google Cloud 네트워크 연결 제품(Cloud VPN 또는 Cloud Interconnect)을 사용하는 것이 좋습니다. 그런 다음 적절한 경로를 공지하도록 Cloud Router를 구성합니다.

네트워크 연결 제품을 사용하는 것은 중간 VM을 설정하는 것보다 더 복잡한 프로세스이지만 이 접근 방식을 사용하면 가용성과 가동 시간에 대한 부담이 개발자에서 Google로 전환됩니다. 특히 HA VPN은 99.99% SLA를 제공하므로 프로덕션 환경에 적합합니다.

또한 네트워크 연결 솔루션을 사용하면 애플리케이션의 일부로 별도의 보안 VM을 유지할 필요가 없으므로 이러한 접근 방식에 내재된 단일 장애점 위험을 방지할 수 있습니다.

이러한 솔루션에 대해 자세히 알아보려면 네트워크 연결 제품 선택을 참고하세요.

다음 단계