移行元データベースと移行先データベースのプライベート IP アドレス間の接続を確立することで、プライベート ネットワーク経由でデータを移行できます。 移行先データベースのプライベート IP アドレスを構成するには、VPC ピアリングでプライベート サービス アクセスを使用するか、Private Service Connect を使用します。
各接続方法にはそれぞれ異なる利点とトレードオフがあります。シナリオに最適なアプローチを選択してください。Cloud SQL のプライベート サービス アクセスと Private Service Connect の詳細については、Cloud SQL ドキュメントのプライベート IP の概要をご覧ください。
VPC ピアリングを使用して接続を構成する
VPC ピアリングは、VPC が相互に通信するように構成することで機能します。移行元が Cloud SQL または Compute Engine の同じ Google Cloud プロジェクトにある場合、移行先は移行元と直接通信できます。 移行元が VPN(AWS の VPN や独自のオンプレミス VPN など)の内部にある場合は、移行元 VPN と Google Cloud VPN が協調するように構成します。詳細については、 VPN を介して VPC を接続するをご覧ください。VPC チェイニングはサポートされていません。移行元が別の Google Cloud プロジェクトにある場合は、共有 VPC の概要で、複数のプロジェクトのリソースを共通の VPC ネットワークに接続して VPC ピアリングを行う方法をご覧ください。
ソース データベース サーバーのファイアウォールは、Cloud SQL の宛先インスタンスが使用する VPC ネットワークのプライベート サービス接続に割り振られた内部 IP 範囲全体を許可するように構成する必要があります。
コンソールで内部 IP 範囲 を確認するには:
[VPC ネットワーク] ページをコンソールで Google Cloud 開きます。
使用する VPC ネットワークを選択します。
[プライベート サービス アクセス] > [Allocated IP ranges for services] を選択します。
servicenetworking-googleapis-com によって作成された接続に関連付けられている内部 IP 範囲 を見つけます。
pg_hba.conf
VPC ピアリングではプライベート サービス アクセスを使用します。
これは、VPC ピアリングを使用するプロジェクトごとに 1 回構成する必要があります。private services access を確立したら、移行ジョブをテストして接続を確認します。
Database Migration Service のプライベート サービス アクセスを構成する
Database Migration Service インスタンスのいずれかにプライベート IP を使用している場合、Database Migration Service インスタンスに接続しなければならない、または接続する必要があるすべての Google Cloud プロジェクトで、プライベート サービス アクセスを 1 回だけ構成します。
プライベート サービス アクセスを確立するには、
compute.networkAdmin の IAM 役割が必要です。ネットワークでプライベート サービス アクセスを確立した後は、compute.networkAdmin IAM ロールがなくても、プライベート IP を使用するようにインスタンスを構成できます。
プライベート サービス アクセスでは、まず内部 IP アドレス範囲を割り振り、プライベート接続を作成してから、カスタムルートをエクスポートする必要があります。
割り当て範囲は、ローカル VPC ネットワークでは使用できない予約済みの CIDR ブロックです。プライベート接続を作成するときは、割り当てを指定します。プライベート接続は、VPC ネットワークを基盤となる(「サービス プロデューサー」)VPC ネットワークにリンクします。
プライベート接続を作成すると、VPC ネットワークとサービス プロデューサー ネットワークはサブネット ルートのみを交換します。サービス プロバイダのネットワークがルートをインポートし、オンプレミス ネットワークにトラフィックを正しく転送できるように、VPC ネットワークのカスタムルートをエクスポートする必要があります。
ピアリングを構成すると、別の VPC ネットワークに接続する意思が示されます。 ピアリングされるそれぞれのネットワークが相手側とのピアリングを構成するまでは、両者は接続されません。相手側のネットワークでこちら側のネットワークとピアリングするための構成が行われると、双方のネットワークでピアリング状態が ACTIVE に変わり、接続が確立されます。相手側のネットワークで同じピアリング構成が行われていない場合、ピアリング状態は INACTIVE のままになります。これは、2 つのネットワークが接続されていないことを示します。
接続された 2 つのネットワークは常にサブネット ルートを交換します。ピアリング先のネットワークが静的と動的のカスタムルートをエクスポートするように構成されていれば、そのネットワークから必要に応じて両方のカスタムルートをインポートできます。
プライベート サービス アクセスの構成プロセスは、2 つの部分で構成されています。
- IP アドレス範囲を割り振る。この範囲には、すべてのインスタンスが含まれます。
- VPC ネットワークから サービス プロデューサー ネットワークへのプライベート接続を作成する。
IP アドレス範囲を割り振る
コンソール
- [VPC ネットワーク] ページに コンソール Google Cloud で移動します。
- 使用する VPC ネットワークを選択します。
- [プライベート サービス接続] タブを選択します。
- [サービスに割り当てられた IP 範囲] タブを選択します。
- [IP 範囲の割り当て] をクリックします。
割り振られた範囲の [名前] には
google-managed-services-VPC_NETWORK_NAMEを指定します。VPC_NETWORK_NAMEは 接続する VPC ネットワークの名前です(google-managed-services-defaultなど)。 [説明] は任意です。[割り当て] をクリックして、割り振る範囲を作成します。
gcloud
次のいずれかを行います。
アドレス範囲と接頭辞長(サブネット マスク)を指定するには、
addressesフラグとprefix-lengthフラグを使用します。たとえば、CIDR ブロック192.168.0.0/16を割り当てるには、アドレスに192.168.0.0を指定し、接頭辞長に16を指定します。gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --network=[VPC_NETWORK_NAME]接頭辞長(サブネット マスク)だけを指定するには、
prefix-lengthフラグを使用します。アドレス範囲を省略すると、 Google Cloud では VPC ネットワークで使用されていないアドレス範囲が自動的に選択されます。次の例では、16ビットの接頭辞長を使用して、未使用の IP アドレス範囲を選択しています。gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=[VPC_NETWORK_NAME]
[VPC_NETWORK_NAME] は、使用する VPC ネットワークの名前(my-vpc-network など)に置き換えます。
次の例では、VPC ネットワーク my-vpc-network のリソースがプライベート IP を使用して Database Migration Service インスタンスに接続できるようにする IP 範囲を割り振っています。
gcloud compute addresses create google-managed-services-my-vpc-network \
--global \
--purpose=VPC_PEERING \
--prefix-length=16 \
--network=my-vpc-network \
--project=my-project
プライベート接続の作成
コンソール
- [VPC ネットワーク] ページに コンソール Google Cloud で移動します。
- 使用する VPC ネットワークを選択します。
- [プライベート サービス接続] タブを選択します。
- [サービスへのプライベート接続] タブを選択します。
- ネットワークとサービス プロデューサーとの間にプライベート接続を作成するには、[接続の作成] をクリックします。
- [割り当て] で、他のサービス プロデューサーによって使用されていない 1 つ以上の既存の割り当て 範囲を選択し、[OK] をクリックします。
- [接続] をクリックして接続を作成します。
gcloud
プライベート接続を作成します。
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-[VPC_NETWORK_NAME] \ --network=[VPC_NETWORK_NAME] \ --project=[PROJECT_ID][VPC_NETWORK_NAME]は VPC ネットワークの名前に置き換え、[PROJECT_ID]は VPC ネットワークを含むプロジェクトの ID に置き換えます。このコマンドは、長時間実行オペレーションを開始し、オペレーション名を戻します。
オペレーションが成功したかどうかを確認します。
gcloud services vpc-peerings operations describe \ --name=[OPERATION_NAME][OPERATION_NAME]を、前の手順から返されたオペレーション名に置き換えます。
プライベート接続を作成するときに、複数の割り当て範囲を指定できます。たとえば、範囲が不足している場合は、割り振り範囲を追加で指定できます。サービスは指定されたすべての範囲内の IP アドレスを、指定された順序で使用します。
カスタムルートをエクスポートする
既存の VPC ネットワーク ピアリング接続を更新して、ピア VPC ネットワークとの間でのカスタムルートのエクスポートまたはインポートに関する設定を変更します。
カスタムルートをインポートできるのは、ピア ネットワークがカスタムルートをエクスポートしている場合のみです。ピア ネットワークでは、カスタムルートをインポートする場合にのみカスタムルートを受け取ります。
コンソール
- Google Cloud コンソールで、[VPC ネットワーク ピアリング] ページに移動します。
[VPC ネットワーク ピアリング] ページに移動 - 更新するピアリング接続を選択します。
- [編集] をクリックします。
- [カスタムルートをインポートする] または [カスタムルートのエクスポート] をオン / オフにして、カスタムルートの設定を更新します。
- [保存] をクリックします。
gcloud
ピアリング接続を更新して、カスタムルートのインポートまたはエクスポートに関する設定を変更します。
gcloud compute networks peerings update [PEERING-NAME] \
--network=[MY-LOCAL-NETWORK] \
[--[no-]import-custom-routes] \
[--[no-]export-custom-routes]
roles/servicenetworking.serviceAgent ロールを付与する
gcloud beta services identity create \
--service=servicenetworking.googleapis.com \
--project=project-id
gcloud projects add-iam-policy-binding project-id \
--member="service-account-prefix@service-networking.iam.gserviceaccount.com" \
--role="roles/servicenetworking.serviceAgent"
Private Service Connect インターフェースを使用して接続を構成する
同種移行の場合、Cloud SQL は Private Service Connect インターフェースを使用して、プライベート ネットワーク経由で接続を確立できます。この接続方法は、既存のインスタンスに 移行する場合にのみ使用できます。
Private Service Connect インターフェースを使用するには、次の操作を行います。
Private Service Connect が有効な Cloud SQL インスタンスを作成します。 Cloud SQL ドキュメントの Private Service Connect 対応インスタンスを作成する をご覧ください。
インスタンスのアウトバウンド接続用に Private Service Connect を構成します。このプロセスの概要は次のとおりです。
2.1. 移行元データベースのプライベート IP アドレスに到達できる VPC ネットワークにネットワーク アタッチメントを作成します。ネットワーク アタッチメント用に予約されたサブネット範囲は、RFC 1918 範囲内にある必要があります。
2.2. ネットワーク アタッチメントを移行先 Cloud SQL for MySQL インスタンスに割り当てます。
プロセス全体については、Cloud SQL ドキュメントの アウトバウンド接続を構成する をご覧ください。