このページでは、パイプラインを開発するときに、プライベート Cloud Data Fusion インスタンスから Salesforce などの Software as a Service(SaaS)アプリケーションや Amazon S3 などのサードパーティのクラウド サービスに接続する方法について説明します。
このガイドでは、下り(外向き)と下り(外向き)の制御という用語を使用しています。
下り(外向き)とは、パブリック インターネット経由で Google Cloud から出るネットワーク トラフィックを意味します。外向きは通常、Salesforce などの SaaS サービス、または Amazon S3 などのパブリック クラウド サービスを読み書きするパイプラインを作成するときに発生します。
下り(外向き)の制御では、プロキシ VM を使用する下り(外向き)トラフィック用のガードレールを定義します。これにより、事前構成されたドメインのセットへの下り(外向き)トラフィックが成功し、その他はすべて失敗します。下り(外向き)トラフィックのセキュリティ境界を強化し、プライベート インスタンスからの不要な下り(外向き)を防止できます。
以下のシステムのアーキテクチャ図は、プライベート Cloud Data Fusion インスタンスがパイプラインを開発する際にパブリック インターネットに接続する方法を示しています。
このシナリオでパイプラインを設計すると、Cloud Data Fusion は、Cloud Data Fusion Preview または Wrangler の顧客プロジェクトを通じて下り(外向き)トラフィックをルーティングします。このプロセスでは、次のリソースを使用します。
カスタム VPC ネットワーク ルート: カスタム VPC ネットワークは、インポートされたカスタムルートを介してゲートウェイ VM にトラフィックをルーティングします。これにより、VPC ピアリングを使用してテナント プロジェクトの VPC にエクスポートされます。
ゲートウェイ VM: ゲートウェイ VM は、Cloud Data Fusion テナント プロジェクトの Google Cloud からの下り(外向き)トラフィックを、パブリック インターネット経由で SaaS またはサードパーティ クラウドにルーティングします。この VM をお客様のプロジェクトで管理します。これを内部ロードバランサ(ILB)を使用して高可用性(HA)環境で構成できます。同じ VPC 内の複数のプライベート Cloud Data Fusion インスタンスに対して VM を再利用することをおすすめします。
開発環境および実行環境での下り(外向き)の制御の詳細については、プライベート インスタンスでの下り(外向き)の制御をご覧ください。
始める前に
Cloud Data Fusion バージョン 6.4 以降では、プライベート インスタンスからパブリック ソースに接続できます。これらのバージョンのいずれかを使用するには、新しいプライベート Cloud Data Fusion インスタンスを作成するか、6.4.0 に既存のインスタンスをアップグレードしてください。
インスタンスの VPC ネットワーク ピアリング接続を作成するときに、[ルートのエクスポート] を選択します。
インターネット接続の設定
次の手順では、Wrangler のプライベート Cloud Data Fusion インスタンスから Amazon S3 バケットにアクセスする方法について説明します。Preview または Wrangler でパイプラインを設計する際に、パブリック インターネットを介してデータソースにアクセスする場合にも同様の手順を適用します。
このガイドでは 1 つの VM のみを使用していますが、ミッション クリティカルなアプリケーションの場合は負荷分散された VM を作成することをおすすめします。詳細については、高可用性の VM の設定をご覧ください。
NAT ゲートウェイを作成する
Cloud Data Fusion プライベート インスタンスと同じリージョンと VPC ネットワークに Cloud NAT ゲートウェイを作成します。
ゲートウェイ VM インスタンスとファイアウォール ルールを作成する
コンソール
[VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。外部 IP が設定されていない VM を使用することをおすすめします。
プライベート Cloud Data Fusion インスタンスでネットワーク ピアリングが設定されている同じ VPC を使用します。このシナリオでの VPC ネットワーク ピアリングの詳細については、始める前にをご覧ください。
Cloud Data Fusion インスタンスと同じネットワーク内で、インスタンスの IP 転送を有効にします。
[起動スクリプト] フィールドに、次のスクリプトを入力します。
#! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf iptables-save
詳細については、起動スクリプトの実行をご覧ください。
Cloud Data Fusion インスタンスに割り当てられた IP 範囲を取得するには、Cloud Data Fusion の [インスタンスの詳細] ページに移動します。
gcloud
ゲートウェイ VM とファイアウォール ルールを作成するには、Google Cloud CLI で次のスクリプトを実行します。
export CDF_PROJECT=CDF_PROJECT export GATEWAY_VM=GATEWAY_VM_NAME export ZONE=VM_ZONE export SUBNET=SUBNET export VPC_NETWORK=VPC_NETWORK export COMPUTE_ENGINE_SA=COMPUTE_ENGINE_SA gcloud beta compute --project=$CDF_PROJECT instances create $GATEWAY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --network-tier=PREMIUM --metadata=startup-script=\#\!\ /bin/bash$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables-save --can-ip-forward --no-address --maintenance-policy=MIGRATE --service-account=$COMPUTE_ENGINE_SA --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server,https-server --image=debian-10-buster-v20210316 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=$GATEWAY_VM --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-http --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:80 --source-ranges=CDF_IP_RANGE --target-tags=http-server gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE --target-tags=https-server
以下を置き換えます。
- CDF_PROJECT: プロジェクトのカスタマイズ可能な一意の ID
- GATEWAY_VM: 構成する VM の名前
- ZONE: VM のゾーン
- SUBNET: サブネット
- VPC_NETWORK: VM の名前
- COMPUTE_ENGINE_SA: Compute Engine サービス アカウントの名前。
- CDF_IP_RANGE: Cloud Data Fusion インスタンスに割り振られる IP 範囲
共有 VPC の使用
共有 VPC を使用してプライベート Cloud Data Fusion インスタンスをパブリック インターネット上のソースに接続する場合は、テナント プロジェクトで VPC ネットワーク ピアリングが設定されているホスト プロジェクトにゲートウェイ VM を作成します。
カスタムルートを作成する
カスタム ルートを作成して、作成したゲートウェイ VM インスタンスに接続します。
Console
Google Cloud コンソールでルートを作成するには、静的ルートの追加をご覧ください。
次の手順でルートを構成します。
1001
と等しいかそれ以上で [優先度] を設定します。宛先を、Cloud Data Fusion インスタンスに割り当てられた IP 範囲に設定します。- プライベート Cloud Data Fusion インスタンスと同じプロジェクトと VPC を使用します。
- Cloud Data Fusion テナント プロジェクト VPC が VPC ネットワーク ピアリングを介してこのカスタムルートをインポートできるように、VPC ネットワーク ピアリング構成でルートをエクスポートできるようにします。
gcloud
gcloud CLI でルートを作成するには:
export ROUTE=ROUTE gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \ --network=$VPC_NETWORK --priority=1001 \ --destination-range=0.0.0.0/0 \ --next-hop-instance=$GATEWAY_VM \ --next-hop-instance-zone=$ZONE
以下を置き換えます。
- ROUTE: カスタムルートの名前。
設定を確認する
上記の手順を実行した後、Preview と Wrangler で S3 バケット サービス(または他の SaaS かパブリック クラウド サービス)にアクセスできることを確認します。
高可用性ゲートウェイの設定
推奨: ミッション クリティカルなアプリケーションの場合、ロード バランシングされた VM を作成することをおすすめします。
ヘルスチェックのファイアウォール ルールを作成する
ファイアウォール ルールを作成し、以下を許可します。
- すべてのソース範囲のポート 80(HTTP)とポート 443(HTTPS)。
ヘルスチェックプローバーの IP アドレスからの TCP、UDP、ICMP トラフィック。例:
130.211.0.0/22,35.191.0.0/16
。
Console
すべてのソース範囲からポートを許可するファイアウォール ルールと、130.211.0.0/22,35.191.0.0/16
などのヘルスチェック プローバーの IP アドレスからの TCP、UDP、ICMP トラフィックを許可するファイアウォール ルールを作成します。
ヘルスチェックの作成をご覧ください。
gcloud
ヘルスチェック用のファイアウォール ルールを作成します。
export CDF_PROJECT=PROJECT_ID export VPC_NETWORK=VPC_NETWORK gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-http \ --direction=INGRESS --priority=1000 \ --network=$VPC_NETWORK \ --action=ALLOW --rules=tcp:80 \ --source-ranges=CDF_IP_RANGE \ --target-tags=http-server gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-https \ --direction=INGRESS --priority=1000 --network=$VPC_NETWORK \ --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE \ --target-tags=https-server gcloud compute --project=$CDF_PROJECT firewall-rules create allow-health-checks \ --network=$VPC_NETWORK \ --action=allow --direction=ingress \ --target-tags=allow-health-checks \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
以下を置き換えます。
- PROJECT_ID: プロジェクトのカスタマイズ可能な一意の ID。
- VPC_NETWORK: VPC ネットワークの名前。
- CDF_IP_RANGE: Cloud Data Fusion に割り当てられた IP アドレス範囲。
ゲートウェイ VM インスタンス テンプレートを作成する
Console
次の手順で、Console にインスタンス テンプレートを作成します。
- Cloud Data Fusion インスタンスと同じ VPC に作成します。
- 推奨: プライベート IP アドレスを持つ VM を使用します。
- HTTP / HTTPS ポートを有効にします。
- IP 転送を有効化
[起動スクリプト] フィールドに、次のスクリプトを入力します。
#! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf iptables-save
詳細については、起動スクリプトの実行をご覧ください。
Cloud Data Fusion インスタンスに割り当てられた IP 範囲を取得するには、Cloud Data Fusion の [インスタンスの詳細] ページに移動します。
gcloud
インスタンス テンプレートの作成:
export TEMPLATE_NAME=TEMPLATE_NAME export REGION=REGION export SUBNET=SUBNET export SERVICE_ACCOUNT=SERVICE_ACCOUNT gcloud beta compute --project=$CDF_PROJECT instance-templates create $TEMPLATE_NAME \ --machine-type=e2-medium \ --subnet=projects/$CDF_PROJECT/regions/$REGION/subnetworks/$SUBNET \ --network-tier=PREMIUM --metadata=startup-script=sudo\ bash\ -c\ \"echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward\"$'\n'sudo\ iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'sudo\ bash\ -c\ \"echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf\"$'\n'sudo\ iptables-save \ --can-ip-forward --no-address --maintenance-policy=MIGRATE \ --service-account=$SERVICE_ACCOUNT \ --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \ --region=$REGION --tags=http-server,https-server,allow-health-checks \ --image=debian-10-buster-v20210316 \ --image-project=debian-cloud --boot-disk-size=10GB \ --boot-disk-type=pd-balanced \ --boot-disk-device-name=$TEMPLATE_NAME \ --no-shielded-secure-boot --no-shielded-vtpm \ --no-shielded-integrity-monitoring \ --reservation-affinity=any
ヘルスチェックの作成
このゲートウェイ VM インスタンスではサービスが実行されないため、ヘルスチェックにポート 22
を使用できます。
Console
ヘルスチェックの作成をご覧ください。
gcloud
ヘルスチェックを作成します。
export HEATH_CHECK=HEALTH_CHECK_NAME gcloud beta compute health-checks create tcp $HEATH_CHECK --project=$CDF_PROJECT \ --port=22 --proxy-header=NONE --no-enable-logging \ --check-interval=5 --timeout=5 \ --unhealthy-threshold=2 --healthy-threshold=2
インスタンス グループの作成
前の手順で作成したヘルスチェックを使用して、インスタンス グループを作成します。
Console
マネージド インスタンス グループの作成をご覧ください。
gcloud
インスタンス グループの作成:
export INSTANCE_GROUP=INSTANCE_GROUP gcloud beta compute --project=$CDF_PROJECT instance-groups managed create $INSTANCE_GROUP \ --base-instance-name=$INSTANCE_GROUP \ --template=$TEMPLATE_NAME --size=1 --zone=$ZONE \ --health-check=test --initial-delay=300 gcloud beta compute --project "$CDF_PROJECT" instance-groups managed set-autoscaling "$INSTANCE_GROUP" \ --zone "$ZONE" --cool-down-period "60" \ --max-num-replicas "10" --min-num-replicas "1" \ --target-cpu-utilization "0.6" --mode "on"
ロードバランサを作成
前の手順で作成したインスタンス グループから TCP ロードバランサ(ILB)を作成します。
ロードバランサにカスタムルートを追加する
Cloud Data Fusion インスタンスと同じ VPC の内部ロードバランサ(ILB)にカスタムルートを追加します。
Console
[VPC ネットワーク] ページに移動します。
[ルート] タブで [ルートを作成] をクリックします。
gcloud
内部ロードバランサにカスタムルートを追加する
export ROUTE=ROUTE_NAME export ILB_FRONTEND=<ip_of_ilb_frontend> gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \ --network=$VPC_NETWORK --priority=1001 \ --destination-range=0.0.0.0/0 \ --next-hop-ilb=$ILB_FRONTEND \ --next-hop-ilb-region=$REGION
トラブルシューティング
Preview または Wrangler の接続タイムアウト エラーが発生する
下り(外向き)の制御の設定中に、Connection Timeout
エラーが発生することがあります。
問題を解決するには、次の設定が適用されていることを確認してください。
- テナント プロジェクトと顧客プロジェクト間の VPC ネットワーク ピアリングが存在する。
- VPC ネットワーク ピアリングでエクスポート ルートが有効になっている。
- ゲートウェイ VM または ILB へのカスタムルートが欠落していない。
HTTP
とHTTPS
のトラフィックを許可するファイアウォール ルールが欠落していない。
インスタンス グループのヘルスチェックが失敗する
130.211.0.0/22,35.191.0.0/16
ソース範囲からの TCP、UDP、ICMP トラフィックを許可するファイアウォール ルールが存在していることを確認します。
Dataproc での実行中にパイプラインが失敗する
実行時にパブリック インターネットにアクセスするには、Dataproc クラスタと同じリージョンとネットワークで Cloud NAT を有効化します。
次のステップ
- 特定のドメインのみに対し、プライベート Cloud Data Fusion インスタンスでの下りを制御する方法を学習する。
- Cloud Data Fusion のネットワーキングについて学習する。