이 페이지에서는 MySQL 데이터베이스를 호스팅하는 비공개 Cloud SQL 인스턴스에 비공개 Cloud Data Fusion 인스턴스를 연결하는 방법을 설명합니다. Postgres 및 SQL Server 인스턴스에 비슷한 설정이 사용됩니다. 플러그인 연결이 가능합니다.
권장: 보안상의 이유로 Cloud SQL 및 Cloud Data Fusion의 비공개 인스턴스를 사용합니다.
Cloud Data Fusion 및 Cloud SQL에서 비공개 인스턴스 만들기
비공개 Cloud Data Fusion 인스턴스에서 비공개 Cloud SQL 인스턴스에 연결하려면 프록시 Compute Engine VM을 사용합니다. Cloud SQL 네트워크가 Cloud Data Fusion 네트워크와 직접 피어링되지 않고 전환 피어가 서로 통신할 수 없기 때문에 프록시가 필요합니다(VPC Network Peering 개요 참조).
비공개 인스턴스를 만들려면 다음 단계를 수행합니다.
아직 없으면 비공개 Cloud Data Fusion 인스턴스를 만듭니다. 여기에는 다음이 포함됩니다.
- VPC 네트워크 설정
- IP 범위 할당
Cloud Data Fusion 인스턴스와 동일한 VPC 네트워크에서 비공개 Cloud SQL 인스턴스를 만듭니다.
인스턴스가 생성된 후 Cloud SQL 인스턴스 페이지로 이동하고 인스턴스 세부정보를 확장합니다. 이 인스턴스에 연결 섹션에서 IP 및 연결 이름을 복사합니다.
비공개 Compute Engine VM 만들기
VM을 만들려면 Cloud Shell 또는 Google Cloud SDK가 설치된 다른 환경에서 다음 명령어를 입력하면 됩니다.
이 명령어는 VM이 Container Registry에 액세스하여 프록시 이미지를 가져올 수 있도록 내부 및 공개 IP 주소가 모두 포함된 VM을 만듭니다(--no-address
가 샘플 VM 만들기 명령어에 지정되지 않음). 내부 IP를 사용할 수 있지만 또한 VM이 있는 서브넷에 대해 비공개 Google 액세스를 사용 설정해야 합니다.
다음 환경 변수를 내보냅니다.
export PROJECT=CUSTOMER_PROJECT export REGION=VM_REGION export ZONE=`gcloud compute zones list --filter="name=${REGION}" --limit 1 --uri --project=${PROJECT}| sed 's/.*\///'` export NETWORK=CUSTOMER_VPC_NETWORK_NAME export SUBNET=CUSTOMER_VPC_SUBNET_NAME export INSTANCE_NAME=COMPUTE_ENGINE_VM_NAME export SQL_CONN=SQL_INSTANCE_CONNECTION_NAME export CDF_IP_RANGE=CLOUD_DATA_FUSION_IP_RANGE export VM_IMAGE=$(gcloud compute images list --project=$PROJECT --filter=family:cos-stable --format='value(selfLink.scope())' --limit=1) export SQL_PORT=DB_PORT # MySQL 3306 # PostgreSQL 5432 # SQLServer 1433
다음을 바꿉니다.
CUSTOMER_PROJECT
: 프로젝트 이름VM_REGION
: Compute Engine VM이 있는 리전CUSTOMER_VPC_NETWORK_NAME
: 네트워크 이름CUSTOMER_VPC_SUBNET_NAME
: 서브네트워크 이름COMPUTE_ENGINE_VM_NAME
: Compute Engine VM의 이름SQL_INSTANCE_CONNECTION_NAME
: 이전 단계의 연결 이름CLOUD_DATA_FUSION_IP_RANGE
: IP 주소 범위DB_PORT
: Cloud SQL 데이터베이스의 포트 번호
다음 gcloud CLI 명령어를 사용하여 Cloud Data Fusion 인그레스 트래픽을 허용하는 방화벽 규칙을 만듭니다.
gcloud compute firewall-rules create allow-private-cdf \ --allow=tcp:22,tcp:${SQL_PORT} \ --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
다음 gcloud CLI 명령어를 사용하여 VM을 만듭니다.
gcloud compute --project=${PROJECT} instances create ${INSTANCE_NAME} \ --zone=${ZONE} \ --machine-type=g1-small \ --subnet=${SUBNET} \ --metadata=startup-script="docker run -d -p 0.0.0.0:${SQL_PORT}:${SQL_PORT} gcr.io/cloudsql-docker/gce-proxy:latest /cloud_sql_proxy -instances=${SQL_CONN}=tcp:0.0.0.0:${SQL_PORT}" \ --maintenance-policy=MIGRATE \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --image=${VM_IMAGE} \ --image-project=cos-cloud
다음 gcloud CLI 명령어를 사용하여 VM 내부 IP를 가져옵니다.
export IP=`gcloud compute \ --project=${PROJECT} instances describe ${INSTANCE_NAME} \ --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
다음 gcloud CLI 명령어를 사용하여 VM 내부 IP를 고정 IP로 승격합니다.
gcloud compute --project=${PROJECT} addresses create mysql-proxy \ --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
연결을 설정할 때 Cloud Data Fusion MySQL JDBC 연결 문자열에 사용할 IP를 가져옵니다.
echo ${IP}
고정 IP로 VM을 만든 후 IP를 호스트로 사용하거나 JDBC 연결 문자열에 입력하여 Cloud Data Fusion에서 MySQL 데이터베이스에 액세스합니다.
Cloud Data Fusion 내에서 MySQL 액세스
Cloud Data Fusion 인스턴스에서 MySQL 인스턴스에 연결할 수 있으려면 먼저 Cloud Data Fusion Hub에서(또는 MySQL 커뮤니티 다운로드에서 직접) MySQL JDBC 드라이버를 설치합니다.
Cloud Data Fusion에서 MySQL 데이터베이스의 연결 세부정보를 입력합니다. 세부정보를 입력하고 Wrangler 페이지에서 연결을 테스트합니다.
선택사항: MySQL에 연결하는 다른 방법
Cloud Data Fusion에서 다음 방법으로 MySQL에 액세스할 수 있습니다.
- Studio 페이지에서 MySQL 소스 플러그인을 클릭하고 연결 세부정보를 입력합니다.
대신 Studio 페이지에서 비슷한 속성(연결 문자열, 사용자 이름, 비밀번호, 연결 인수)이 포함된 데이터베이스 소스 플러그인을 사용합니다.
기타 연결
비공개 인스턴스 연결이 권장되지만 다음 연결도 가능합니다.
- 공개 Cloud SQL 인스턴스에 대한 공개 Cloud Data Fusion 인스턴스(공개 Cloud SQL 프록시 사용 또는 승인된 네트워크에서
0.0.0.0/0
범위를 허용 목록에 추가). Cloud SQL에 대한 공개 IP 연결 옵션을 참조하세요. - 비공개 Cloud Data Fusion 인스턴스 및 공개 Cloud SQL 인스턴스(승인된 네트워크에서 공개 Cloud SQL 프록시 사용)
공개 Cloud Data Fusion 인스턴스와 비공개 Cloud SQL 인스턴스