Looker(Google Cloud コア)のネットワーキングの問題のトラブルシューティング

Looker(Google Cloud コア)インスタンスの一般的なインバウンド接続とアウトバウンド接続の問題を診断して解決できます。Private Service Connect、プライベート サービス アクセス、制御された下り(外向き)の構成のトラブルシューティングを行うと、ID プロバイダ、外部サービス、データベース バックエンドへの接続を復元できます。

制御された下り(外向き)での OpenID Connect 認証の失敗

Private Service Connect で構成され、制御された下り(外向き)が有効になっている Looker(Google Cloud コア)インスタンスで OpenID Connect 認証を設定すると、認証が失敗する可能性があります。

現象

認証に失敗した場合、次のいずれかの現象が発生することがあります。

  • Looker /openidconnect エンドポイントがブラウザで約 60 秒間ハングし、エラーが表示されるか、504 Upstream Request Timeout または 504 Gateway Timeout エラーでタイムアウトします。
  • ID プロバイダに、次のようにリダイレクト URI が一致しないことを示すエラー メッセージが表示されます。

    AADSTS50011: The redirect URI specified in the request does not match the
    redirect URIs configured for the application
    

    このエラー メッセージは誤解を招く可能性があります。ID プロバイダで構成したリダイレクト URI が正しい場合があるためです。実際の障害は、バックエンド交換中に Looker(Google Cloud コア)が ID プロバイダのトークン エンドポイントに接続できない場合に発生します。

原因

制御された下り(外向き)の自動プロビジョニング ワークフローで、Looker(Google Cloud コア)テナント プロジェクトに必要な Secure Web Proxy ネットワーク ルート(looker-swp-route)が作成されないことがあります。

このルートがない場合、インスタンスは Secure Web Proxy を介してアウトバウンド トラフィックを公共インターネットにルーティングできないため、Looker(Google Cloud コア)から ID プロバイダのトークン エンドポイントへのバックエンド リクエストがタイムアウトします。

解決策

この問題を解決するには、次の手順に沿って制御された下り(外向き)構成をリセットし、システムに欠落しているネットワーク ルートの再作成を強制します。

  1. Google Cloud コンソールで、[Looker] ページに移動します。

    Looker に移動

  2. 更新するインスタンスの名前をクリックします。

  3. [編集] をクリックします。

  4. [接続] セクションを開き、[アウトバウンド接続を構成する] セクションに移動します。

  5. [グローバル FQDN] セクションにリストされている既存の完全修飾ドメイン名(FQDN)(ID プロバイダのエンドポイントなど)をすべて記録します。

  6. [グローバル FQDN] セクションに表示されているすべての FQDN を削除します。

  7. [Looker が外部サービスに接続できるようにする] チェックボックスをオフにして、制御された下り(外向き)を無効にします。

  8. [保存] をクリックします。

  9. インスタンスの更新が完了し、構成の変更がクリアされるまで待ちます。

  10. [編集] をもう一度クリックします。

  11. [接続] セクションを開き、[Looker が外部サービスに接続できるようにする] チェックボックスをオンにします。

  12. [グローバル FQDN] セクションで、ID プロバイダと他の外部サービスに必要な FQDN を再度追加します。

  13. [保存] をクリックします。

制御された下り(外向き)をリセットすると、自動プロビジョニング プロセスがトリガーされ、欠落している looker-swp-route ネットワーク ルートが再作成されます。ルートが作成されると、ID プロバイダへのアウトバウンド バックエンド リクエストを完了できます。

504 Upstream Request Timeout エラー

Looker(Google Cloud コア)インスタンスで API 呼び出しを行う場合、長時間実行クエリを実行する場合、または外部サービスで認証を行う場合、リクエストが失敗し、HTTP 504 タイムアウト エラーが発生することがあります。

現象

次のいずれかのシナリオで、504 Upstream Request Timeout エラーまたは 504 Gateway Timeout エラーが発生することがあります。

  • インバウンド API 呼び出しまたはクエリ: /result_format などの Looker エンドポイントへの API 呼び出し、または Looker UI の長時間実行クエリは、ロードバランサでフロントエンド処理されるインスタンスで約 30 秒後に 504 エラーで失敗します。
  • アウトバウンド認証または外部サービス接続: ID プロバイダのログイン ページから戻った後、または制御された下り(外向き)が有効になっているインスタンスで外部サービスに接続するときに、ブラウザで 504 エラーが発生します。

