概要
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 範囲全体を許可するように構成する必要があります。
Console で内部 IP 範囲を確認するには:
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
使用する VPC ネットワークを選択します。
[プライベート サービス接続] タブを選択します。
pg_hba.conf
ファイルのレプリケーション接続セクション、または移行元データベースの AWS RDS のセキュリティ グループ定義を更新して、Cloud SQL VPC の IP アドレス範囲からの接続を受け入れるようにします。
VPC ピアリングはプライベート サービス アクセスを使用します。これは、VPC ピアリングを使用するプロジェクトごとに 1 回構成する必要があります。private services access
を設定したら、移行ジョブをテストして接続を確認します。
Database Migration Service のプライベート サービス アクセスの構成
Database Migration Service インスタンスのいずれかにプライベート IP を使用している場合、Database Migration Service インスタンスに接続している、または接続する必要のあるすべての Google Cloud プロジェクトに対して、プライベート サービス アクセスを一度のみ構成する必要があります。
プライベート サービス アクセスを確立するには、compute.networkAdmin IAM ロールが必要です。ネットワークでプライベート サービス アクセスを確立した後は、プライベート IP を使用するようにインスタンスを構成する際に compute.networkAdmin
IAM ロールが必要なくなります。
プライベート サービス アクセスでは、まず内部 IP アドレス範囲を割り振ってから、プライベート接続を作成してカスタムルートをエクスポートする必要があります。
割り振り範囲は、ローカル VPC ネットワークでは使用できない予約済みの CIDR ブロックです。プライベート接続を作成するときに、割り当てを指定します。プライベート接続は、VPC ネットワークを基盤となる(「サービス プロデューサー」)VPC ネットワークにリンクします。
プライベート接続を作成すると、VPC ネットワークとサービス プロデューサー ネットワークはサブネット ルートのみを交換します。サービス プロバイダのネットワークがルートをインポートし、オンプレミス ネットワークにトラフィックを正しく転送できるように、VPC ネットワークのカスタムルートをエクスポートする必要があります。
ピアリングを構成すると、別の VPC ネットワークに接続する意思が示されます。ピアリングされるそれぞれのネットワークが相手側とのピアリングを構成するまでは、両者は接続されません。相手側のネットワークでこちら側のネットワークとピアリングするための構成が行われると、双方のネットワークでピアリング状態が ACTIVE に変わり、接続が確立されます。相手側のネットワークで同じピアリング構成が行われていない場合、ピアリング状態は INACTIVE のままになります。これは、2 つのネットワークが接続されていないことを示します。
接続された 2 つのネットワークは常にサブネット ルートを交換します。ピアリング先のネットワークが静的と動的のカスタムルートをエクスポートするように構成されている場合、そのネットワークから必要に応じて両方のカスタムルートをインポートできます。
プライベート サービス アクセスの構成プロセスは、2 つの部分で構成されています。
- IP アドレス範囲を割り振る。この範囲にはすべてのインスタンスが含まれます。
- VPC ネットワークからサービス プロデューサー ネットワークへのプライベート接続を作成する。
IP アドレス範囲を割り振る
コンソール
- Google Cloud コンソールで [VPC ネットワーク] ページに移動します。
- 使用する 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
プライベート接続の作成
コンソール
- Google Cloud コンソールで [VPC ネットワーク] ページに移動します。
- 使用する 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"