Dataflow ネットワーキングの問題のトラブルシューティング

このページでは、Dataflow ネットワーキングの問題を解決する方法について説明します。

Dataflow ジョブのネットワーク構成の詳細については、インターネット アクセスとファイアウォール ルールを構成するネットワークとサブネットワークを指定するをご覧ください。

ネットワーク リソースがカスタム サブネット モードの場合に、ネットワーク インターフェースがサブネットを指定する必要がある

Dataflow ジョブを実行すると、次のエラーが発生します。

Workflow failed. Causes: Invalid Error: Message: Invalid value for field
'resource.properties.networkInterfaces[0].subnetwork': ''. Network interface
must specify a subnet if the network resource is in custom subnet mode. HTTP
Code: 400

この問題は、default という名前の VPC ネットワークが自動モードの VPC ネットワークからカスタムモードの VPC ネットワークに変換された場合に発生します。

この問題を解決するには、カスタムモードの VPC ネットワークを使用するときにサブネットワーク パラメータを指定します。詳細については、ネットワークとサブネットワークの指定をご覧ください。

PoolableConnectionFactory を作成できない

Dataflow ジョブが外部データベースに接続する必要がある場合に、次のエラーが発生します。

java.sql.SQLException: Cannot create PoolableConnectionFactory
(The connection attempt failed.)

この問題は、Dataflow ワーカーがデータベース サーバーとの接続を確立できない場合に発生します。これは多くの場合に、下り(外向き)ルールまたはファイアウォールが原因です。

この問題の根本原因を特定するには、接続テストを作成して実行します。接続テストを使用すると、トラフィックがブロックされている場所を特定できます。

下り(外向き)ルールを更新するには、ファイアウォール下り(外向き)ルールの例をご覧ください。

このリソースのプロジェクト間の参照が許可されない

共有 VPC ネットワークで Dataflow ジョブを実行すると、次のエラーが発生します。

Invalid value for field 'resource.properties.networkInterfaces[0].subnetwork':
'https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK'.
Cross-project references for this resource are not allowed.

この問題は、共有 VPC ネットワークでサブネットワークを指定したものの、サービス プロジェクトが共有 VPC ホスト プロジェクトに接続されていない場合に発生します。

この問題を解決するには、共有 VPC 管理者がサービス プロジェクトをホスト プロジェクトに接続する必要があります。

インスタンスはサブネットワークと同じリージョンに存在する必要があります

サブネットワークを指定して Dataflow ジョブを実行すると、次のエラーが発生します。

Failed to start the VM, launcher-ID, used for launching because of status code: INVALID_ARGUMENT, reason: Invalid Error:
Message: Invalid value for field 'resource.networkInterfaces[0].subnetwork': 'https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK'. Instance must be in the same region as the subnetwork.
HTTP Code: 400.

この問題は、ジョブとジョブで指定されたサブネットワークが異なるリージョンにある場合に発生します。

この問題を解決するには、サブネットワークがあるリージョンでジョブを実行します。たとえば、サブネットワークが us-central1 にある場合は、リージョン us-central1 でジョブを実行します。

ネットワークに接続できない

パブリック IP が無効になっている状態で Dataflow ジョブを実行しようとすると、次のエラーが発生します。

