オンプレミス コネクタ設定のトラブルシューティング

このページでは、IAP オンプレミス コネクタ構成に関するトラブルシューティングの手順について詳しく説明します。その他のトラブルシューティング情報については、Traffic Director のデバッグをご覧ください。

エラー 500 の問題のトラブルシューティング

ここでは、さまざまな問題と、アプリケーションへのアクセス時に発生する 500 エラーの解決に役立つ解決策を説明します。

オンプレミス アプリケーションが Google Cloud ネットワークに接続されていない

オンプレミス アプリケーションが Google Cloud ネットワークに接続されていない可能性があります。いずれかのオンプレミス コネクタ Compute Engine インスタンスからオンプレミス アプリケーションに ping を実行して、接続を確認します。オンプレミス コネクタ エンドポイントにアクセスできない場合は、続行する前にネットワーク接続と設定をデバッグしてください。

Envoy が VM に正しくインストールされていない

Envoy が適切にインストールされていることを確認するには、次の手順を行います。

  1. オンプレミス コネクタからいずれかの Compute Engine VM にログインします。オンプレミス コネクタ VM 名は opc-on-prem-app-deployment-ig-${app} で始まります。
  2. Cloud Console で、opc-on-prem-app-deployment-gclb-urlmap 負荷分散バックエンド サービスのヘルスチェックが緑色であることを確認します。
  3. バックエンド サービスが正常でない場合は、SSH を使用していずれかのインスタンスに接続します。
     gcloud compute ssh instance-name --zone=zone name
  4. 次のコマンドを実行して、Envoy が稼働していることを確認します。

     ps aux | grep envoy
    
    grep envoy 以外の複数のプロセスが実行されている必要があります。

    出力例:

    envoy      943  0.0  0.0   5488  3076 ?        Ss   06:25   0:00 /bin/bash /usr/local/bin/run-proxy.sh
    envoy      944  0.1  1.5 178928 57352 ?        Sl   06:25   1:23 /usr/local/bin/envoy --config-path /usr/local/etc/
    envoy/envoy-proxy-bootstrap.json --allow-unknown-static-fields --disable-hot-restart --log-level info --drain-time-
    s 60
    
  5. Envoy ログ ディレクトリが /var/log/envoy/ に作成されていることを確認します。

  6. 次のコマンドを実行して、VM から gce-mesh バケットにアクセスできるようにします。

    gcloud storage cp gs://gce-mesh/service-proxy-agent/releases/service-proxy-agent-0.2.tgz .

この手順でいずれかの検証で不合格だった場合、Envoy は正しくインストールされていません。 詳細については、/var/log/daemon.log の起動ログをご覧ください。

Envoy が前の手順で実行されていない場合は、1 つの理由が VPC Service Controls である可能性があります。VM の起動スクリプトで gce-mesh バケットから Envoy イメージをダウンロードします。VPC Service Controls ルールで接続が許可されなければ、オンプレミス コネクタのデプロイは機能しません。

Envoy が正しくインストールされるようにするには、ホスト プロジェクトの VPC Service Controls で gce-mesh ストレージ バケットへのアクセスを許可します。また、VPC に公共のインターネット向けのトラフィックを許可するルーティング ルールがあることを確認してください。これにより、Envoy をデプロイできます。詳細については、上り(内向き)と下り(外向き)のルールをご覧ください。

オンプレミス アプリケーションが Envoy に接続されていない

VM からオンプレミス アプリケーションに ping を実行できるにもかかわらず、オンプレミス コネクタを使用できない場合は、Envoy がアプリケーションに接続できていない可能性があります。

Envoy がオンプレミス アプリケーションに接続できることを確認するには、Envoy が実行されているマシンから Envoy を呼び出してみます。VM opc-on-prem-app-deployment-ig-${app} で SSH を起動して次のコマンドを実行します。Envoy のポート番号は、[インスタンス グループ] > [詳細] > [ポート名のマッピング] で確認できます。

shell curl -x -v localhost:${envoy_port}

エンドポイントにアクセスできない場合は、次の点を確認してください。

  • /var/log/envoy/envoy.err.log(エラーログの場合)。エラーログがない場合は、次のコマンドを実行して、Traffic Director が有効になっていて Envoy を構成できるかどうかを確認します。
    sudo curl 0.0.0.0:15000/config_dump 
  • TRAFFICDIRECTOR_INTERCEPTION_LISTENER が設定されていることを確認します。TRAFFICDIRECTOR_INTERCEPTION_LISTENER が設定されていない場合、Traffic Director で Envoy を構成できません。
  • 各リスナーのエラー メッセージを確認します。

Envoy と Traffic Director のアカウント権限が設定されていない

envoy.err.logGRPC 403 エラーが表示される場合、または Envoy 構成に TRAFFICDIRECTOR_INTERCEPTION_LISTENER が表示されない場合は、正しいアカウント権限が設定されていない可能性があります。

VM サービス アカウントに xDS v3TD アクセス権限があることを確認します。

  • 権限の確認: https://cloud.google.com/traffic-director/docs/prepare-for-envoy-setup#grant
  • アカウントの確認: https://cloud.google.com/traffic-director/docs/prepare-for-envoy-setup#enable-service

ERR_SSL_VERSION_OR_CIPHER_MISMATCH エラーのトラブルシューティング

ログインページにリダイレクトせずにブラウザにエラー ERR_SSL_VERSION_OR_CIPHER_MISMATCH が表示される場合は、Google Cloud ロードバランサの詳細ページで証明書のステータスを確認します。

Google マネージド証明書のプロビジョニングには最長で 60 分かかります。

Envoy のインストールに関する問題のトラブルシューティング

オンプレミス コネクタが正常にデプロイされ、証明書がプロビジョニングされているにもかかわらず、接続が失敗する場合は、Envoy が VM に正しくインストールされていない可能性があることを示しています。

Envoy がインストールされているかどうかを確認するには、いずれかの VM に SSH で接続し、次のコマンドを実行します。

  •  ps aux | grep envoy 
    grep envoy 以外の複数のプロセスが実行されている必要があります。
  •  netstat -tlpn 
    Envoy 管理ポート 127.0.0.1:15000 がリッスンしている必要があります。

前のアクションのいずれかが失敗した場合は、次の操作を行って問題を緩和します。

  1. コネクタがデプロイされているサブネットで限定公開の Google アクセスが有効になっていることを確認します。
  2. VM Manager(OS Config API)が有効になっていることを確認します。

IamMemberBinding リソースのデプロイ失敗のトラブルシューティング

オンプレミス コネクタがデプロイまたは更新され、IamMemberBinding リソースに関連する PERMISSION_DENIED エラーが発生した場合、オンプレミス アプリで IAP を有効にするときに、Google APIs Service Agent サービス アカウントに必要に応じて OWNER ロールが付与されていない可能性があります。

デプロイエラーの例:

bind-iam-policy: {"ResourceType":"gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Policy update access denied.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/<project-ID>:setIamPolicy","httpMethod":"POST"}}
bind-storage-admin-account-iam-policy: {"ResourceType":"gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Policy update access denied.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/<project-ID>:setIamPolicy","httpMethod":"POST"}}

デプロイでこれらのエラーが表示された場合は、Google APIs Service Agent サービス アカウントに OWNER ロールが付与されていることを確認して、再試行してください。