このページでは、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 アドレスへの接続を許可せずにこの問題を解決するには、次の変更のいずれかまたは複数の変更を行います。
- Cloud NAT などの NAT ソリューションを構成します。
- 限定公開の Google アクセスを構成します。
- NAT ソリューションを構成できない場合は、カスタム コンテナを使用して Python パイプラインの依存関係を指定します。
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 ポート 12345
と 12346
でネットワーク トラフィックを許可するファイアウォール ルールがない場合に発生します。ジョブで複数のワーカーが使用されている場合、ワーカーは相互に通信できません。
この問題を解決するには、DEADLINE_EXCEEDED またはサーバーが応答しないのトラブルシューティング手順をご覧ください。
単一ワーカーの起動と停止が繰り返される
Dataflow ジョブを起動すると、次の問題が発生します。Dataflow ジョブの [ジョブの指標] ページの [CPU 使用率(すべてのワーカー)] グラフには、ワーカーが繰り返し起動し、数分後に停止していることが示されています。特定の時間に利用できるワーカーは 1 つのみです。
次のエラーが発生します。
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 間の内部接続をトラブルシューティングするをご覧ください。