VPC ネットワーク ピアリングを使用すると、Datastream が Virtual Private Cloud(VPC)ネットワーク内のリソースとプライベートに通信できます。VPC ネットワークと Datastream VPC ネットワーク間の VPC ネットワーク ピアリング接続により、Datastream は次のものに接続できます。
- VPC ネットワーク内の仮想マシン(VM)や内部ロードバランサなどのリソース。
- Cloud VPN トンネル、Dedicated Interconnect VLAN アタッチメント、Partner Interconnect VLAN アタッチメント、Network Connectivity Center Cloud Router を使用して VPC ネットワークに接続されている他のネットワークのリソース。
VPC ネットワークと Datastream VPC ネットワーク間の VPC ネットワーク ピアリング接続では、Datastream は次のものに接続できません。
- VPC ネットワーク内にある Private Service Connect エンドポイント。
- 別の VPC ネットワークに存在し、VPC ネットワークとピアリングされているが、Datastream VPC ネットワークとピアリングされていないリソース。(これは、VPC ネットワーク ピアリングが推移的ルーティングを提供しないためです)。
Datastream と VPC ネットワークからのみアクセス可能なリソース間の接続を確立するには、VPC ネットワーク内のネットワーク アドレス変換(NAT)VM を使用します。NAT VM の一般的なユースケースは、Datastream が Cloud SQL インスタンスに接続する必要がある場合です。
このページでは、Datastream が Cloud SQL インスタンスにプライベートに接続できるようにする NAT VM 構成の例について説明します。
VPC ピアリングの前提条件
プライベート接続構成を作成する前に、次の手順を実施して、プロジェクトへの VPC ピアリング接続を Datastream が作成できるようにする必要があります。
- Datastream のプライベート ネットワークにピアリングでき、[VPC ネットワーク ピアリング] ページで説明されている要件を満たす VPC ネットワークがあること。このネットワークの作成について詳しくは、VPC ネットワーク ピアリングの使用をご覧ください。
- VPC ネットワーク上の使用可能な IP 範囲(/29 の CIDR ブロック)を特定します。サブネットとしてすでに存在する 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 の整数で表します。この値は、ブロック トラフィック ルールに設定されている値(存在する場合)よりも小さくする必要があります。優先度が低い値は、優先度が高いことを意味します。
- PRIVATE_CONNECTIVITY_VPC: Datastream のプライベート ネットワークにピアリングでき、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 の前提条件セクションで説明する手順に加えて、次の操作を行う必要があります。
サービス プロジェクトに対して:
- Datastream API を有効にします。
Datastream サービス アカウントに使用するメールアドレスを取得します。Datastream サービス アカウントは、次のいずれかを行うと作成されます。
- 接続プロファイルやストリームなどの Datastream リソースを作成する。
- プライベート接続構成を作成し、共有 VPC を選択して、[Datastream サービス アカウントを作成する] をクリックします。サービス アカウントはホスト プロジェクトに作成されます。
Datastream サービス アカウントに使用するメールアドレスを取得するには、 Google Cloud コンソールのホームページでプロジェクト番号を見つけます。サービス アカウントのメールアドレスは
service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com
です。
ホスト プロジェクトでは、次の手順を行います。
Datastream サービス アカウントに
compute.networkAdmin
Identity and Access Management(IAM)ロールを付与します。 このロールは、VPC ピアリングを作成する場合にのみ必要です。ピアリングが確立されると、このロールは不要になります。組織で権限の付与が許可されていない場合は、次の最小権限を持つカスタムロールを作成します。
カスタムロールの詳細については、カスタムロールを作成、管理するをご覧ください。
NAT VM を設定する
Datastream が接続する必要がある Cloud SQL インスタンスの IP アドレスを特定します。
VPC ネットワークを特定します。これは、VPC ネットワーク ピアリングを使用して DataStream VPC ネットワークに接続されている VPC ネットワークです。
まだ作成していない場合は、Datastream でプライベート接続構成を作成します。これにより、VPC ネットワークと Datastream VPC ネットワークを接続する VPC ネットワーク ピアリング接続が作成されます。Datastream プライベート接続構成で使用される IP アドレス範囲をメモします。
次の手順で作成する NAT VM に使用するマシンタイプを選択します。Google Cloud は、VM インスタンスのマシンタイプに応じて、VPC ネットワーク内のネクストホップによってルーティングされるパケットに対して、インスタンスごとの下り(外向き)帯域幅の上限を適用します。詳細については、VPC ネットワーク内でルーティング可能な宛先への下り(外向き)とインスタンスごとの下り(外向き)最大帯域幅をご覧ください。
VPC ネットワークに NAT VM を作成します。VPC ネットワークが共有 VPC ネットワークの場合は、NAT VM のネットワーク インターフェースが共有 VPC ネットワーク内にある限り、ホスト プロジェクトまたは任意のサービス プロジェクトに NAT VM を作成できます。
- ネットワークのラウンドトリップ時間を最小限に抑えるため、NAT VM を Datastream と同じリージョンに作成します。
- この例では、NAT VM に単一のネットワーク インターフェースがあることを前提としています。
- Linux ディストリビューション(Debian 12 など)でスクリプトを実行します。
- 次の起動スクリプトを使用します。起動スクリプトは、VM が起動するたびに root によって実行されます。このスクリプトには、スクリプトの各行の処理内容を説明するコメントが含まれています。スクリプトで、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
次の特性を持つ上り(内向き)許可ファイアウォール ルール(またはグローバル ネットワーク ファイアウォール ポリシー、リージョン ネットワーク ファイアウォール ポリシー、階層型ファイアウォール ポリシーのルール)を作成します。
- 方向: 上り(内向き)
- アクション: 許可
- ターゲット パラメータ: NAT VM 以上
- ソース パラメータ: Datastream プライベート接続構成で使用される IP アドレス範囲
- プロトコル: TCP
- ポート: 少なくとも DATABASE_PORT を含める必要があります
暗黙の下り(外向き)許可ファイアウォール ルールにより、NAT VM は任意の宛先にパケットを送信できます。VPC ネットワークで下り(外向き)拒否ファイアウォール ルールを使用している場合は、NAT VM が Cloud SQL インスタンスにパケットを送信できるように、下り(外向き)許可ファイアウォール ルールを作成する必要があります。下り(外向き)許可ルールが必要な場合は、次のパラメータを使用します。
- 方向: 下り(外向き)
- アクション: 許可
- ターゲット パラメータ: NAT VM 以上
- 宛先パラメータ: Cloud SQL インスタンスの IP アドレス
- プロトコル: TCP
- ポート: 少なくとも DATABASE_PORT を含める必要があります
NAT VM のネットワーク インターフェースで使用されるプライマリ内部 IPv4 アドレスからの接続を受け入れるように Cloud SQL インスタンスを構成していることを確認します。手順については、Cloud SQL ドキュメントの承認済みネットワークで承認するをご覧ください。
Datastream で接続プロファイルを作成します。プロファイルの接続の詳細で、作成した NAT VM のプライマリ内部 IPv4 アドレスを指定します。接続プロファイルのポート フィールドに、ソース データベースのポートを入力します。
NAT VM と内部パススルー ネットワーク ロードバランサのペアを設定する
NAT VM ソリューションの信頼性を高めるには、NAT VM のペアと内部パススルー ネットワーク ロードバランサを使用する次のアーキテクチャを検討してください。
同じリージョンの異なるゾーンに 2 つの NAT VM を作成します。NAT VM を設定するの手順に沿って各 VM を作成し、各 VM を独自のゾーン非マネージド インスタンス グループに配置します。
または、リージョン マネージド インスタンス グループを作成することもできます。マネージド インスタンス グループ テンプレートに、NAT VM を設定するの手順の起動スクリプトの例のような起動スクリプトを含めます。
バックエンド サービスが前の手順のインスタンス グループをバックエンドとして使用する内部パススルー ネットワーク ロードバランサを作成します。内部パススルー ネットワーク ロードバランサの例については、VM インスタンス グループのバックエンドを使用して内部パススルー ネットワーク ロードバランサを設定するをご覧ください。
ロードバランサのヘルスチェックを構成する場合は、DATABASE_PORT に一致する宛先 TCP ポートを使用する TCP ヘルスチェックを使用できます。ヘルスチェック パケットは、NAT VM の構成に従って CLOUD_SQL_INSTANCE_IP に転送されます。または、カスタムポートで TCP または HTTP ヘルスチェックに応答する NAT VM でローカル プロセスを実行することもできます。
NAT VM を設定するの手順に沿って、ファイアウォール ルールを作成し、Cloud SQL 承認済みネットワークを構成します。Cloud SQL 承認済みネットワークに、両方の NAT VM のプライマリ内部 IPv4 アドレスが含まれていることを確認します。
Datastream 接続プロファイルを作成するときは、プロファイルの接続の詳細で、内部パススルー ネットワーク ロードバランサの転送ルールの IP アドレスを指定します。
次のステップ
- プライベート接続構成を作成する方法を学習する。
- プライベート接続構成を表示する方法を確認する。
- プライベート接続構成を削除する方法を確認する。