NewConnectionError(''<pip._vendor.urllib3.connection.HTTPSConnection  object at ID>:
Failed to establish a new connection: [Errno 101] Network is unreachable

この問題は、パイプライン構成で外部 IP アドレスへの接続が許可されていない状態で、パイプラインを実行するために外部 IP に接続する必要があるために発生します。次のパイプライン オプションは、外部 IP 接続を無効にします。

Java

--usePublicIps=false

Python

--no_use_public_ips=true

Go

--no_use_public_ips=true

API

options = PipelineOptions(use_public_ips=False)

トラフィックがブロックされている場所を特定するには、接続テストを作成して実行します。

外部 IP アドレスへの接続を許可せずにこの問題を解決するには、次の変更のいずれかまたは複数の変更を行います。

Dataflow のインターネット アクセスの構成について詳しくは、Dataflow のインターネット アクセスをご覧ください。

ネットワークまたはサブネットワークが Dataflow サービス アカウントにアクセスできない、または存在しない

Dataflow ジョブを実行しようとすると、次のいずれかのエラーが発生します。ジョブが失敗します。

Workflow failed. Causes: Network default is not accessible to Dataflow Service
account or does not exist
Workflow failed. Causes: Subnetwork SUBNETWORK is not
accessible to Dataflow Service account or does not exist

この問題が発生する理由として、以下のことが考えられます。

  • Dataflow ジョブの作成時にサブネットワーク パラメータとネットワーク パラメータの両方を省略するものの、default という名前の自動モード VPC ネットワークはプロジェクトに存在しない。デフォルト ネットワークが削除された場合や、組織のポリシーの制約によってデフォルト ネットワークを作成できない場合は、デフォルト ネットワークが存在しない可能性があります。
  • サブネットワークがない。
  • サブネットワーク パラメータが正しく指定されていない。
  • Dataflow サービス アカウントに必要な権限がない。
  • 共有 VPC を使用している場合は、ホスト プロジェクトの値は、VPC がホストされているプロジェクトにする必要があります。共有 VPC の詳細については、共有 VPC の概要をご覧ください。

この問題を解決するには、ネットワークとサブネットワークの指定に関するガイドラインに沿って対応してください。

RPC がタイムアウトした、またはポート 12345 または 12346 で接続に失敗した

Streaming Engine または Dataflow Shuffle を使用しない Dataflow ジョブを実行すると、次のいずれかのエラーが発生します。ジョブは停止するか、失敗します。

ストリーミング ジョブの場合:

Rpc to WORKER_HARNESS:12345 completed with error
UNAVAILABLE: failed to connect to all addresses; last error : UNKNOWN:
ipv4:WORKER_IP_ADDRESS:12345: Failed to connect to remote
host: FD Shutdown

バッチジョブの場合:

(g)RPC timed out when SOURCE_WORKER_HARNESS talking to
DESTINATION_WORKER_HARNESS:12346.

この問題は、TCP ポート 1234512346 でネットワーク トラフィックを許可するファイアウォール ルールがない場合に発生します。ジョブで複数のワーカーが使用されている場合、ワーカーは相互に通信できません。

この問題を解決するには、DEADLINE_EXCEEDED またはサーバーが応答しないのトラブルシューティング手順をご覧ください。

単一ワーカーの起動と停止が繰り返される

Dataflow ジョブを起動すると、次の問題が発生します。Dataflow ジョブの [ジョブの指標] ページの [CPU 使用率(すべてのワーカー)] グラフには、ワーカーが繰り返し起動し、数分後に停止していることが示されています。特定の時間に利用できるワーカーは 1 つのみです。

一度に 1 つのワーカーが繰り返し作成されてから停止することを示す、CPU 使用率のグラフ。

次のエラーが発生します。

The Dataflow job appears to be stuck because no worker activity has been seen
in the last 1h. Please check the worker logs in Stackdriver Logging.

ワーカーログが作成されていません。

ジョブのログに、次のような複数のメッセージが表示される場合があります。

Autoscaling: Raised the number of workers to 1 based on the rate of progress in
the currently running stage(s).

この問題は、VPC ネットワークにインターネットへのデフォルト ルートとサブネットワークへのデフォルト ルートがない場合に発生します。

この問題を解決するには、VPC ネットワークにデフォルト ルートを追加します。詳細については、Dataflow のインターネット アクセスをご覧ください。

サブネットワークに限定公開の Google アクセスが存在しない

外部 IP アドレスが無効になっている Dataflow ジョブを起動すると、次のエラーが発生します。

Workflow failed. Causes: Subnetwork SUBNETWORK on project
PROJECT_ID network NETWORK in
region REGION does not have Private Google Access, which
is required for usage of private IP addresses by the Dataflow workers.

この問題は、限定公開の Google アクセスを有効にせずに外部 IP アドレスを無効にする場合に発生します。

この問題を解決するには、Dataflow ジョブが使用するサブネットワークで限定公開の Google アクセスを有効にします

指定した IP 範囲で Dataflow を作成できない

Dataflow は、静的 IP 範囲のワーカー VM への割り当てをサポートしていません。代替策として、特定の IP アドレス範囲を持つサブネットワークを作成し、作成したサブネットワークに Dataflow ジョブをデプロイします。

Dataflow でサブネットワークを使用する際の詳細については、ネットワークとサブネットワークを指定するをご覧ください。

サブネットワークでの IP 範囲の構成については、エイリアス IP 範囲を構成するをご覧ください。

サブネットワークでパイプラインを実行するには、サブネットワークを指定してパイプラインを実行するをご覧ください。

NAT ルールとルーターを作成することが必要な場合もあります。詳細については、Cloud NAT をご覧ください。

次のステップ

ネットワークのトラブルシューティングの詳細な手順については、VM 間の内部接続をトラブルシューティングするをご覧ください。