VPC 피어링 구성

VPC 네트워크 피어링을 사용하여 Datastream이 Virtual Private Cloud (VPC) 네트워크의 리소스와 비공개로 통신하도록 할 수 있습니다. VPC 네트워크와 Datastream VPC 네트워크 간의 VPC 네트워크 피어링 연결을 사용하면 Datastream을 다음에 연결할 수 있습니다.

VPC 네트워크와 Datastream VPC 네트워크 간의 VPC 네트워크 피어링 연결을 사용하면 Datastream을 다음에 연결할 수 없습니다.

Datastream과 VPC 네트워크에서만 액세스할 수 있는 리소스 간에 연결을 설정하려면 VPC 네트워크에서 네트워크 주소 변환 (NAT) VM을 사용하면 됩니다. NAT VM의 일반적인 사용 사례는 Datastream이 Cloud SQL 인스턴스에 연결해야 하는 경우입니다.

이 페이지에서는 Datastream이 Cloud SQL 인스턴스에 비공개로 연결할 수 있는 NAT VM 구성의 예를 설명합니다.

Datastream 사용자 흐름 다이어그램

VPC 피어링 기본 요건

비공개 연결 구성을 만들려면 Datastream이 프로젝트에 VPC 피어링 연결을 만들 수 있도록 다음 단계를 수행해야 합니다.

  • Datastream의 비공개 네트워크에 피어링할 수 있고 VPC 네트워크 피어링 페이지에 설명된 요구사항을 충족하는 VPC 네트워크가 있어야 합니다. 이 네트워크를 만드는 방법은 VPC 네트워크 피어링 사용을 참조하세요.
  • /29 CIDR 블록이 있는 VPC 네트워크에서 사용 가능한 IP 범위를 확인합니다. 이미 서브넷으로 존재하는 IP 범위, 비공개 서비스 액세스 사전 할당된 IP 범위 또는 IP 범위가 포함된 경로(기본 0.0.0.0 경로 제외)일 수 없습니다. Datastream은 이 IP 범위를 사용하여 소스 데이터베이스와 통신할 수 있도록 서브넷을 만듭니다. 다음 표에서는 유효한 IP 범위를 설명합니다.
범위 설명
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
비공개 IP 주소 RFC 1918
100.64.0.0/10 공유 주소 공간 RFC 6598
192.0.0.0/24 IETF 프로토콜 할당 RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
문서 RFC 5737
192.88.99.0/24 IPv6-IPv4 릴레이 (지원 중단됨) RFC 7526
198.18.0.0/15 벤치마크 테스트 RFC 2544
  • Google Cloud 및 온프레미스 방화벽에서 선택된 IP 범위의 트래픽이 허용되는지 확인합니다. 그렇지 않으면 소스 데이터베이스 포트에서 트래픽을 허용하는 인그레스 방화벽 규칙을 만들고 방화벽 규칙의 IPv4 주소 범위가 비공개 연결 리소스를 만들 때 할당된 IP 주소 범위와 동일한지 확인합니다.

    gcloud compute firewall-rules create FIREWALL-RULE-NAME \
      --direction=INGRESS \
      --priority=PRIORITY \
      --network=PRIVATE_CONNECTIVITY_VPC \
      --project=VPC_PROJECT \
      --action=ALLOW \
      --rules=FIREWALL_RULES \
      --source-ranges=IP-RANGE
      

    다음을 바꿉니다.

    • FIREWALL-RULE-NAME: 만들려는 방화벽 규칙의 이름입니다.
    • PRIORITY: 규칙 우선순위로 0에서 65535(0 및 65535 포함) 사이의 정수로 표현됩니다. 이 값은 차단 트래픽 규칙에 설정된 값보다 작아야 합니다(있는 경우). 우선순위 값이 작을수록 우선순위가 높습니다.
    • PRIVATE_CONNECTIVITY_VPC: Datastream 비공개 네트워크에 피어링할 수 있고 VPC 네트워크 피어링 페이지에 설명된 요구사항을 충족하는 VPC 네트워크입니다. 이 VPC는 비공개 연결 구성을 만들 때 지정하는 VPC입니다.
    • VPC_PROJECT: VPC 네트워크의 프로젝트입니다.
    • FIREWALL_RULES: 방화벽 규칙이 적용되는 프로토콜 및 포트의 목록입니다(예: tcp:80). 이 규칙은 소스 데이터베이스 또는 프록시의 IP 주소 및 포트에 대한 TCP 트래픽을 허용해야 합니다. 비공개 연결은 여러 데이터베이스를 지원할 수 있으므로 규칙에서 구성의 실제 사용량을 고려해야 합니다.
    • IP-RANGE: Datastream이 소스 데이터베이스와 통신하는 데 사용하는 IP 주소 범위입니다. 이 범위는 비공개 연결 구성을 만들 때 IP 범위 할당 필드에 지정한 범위와 동일합니다.

      Datastream으로 다시 트래픽을 허용하도록 동일한 이그레스 방화벽 규칙을 만들어야 할 수도 있습니다.

  • compute.networks.list 권한이 포함된 역할을 할당합니다. 이 권한은 프로젝트의 VPC 네트워크를 나열하기 위해 필요한 IAM 권한을 부여합니다. IAM 권한 참조를 확인하여 이 권한이 포함된 역할을 찾을 수 있습니다.

