Questa pagina fornisce istruzioni passo passo per aiutarti a risolvere i problemi di configurazione del connettore on-premise di IAP. Per ulteriori informazioni sulla risoluzione dei problemi, consulta Debug di Cloud Service Mesh.
Risoluzione dei problemi relativi all'errore 500
Di seguito sono riportati vari problemi e possibili soluzioni per aiutarti a risolvere un errore 500 che ricevi quando tenti di accedere alla tua applicazione.
L'applicazione on-premise non è connessa alla rete Google Cloud
La tua applicazione on-premise potrebbe non essere connessa alla reteGoogle Cloud . Verifica la connettività inviando un ping all'applicazione on-premise da una delle istanze Compute Engine del connettore on-premise. Se l'endpoint del connettore on-premise non è raggiungibile, esegui il debug della connettività e delle impostazioni di rete prima di continuare.
Envoy non è installato correttamente nelle VM
Completa i seguenti passaggi per verificare che Envoy sia installato correttamente:
Accedi a una delle VM di Compute Engine dal connettore on-premise. Il nome della VM del connettore on-premise inizia con
opc-on-prem-app-deployment-ig-${app}.Nella console Cloud, verifica che i controlli di integrità del servizio di backend di bilanciamento del carico
opc-on-prem-app-deployment-gclb-urlmapsiano verdi.Se il servizio di backend non risulta integro, accedi tramite SSH a una delle istanze:
gcloud compute ssh INSTANCE_NAME --zone=ZONE_NAME
Verifica che Envoy sia attivo e in esecuzione eseguendo questo comando:
ps aux | grep envoy
Dovrebbe essere in esecuzione più di un processo, oltre a
grep envoy.Esempio di output:
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 60Verifica che la directory dei log di Envoy sia stata creata in
/var/log/envoy/.Assicurati che il bucket gce-mesh sia raggiungibile dalle VM eseguendo il seguente comando:
gcloud storage cp gs://gce-mesh/service-proxy-agent/releases/service-proxy-agent-0.2.tgz .
Se una delle convalide in questo passaggio non è andata a buon fine, Envoy non è installato correttamente. Per ulteriori informazioni, esamina i log di avvio all'indirizzo /var/log/daemon.log.
Se hai osservato che Envoy non è in esecuzione nei passaggi precedenti, uno dei motivi potrebbe essere Controlli di servizio VPC. Lo script di avvio nelle VM scarica l'immagine Envoy dal bucket gce-mesh. Se le regole dei Controlli di servizio VPC non consentono la connessione, il deployment del connettore on-premise non funzionerà.
Per assicurarti che Envoy venga installato correttamente, consenti l'accesso al bucket di archiviazione gce-mesh nei Controlli di servizio VPC nel progetto host. Inoltre, assicurati che il VPC abbia una regola di instradamento per consentire il traffico verso la rete internet pubblica. In questo modo è possibile eseguire il deployment di Envoy.
Per saperne di più, consulta Regole in entrata e in uscita.
L'applicazione on-premise non è connessa a Envoy
Se riesci a inviare un ping all'applicazione on-premise dalla VM, ma non riesci a utilizzare il connettore on-premise, è possibile che Envoy non riesca a connettersi all'applicazione.
Per verificare che Envoy possa connettersi alla tua applicazione on-premise, prova a effettuare una chiamata a Envoy dalla macchina su cui è in esecuzione. Utilizzando SSH, connettiti alla VM opc-on-prem-app-deployment-ig-${app} ed esegui il seguente comando. Puoi trovare il numero di porta Envoy in Gruppi di istanze > Dettagli > Mappatura dei nomi delle porte.
curl -x -v localhost:${envoy_port}Se l'endpoint non è raggiungibile, controlla quanto segue:
/var/log/envoy/envoy.err.logper eventuali log degli errori. Se non sono presenti log degli errori, controlla se Cloud Service Mesh è abilitato e in grado di configurare Envoy eseguendo il seguente comando:sudo curl 0.0.0.0:15000/config_dump
Verifica che la variabile
TRAFFICDIRECTOR_INTERCEPTION_LISTENERsia impostata. SeTRAFFICDIRECTOR_INTERCEPTION_LISTENERnon è impostato, Cloud Service Mesh non ha potuto configurare Envoy.Controlla se sono presenti messaggi di errore in ogni listener.
Le autorizzazioni dell'account Envoy e Cloud Service Mesh non sono impostate
Se visualizzi l'errore GRPC 403 in envoy.err.log o se non vedi TRAFFICDIRECTOR_INTERCEPTION_LISTENER nella configurazione di Envoy, è possibile che tu non disponga delle autorizzazioni corrette per l'account.
Verifica che il account di servizio della VM disponga delle autorizzazioni di accesso TD per xDS v3:
Verifica le autorizzazioni: Preparati a configurare Cloud Service Mesh con Envoy
Verifica l'account: abilita il service account
Risoluzione degli errori ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Se il browser mostra l'errore ERR_SSL_VERSION_OR_CIPHER_MISMATCH senza reindirizzare alla pagina di accesso, verifica lo stato dei certificati nella pagina dei dettagli del bilanciatore del caricoGoogle Cloud .
Tieni presente che il provisioning di un certificato gestito da Google potrebbe richiedere fino a 60 minuti.
Risoluzione dei problemi di installazione di Envoy
Se il connettore on-premise è stato distribuito correttamente e il certificato è stato eseguito il provisioning, ma la connessione continua a non riuscire, è possibile che Envoy non sia installato correttamente sulle VM.
Per verificare se Envoy è installato, connettiti tramite SSH a una delle VM ed esegui questo comando:
Verifica che Envoy sia in esecuzione:
ps aux | grep envoy
Dovrebbe essere in esecuzione più di un processo, oltre a
grep envoy.Verifica che la porta di amministrazione di Envoy sia in ascolto:
netstat -tlpn
La porta di amministrazione di Envoy
127.0.0.1:15000dovrebbe essere in ascolto.
Se una delle azioni precedenti non va a buon fine, esegui le seguenti azioni per mitigare il problema:
Assicurati che l'accesso privato Google sia abilitato nella subnet in cui viene eseguito il deployment del connettore.
Assicurati che VM Manager (API OS Config) sia abilitato.
Risoluzione dei problemi di deployment delle risorse IamMemberBinding
Se il connettore on-premise viene distribuito o aggiornato e si verifica un errore PERMISSION_DENIED relativo alle risorse IamMemberBinding, potrebbe essere perché al service account Google APIs Service Agent non è stato concesso il ruolo OWNER come richiesto quando si attiva IAP per le app on-premise.
Esempi di errori di deployment:
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"}}
Se visualizzi questi errori con il deployment, verifica che al service account Google APIs Service Agent sia stato concesso il ruolo OWNER e riprova.