このページでは、Serverless for Apache Spark のバッチ ワークロードとインタラクティブ セッションで発生する一般的なネットワーク 接続の問題を診断して解決する方法について説明します。 これらの問題により、ワークロードが必要なデータソース、 外部サービス、または Google Cloud API にアクセスできなくなる可能性があります。
一般的な症状とエラー メッセージ
Serverless for Apache Spark で接続の問題が発生すると、次のようなエラーが発生することがあります。
Unable to connect to service_name.googleapis.comCould not reach required Google APIsConnection refusedHost unreachableOperation timed outPermission denied(API 呼び出しをブロックしている場合はネットワーク関連であることが多い)
Cloud Storage、 BigQuery、その他のデータベースのデータへのアクセスに関連するエラーが発生することもあります。
一般的な原因とトラブルシューティングのヒント
このセクションでは、Serverless for Apache Spark の接続に関する問題の一般的な原因と、その解決に役立つトラブルシューティングのヒントについて説明します。S
ネットワークの構成
ネットワークの構成ミスは、接続障害の一般的な原因です。Serverless for Apache Spark 用のワークロードとセッションは、内部 IP アドレスを持つ VM で実行されます。ワークロードまたはセッションのサブネットで プライベート Google アクセス(PGA)が自動的に有効になり、Google API とサービスにアクセスします。詳細については、Serverless for Apache Spark のネットワーク構成をご覧ください。
アクセス オプション:
Private Service Connect(PSC): VPC ネットワーク内にプライベート エンドポイントを作成して、特定の Google API にアクセスできます。
- コンソールで、
[Private Service Connect] > [エンドポイント]に移動します。
Google Cloud エンドポイントを接続するか、
必要なすべての API(
storage.googleapis.comやdataproc.googleapis.comなど)のエンドポイントが接続され、バッチ ワークロードまたはセッションの Virtual Private Cloud ネットワークに接続されていることを確認します。
- コンソールで、
[Private Service Connect] > [エンドポイント]に移動します。
Google Cloud エンドポイントを接続するか、
必要なすべての API(
Cloud NAT: ワークロードが公共のインターネットにアクセスする必要がある場合は、バッチ ワークロードまたはセッションのサブネットに Cloud NAT を構成できます。
- コンソールで、
[Cloud NAT] ページに移動します。
Google Cloud ゲートウェイを構成するか、バッチ ワークロードまたはセッションの VPC ネットワーク、リージョン、サブネットに
ゲートウェイが構成されていること
を確認します。また、ファイアウォール ルールで
下り(外向き)が許可されていることを確認します
0.0.0.0/0。詳細については、 Cloud NAT を設定するをご覧ください。
- コンソールで、
[Cloud NAT] ページに移動します。
Google Cloud ゲートウェイを構成するか、バッチ ワークロードまたはセッションの VPC ネットワーク、リージョン、サブネットに
ゲートウェイが構成されていること
を確認します。また、ファイアウォール ルールで
下り(外向き)が許可されていることを確認します
ファイアウォール ルール:
- VPC
ネットワーク(または共有 VPC ネットワーク ホスト プロジェクト)の下り(外向き)ファイアウォール ルールで、必要な宛先へのアウトバウンド トラフィックがブロックされないようにする必要があります。
- 該当する場合は、下り(外向き)ルールで、外部サービス( パブリック API や外部のデータベースなど)へのトラフィックを許可する必要があります。 Google Cloud バッチ ワークロードまたはセッションでインターネット アクセスが必要な場合は、 Cloud NAT を使用してサブネットの下り(外向き)を提供できます。
- 接続の問題の一般的な原因ではありませんが、 上り(内向き)ルールが厳しすぎると、 必要なリターン トラフィックや内部通信が誤ってブロックされる可能性があります。
- VPC
ネットワーク(または共有 VPC ネットワーク ホスト プロジェクト)の下り(外向き)ファイアウォール ルールで、必要な宛先へのアウトバウンド トラフィックがブロックされないようにする必要があります。
DNS の解決:
- DNS の解決は VPC ネットワーク内で構成する必要があります。ワークロードとセッションは、
storage.googleapis.comやbigquery.googleapis.comなどの Google API と外部サービスのホスト名を解決できる必要があります。 - カスタム DNS サーバーと Cloud DNS のプライベート ゾーンは、Google ドメインのクエリを転送または解決する必要があります。
- Google API へのプライベート アクセスに Private Service Connect を使用している場合は、Google サービスの DNS レコードが PSC エンドポイントを使用して VPC ネットワーク内のプライベート IP アドレスに解決される必要があります。
- DNS の解決は VPC ネットワーク内で構成する必要があります。ワークロードとセッションは、
トラブルシューティングのヒント:
ネットワークとサブネットの構成を特定する:
- Serverless for Apache Spark のバッチまたはセッションの詳細で、
networkUriとsubnetUriを確認します。 - Google Cloud コンソールで、VPC ネットワークとサブネットの設定を確認します。
- Serverless for Apache Spark のバッチまたはセッションの詳細で、
プロキシ VM からの接続をテストする:
- バッチまたはセッション のサブネットに、バッチまたはセッションのサービス アカウントを使用してテスト用の Compute Engine VM を起動します。
- テスト VM から、次の接続テストを実行します。
nslookup storage.googleapis.comを使用して DNS 解決を検証します。bigquery.googleapis.comやdataproc.googleapis.comなどの他の Google API ドメインをルックアップします。Apache Spark 用 Serverless のサブネットで自動的に有効になるプライベート Google アクセス、または Private Service Connect を使用する場合、ドメインはプライベート IP アドレスに解決される必要があります。curl -v https://storage.googleapis.comを使用して、Google API への HTTPS 接続を確認します 。他の Google サービスへの接続も試してください。ping 8.8.8.8バッチまたはセッションで必要な場合は、インターネット接続をテストします。Cloud NAT が想定される場合は、curl -v https://example.comを試してください。
- Google Cloud Network Intelligence Center の接続テスト を実行して、サブネットから Google API や外部 IP アドレスなどの関連するエンドポイント までのネットワーク パスを診断します。
Cloud Logging でネットワーク エラーを確認する:
- Serverless for Apache Spark のワークロードまたはセッションのロギングを確認します。ネットワーク タイムアウト、接続拒否、API 呼び出しの失敗に関連する
ERRORまたはWARNINGメッセージを探します。Spark 固有のネットワークの問題については、jsonPayload.component="driver"またはjsonPayload.component="executor"でフィルタします。
- Serverless for Apache Spark のワークロードまたはセッションのロギングを確認します。ネットワーク タイムアウト、接続拒否、API 呼び出しの失敗に関連する
IAM の権限
IAM の権限が不十分な場合、ワークロードまたはセッションが リソースにアクセスできず、API 呼び出しが拒否されるとネットワーク障害が発生する可能性があります。
バッチ ワークロードまたはセッションで使用されるサービス アカウントには、必須のロールが必要です。
- Dataproc ワーカーのロール (
roles/dataproc.worker)。 - データアクセス ロール(
roles/storage.objectViewerやroles/bigquery.dataViewerなど)。 - ロギング:(
roles/logging.logWriter)。
トラブルシューティングのヒント:
- バッチ ワークロードまたはセッション サービス アカウントを特定します。 指定しない場合、デフォルトは Compute Engine のデフォルト サービス アカウントになります。
- コンソールで、 [IAM と管理] > [IAM] ページに移動し、バッチ ワークロードまたはセッションのサービス アカウントを見つけて、 ワークロード オペレーションに必要なロールがあることを確認します。 Google Cloud 不足しているロールを付与します。
外部サービスの構成
ワークロードが 外部のデータベースまたはサービスに接続する場合は、 Google Cloud その構成を確認します。
- 外部サービスのファイアウォールまたは セキュリティ グループで、VPC ネットワーク IP 範囲からの上り(内向き)接続が許可されていることを確認します。該当する場合は、VPC ピアリング、Cloud VPN、Cloud Interconnect、 Cloud NAT IP アドレスを使用して内部 IP アドレスを確認します。
- データベースの認証情報または接続文字列を確認します。接続の詳細 、ユーザー名、パスワードを確認します。
次のステップ
- Apache Spark 用 Serverless ネットワーキングについて学習する。
- Apache Spark 用 Serverless サービス アカウントを確認します。
- 一般的なネットワークのトラブルシューティング ガイドを参照する。