原因

504 タイムアウト エラーは通常、次のいずれかの理由で発生します。

  • インバウンド リクエストのロードバランサ バックエンド サービスのタイムアウト: Looker(Google Cloud コア)インスタンスに Cloud Load Balancing ロードバランサを介してアクセスする場合、ロードバランサのバックエンド サービスのデフォルトのバックエンド サービスのタイムアウトは 30 秒です。データベース クエリの実行時間と Looker ペイロードのレンダリング時間の合計がこのタイムアウトの上限を超えると、ロードバランサは接続を閉じ、HTTP 504 エラーを返します。
  • 制御された下り(外向き)でブロックされたアウトバウンド ドメイン: Looker(Google Cloud コア)インスタンスは、制御された下り(外向き)を介して外部ドメインに到達できません。ルートが見つからないエラーとは異なり、アウトバウンド リクエスト中の 504 エラーは通常、ネットワーク パスは存在するものの、必要なドメインがグローバル FQDN 許可リストにないためブロックされているか、リクエストがゲートウェイでタイムアウトしていることを意味します。

解決策

エラーの原因に応じて、次のセクションの手順を完了して問題を解決します。

API 呼び出しまたはクエリでのロードバランサのタイムアウトを解決する

ロードバランサ バックエンド サービスのタイムアウトが原因で発生した 504 エラーを解決するには、次のいずれかまたは両方の方法を使用します。

  • ロードバランサのバックエンド サービスのタイムアウトを増やす:

    1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

      [ロード バランシング] に移動

    2. [バックエンド] をクリックし、Looker(Google Cloud コア)インスタンスに関連付けられているバックエンド サービスの名前をクリックします。

    3. [編集] をクリックします。

    4. [Timeout] フィールドで、最も実行時間の長いクエリと API リクエストに対応できるように、タイムアウト値を 30 秒から 300 秒などに増やします。

    5. [保存] をクリックします。

  • 非同期 API ワークフローを使用する: Looker API を呼び出してクエリデータを取得し、ロードバランサのタイムアウトを変更できない場合は、同期リクエストの代わりに非同期エンドポイントを使用します。create_query_task を呼び出してクエリを非同期で開始し、query_task_results をポーリングして、クエリの完了後に結果を取得します。

制御された外向きのタイムアウトを解決する

Looker(Google Cloud コア)が制御された下り(外向き)が有効になっている外部サービスまたは ID プロバイダに接続できない場合に発生する 504 エラーを解決するには、次の操作を行います。

  1. 必要な FQDN を確認する: Google Cloud コンソールで、外部サービスまたは ID プロバイダに必要なすべてのドメインがグローバル FQDN リストに追加されていることを確認します。OIDC 認証フローでは、異なるドメインを使用する可能性のある複数のエンドポイント(認可、トークン、ユーザー情報のエンドポイントなど)が必要になることがよくあります。
  2. ネットワーク トレースをキャプチャする: エラーが解決しない場合は、問題を再現しながらブラウザのネットワーク トレース(HAR ファイル)をキャプチャします。トレースで 504 ステータス コードまたは失敗した HTTP リクエストを検索して、フロー中にアクセスされたが、グローバル FQDN リストに含まれていないドメインを特定します。
  3. 構成をリセットする: 必要な FQDN が存在してもリクエストがタイムアウトし続ける場合は、OpenID Connect 認証の失敗に関する解決策の手順に沿って、制御された下り(外向き)構成をリセットします。

HttpClient:ConnectTimeoutError の実行が期限切れ

Looker 管理パネルで OpenID Connect 接続やその他の外部ネットワーク接続をテストすると、接続テストがタイムアウト エラーで失敗することがあります。

現象

Looker 管理パネル([OpenID Connect 認証] ページなど)で接続テストを実行すると、Looker から次のエラーが返されます。

HttpClient:ConnectTimeoutError execution expired

原因

このエラーは、Looker(Google Cloud コア)インスタンスに、外部サービスまたは ID プロバイダとの通信に必要なネットワーク パスがないことを示しています。この問題は通常、次のいずれかの条件が満たされている場合に発生します。

  • ルート伝播の欠落: Cloud Router がデフォルト設定を使用しており、VPC ネットワーク ルート(カスタム アドバタイズ ルートなど)を Looker(Google Cloud コア)インスタンスに伝播していません。
  • インターネット NEG がない: 外部サービスにトラフィックを転送するように インターネット ネットワーク エンドポイント グループ(NEG)が VPC ネットワークで構成されていません。