공유 VPC 기본 요건

공유 VPC를 사용하는 경우 VPC 기본 요건 섹션에 설명된 단계 외에도 다음 작업을 완료해야 합니다.

  1. 서비스 프로젝트에서 다음 안내를 따르세요.

    1. Datastream API를 사용 설정합니다.
    2. Datastream 서비스 계정에 사용되는 이메일 주소를 가져옵니다. Datastream 서비스 계정은 다음 중 하나를 수행할 때 생성됩니다.

      • 연결 프로필 또는 스트림과 같은 Datastream 리소스를 만들기.
      • 비공개 연결 구성을 만들고, 공유 VPC를 선택하고, Datastream 서비스 계정 만들기를 클릭하기. 서비스 계정은 호스트 프로젝트에 생성됩니다.

      Datastream 서비스 계정에 사용되는 이메일 주소를 가져오려면 Google Cloud 콘솔 홈페이지에서 프로젝트 번호를 찾습니다. 서비스 계정의 이메일 주소는 service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com입니다.

  2. 호스트 프로젝트에서 다음 안내를 따르세요.

    1. Datastream 서비스 계정에 compute.networkAdmin Identity and Access Management(IAM) 역할 권한을 부여합니다. 이 역할은 VPC 피어링을 만들 때만 필요합니다. 피어링이 설정되면 이 역할은 더 이상 필요하지 않습니다.

      조직에서 권한 부여를 허용하지 않으면 다음 최소 권한으로 커스텀 역할을 만들어 비공개 연결 리소스를 만들고 삭제합니다.

    커스텀 역할에 대한 자세한 내용은 커스텀 역할 만들기 및 관리를 참조하세요.

