このページでは、IAP オンプレミス コネクタ構成に関するトラブルシューティングの手順について詳しく説明します。その他のトラブルシューティング情報については、Traffic Director のデバッグをご覧ください。
エラー 500 の問題のトラブルシューティング
ここでは、さまざまな問題と、アプリケーションへのアクセス時に発生する 500 エラーの解決に役立つ解決策を説明します。
オンプレミス アプリケーションが Google Cloud ネットワークに接続されていない
オンプレミス アプリケーションが Google Cloud ネットワークに接続されていない可能性があります。いずれかのオンプレミス コネクタ Compute Engine インスタンスからオンプレミス アプリケーションに ping を実行して、接続を確認します。オンプレミス コネクタ エンドポイントにアクセスできない場合は、続行する前にネットワーク接続と設定をデバッグしてください。
Envoy が VM に正しくインストールされていない
Envoy が適切にインストールされていることを確認するには、次の手順を行います。
- オンプレミス コネクタからいずれかの Compute Engine VM にログインします。オンプレミス コネクタ VM 名は
opc-on-prem-app-deployment-ig-${app}
で始まります。 - Cloud Console で、
opc-on-prem-app-deployment-gclb-urlmap
負荷分散バックエンド サービスのヘルスチェックが緑色であることを確認します。 - バックエンド サービスが正常でない場合は、SSH を使用していずれかのインスタンスに接続します。
gcloud compute ssh instance-name --zone=zone name
次のコマンドを実行して、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
Envoy ログ ディレクトリが
/var/log/envoy/
に作成されていることを確認します。次のコマンドを実行して、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.log
に GRPC 403
エラーが表示される場合、または Envoy 構成に TRAFFICDIRECTOR_INTERCEPTION_LISTENER
が表示されない場合は、正しいアカウント権限が設定されていない可能性があります。
VM サービス アカウントに xDS v3
の TD
アクセス権限があることを確認します。
- 権限の確認: 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
以外の複数のプロセスが実行されている必要があります。 Envoy 管理ポート 127.0.0.1:15000 がリッスンしている必要があります。netstat -tlpn
前のアクションのいずれかが失敗した場合は、次の操作を行って問題を緩和します。
- コネクタがデプロイされているサブネットで限定公開の Google アクセスが有効になっていることを確認します。
- 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
ロールが付与されていることを確認して、再試行してください。