解決策

この問題を解決する方法は次のとおりです。

  1. Cloud Router のルート伝播を構成する: カスタム アドバタイズ ルートを設定して、必要な VPC ネットワーク ルートを Looker(Google Cloud コア)インスタンスに伝播するように Cloud Router が構成されていることを確認します。
  2. インターネット NEG を構成する: VPC ネットワークにインターネット NEG を設定して、Looker(Google Cloud コア)インスタンスが外部 ID プロバイダまたはサービスに下り(外向き)トラフィックをルーティングできるようにします。
  3. プライベート サービス アクセスを確認する: プライベート サービス アクセスを使用するインスタンスの場合は、VPC ネットワークが Google サービスと適切にピアリングされていることを確認します。詳細については、プライベート サービス アクセスを使用して外部サービスにアクセスするをご覧ください。

サウスバウンド Private Service Connect 接続に関する問題

データベース バックエンドまたは公開サービスへのアウトバウンド接続に Private Service Connect を使用する Looker(Google Cloud コア)インスタンスでは、エンドポイントのステータスが Accepted であっても接続エラーが発生することがあります。

一般的な問題は次のとおりです。

  • ホスト名の解決エラー: 接続のテスト時に Looker(Google Cloud コア)に Unknown host エラーが表示された場合は、構成されたホスト名がプライベート ネットワークの DNS レコードと一致し、バックエンド ロードバランサが正常であることを確認します。
  • 接続のタイムアウト: 接続がタイムアウトした場合は、VPC ファイアウォール ルールを確認して、Private Service Connect NAT サブネットからロードバランサのバックエンドへの上り(内向き)トラフィックが許可されていることを確認します。
  • ステータスが [保留中] または [クローズ] の場合: サービス アタッチメントのステータスが Pending または Closed の場合は、コンシューマー プロジェクトがサービス アタッチメントの許可リストに含まれており、必須の TCP ヘルスチェックが構成されていることを確認します。

詳細な診断ワークフローとデシジョン ツリーについては、サウスバウンドの Private Service Connect 接続のトラブルシューティングをご覧ください。

プライベート サービス アクセスのルートと接続の問題

プライベート サービス アクセスを使用する Looker(Google Cloud コア)インスタンスの場合、外部サービスへのアウトバウンド通信には、適切なルート伝播とネットワーク インフラストラクチャが必要です。

  • ルートの伝播: カスタム アドバタイズ ルートなど、VPC ネットワーク ルートを Looker(Google Cloud コア)インスタンスに伝播するように Cloud Router が構成されていることを確認します。
  • インターネット ネットワーク エンドポイント グループ: インスタンスがプライベート サービス アクセスを介して外部エンドポイントに到達する必要がある場合は、VPC ネットワークにインターネット ネットワーク エンドポイント グループ(NEG)が構成されていることを確認します。

これらのルートまたはエンドポイント グループがない場合、外部エンドポイントへの接続テストは HttpClient:ConnectTimeoutError execution expired エラーで失敗します。

詳細については、プライベート サービス アクセスを使用して外部サービスにアクセスするをご覧ください。

診断ツールとログ

次のツールとログを使用して、ネットワークの問題を診断します。

  • Cloud Logging: Cloud Logging でインスタンスレベルのログを表示して、接続障害とシステム イベントを特定します。詳細については、インスタンスのログを表示するをご覧ください。
  • Looker システム アクティビティ: 管理者としてログインできる場合は、システム アクティビティの [ユーザー アクティビティ] ダッシュボードを確認します。このダッシュボードには、最近のログイン失敗、使用された認証方法、エラー メッセージが表示されます。詳細については、ユーザー アクティビティ ダッシュボードをご覧ください。
  • VPC フローログ: VPC フローログを調べて、Looker(Google Cloud コア)からのネットワーク トラフィックが宛先サブネットに到達しているか、ファイアウォール ルールによってブロックされているかを確認します。
  • Cloud カスタマーケア: トラブルシューティングの手順を完了しても問題が解決しない場合は、Cloud カスタマーケアにお問い合わせください。