NAT VM 설정

  1. Datastream이 연결해야 하는 Cloud SQL 인스턴스의 IP 주소를 식별합니다.

  2. VPC 네트워크를 확인합니다. VPC 네트워크 피어링을 사용하여 Datastream VPC 네트워크에 연결된 VPC 네트워크입니다.

  3. 아직 만들지 않았다면 Datastream에서 비공개 연결 구성을 만듭니다. 이렇게 하면 VPC 네트워크와 Datastream VPC 네트워크를 연결하는 VPC 네트워크 피어링 연결이 생성됩니다. Datastream 비공개 연결 구성에서 사용하는 IP 주소 범위를 기록해 둡니다.

  4. 다음 단계에서 만들 NAT VM에 사용할 머신 유형을 선택합니다.Google Cloud 는 VPC 네트워크 내의 다음 홉으로 라우팅된 패킷에 대해 VM 인스턴스의 머신 유형에 따라 인스턴스당 최대 이그레스 대역폭 제한을 적용합니다. 자세한 내용은 VPC 네트워크 내에서 라우팅 가능한 대상에 대한 이그레스인스턴스별 최대 이그레스 대역폭을 참고하세요.

  5. VPC 네트워크에서 NAT VM을 만듭니다. VPC 네트워크가 공유 VPC 네트워크인 경우 NAT VM의 네트워크 인터페이스가 공유 VPC 네트워크에 있는 한 호스트 프로젝트 또는 서비스 프로젝트에서 NAT VM을 만들 수 있습니다.

    • 네트워크 왕복 시간을 최소화하려면 Datastream과 동일한 리전에 NAT VM을 만듭니다.
    • 이 예에서는 NAT VM에 단일 네트워크 인터페이스가 있다고 가정합니다.
    • Linux 배포판(예: Debian 12)에서 스크립트를 실행합니다.
    • 다음 시작 스크립트를 사용합니다. 시작 스크립트는 VM이 시작될 때마다 루트가 실행합니다. 이 스크립트에는 스크립트의 각 줄이 수행하는 작업을 설명하는 주석이 포함되어 있습니다. 스크립트에서 CLOUD_SQL_INSTANCE_IP를 Cloud SQL 인스턴스의 IP 주소로, DATABASE_PORT를 데이터베이스 소프트웨어에서 사용하는 대상 포트로 바꿉니다.
    #! /bin/bash
    
    export DB_ADDR=CLOUD_SQL_INSTANCE_IP
    export DB_PORT=DATABASE_PORT
    
    # Enable the VM to receive packets whose destinations do
    # not match any running process local to the VM
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Ask the Metadata server for the IP address of the VM nic0
    # network interface:
    md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance"
    vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)"
    
    # Clear any existing iptables NAT table entries (all chains):
    iptables -t nat -F
    
    # Create a NAT table entry in the prerouting chain, matching
    # any packets with destination database port, changing the destination
    # IP address of the packet to the SQL instance IP address:
    iptables -t nat -A PREROUTING \
         -p tcp --dport $DB_PORT \
         -j DNAT \
         --to-destination $DB_ADDR
    
    # Create a NAT table entry in the postrouting chain, matching
    # any packets with destination database port, changing the source IP
    # address of the packet to the NAT VM's primary internal IPv4 address:
    iptables -t nat -A POSTROUTING \
         -p tcp --dport $DB_PORT \
         -j SNAT \
         --to-source $vm_nic_ip
    
    # Save iptables configuration:
    iptables-save
  6. 다음과 같은 특성을 가진 인그레스 허용 방화벽 규칙 (또는 전역 네트워크 방화벽 정책, 리전 네트워크 방화벽 정책 또는 계층식 방화벽 정책의 규칙)을 만듭니다.

    • 방향: 인그레스
    • 작업: 허용
    • 타겟 매개변수: NAT VM 이상
    • 소스 매개변수: Datastream 비공개 연결 구성에서 사용하는 IP 주소 범위
    • 프로토콜: TCP
    • 포트: DATABASE_PORT를 포함해야 합니다.
  7. 묵시적 이그레스 허용 방화벽 규칙은 NAT VM이 모든 대상에 패킷을 전송하도록 허용합니다. VPC 네트워크에서 이그레스 거부 방화벽 규칙을 사용하는 경우 NAT VM이 Cloud SQL 인스턴스에 패킷을 전송할 수 있도록 이그레스 허용 방화벽 규칙을 만들어야 할 수 있습니다. 이그레스 허용 규칙이 필요한 경우 다음 매개변수를 사용하세요.

    • 방향: 이그레스
    • 작업: 허용
    • 타겟 매개변수: NAT VM 이상
    • 대상 매개변수: Cloud SQL 인스턴스 IP 주소
    • 프로토콜: TCP
    • 포트: DATABASE_PORT를 포함해야 합니다.
  8. NAT VM의 네트워크 인터페이스에서 사용하는 기본 내부 IPv4 주소의 연결을 수락하도록 Cloud SQL 인스턴스를 구성했는지 확인합니다. 자세한 내용은 Cloud SQL 문서의 승인된 네트워크로 승인을 참고하세요.

  9. Datastream에서 연결 프로필을 만듭니다. 프로필의 연결 세부정보에서 만든 NAT VM의 기본 내부 IPv4 주소를 지정합니다. 연결 프로필의 포트 필드에 소스 데이터베이스의 포트를 입력합니다.

NAT VM 쌍 및 내부 패스 스루 네트워크 부하 분산기 설정

NAT VM 솔루션의 안정성을 높이려면 NAT VM 쌍과 내부 패스 스루 네트워크 부하 분산기를 사용하는 다음 아키텍처를 고려해 보세요.

  1. 동일한 리전의 다른 영역에 NAT VM 두 개를 만듭니다. NAT VM 설정 안내에 따라 각 VM을 만들고 각 VM을 자체 리전 비관리형 인스턴스 그룹에 배치합니다.

    또는 리전 관리형 인스턴스 그룹을 만들 수 있습니다. 관리형 인스턴스 그룹 템플릿에 NAT VM 설정 안내의 시작 스크립트 예와 같은 시작 스크립트를 포함합니다.

  2. 백엔드 서비스가 이전 단계의 인스턴스 그룹을 백엔드로 사용하는 내부 패스 스루 네트워크 부하 분산기를 만듭니다. 내부 패스 스루 네트워크 부하 분산기 예시는 VM 인스턴스 그룹 백엔드로 내부 패스 스루 네트워크 부하 분산기 설정을 참고하세요.

    부하 분산기 상태 점검을 구성할 때 DATABASE_PORT와 일치하는 대상 TCP 포트를 사용하는 TCP 상태 점검을 사용할 수 있습니다. 상태 확인 패킷은 NAT VM 구성에 따라 CLOUD_SQL_INSTANCE_IP로 라우팅됩니다. 또는 NAT VM에서 커스텀 포트의 TCP 또는 HTTP 상태 확인에 응답하는 로컬 프로세스를 실행할 수 있습니다.

  3. NAT VM 설정 안내에 설명된 대로 방화벽 규칙을 만들고 Cloud SQL 승인된 네트워크를 구성합니다. Cloud SQL 승인된 네트워크에 두 NAT VM의 기본 내부 IPv4 주소가 포함되어 있는지 확인합니다.

  4. Datastream 연결 프로필을 만들 때 프로필의 연결 세부정보에 내부 패스 스루 네트워크 부하 분산기 전달 규칙의 IP 주소를 지정합니다.

다음 단계