Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Non esiste una documentazione
Apigee Edge equivalente per questo argomento.
Sintomi
Le richieste API non riescono con TARGET_CONNECT_HOST_NOT_REACHABLE
errore.
Messaggi di errore
Se si verifica questo problema, le richieste API non andranno a buon fine e verranno visualizzati il codice di stato della risposta HTTP 503
e il seguente errore:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
Possibili cause
Sono state identificate le seguenti potenziali cause per il sintomo indicato in precedenza:
Causa | Descrizione | Piattaforma |
L'host del server di destinazione specificato non è corretto o contiene caratteri non validi | Questo problema può verificarsi nel caso in cui l'host del server di destinazione designato specificato nel proxy API non sia corretto o contenga caratteri non validi. | Apigee, Apigee ibrido |
Il peering DNS non è configurato | Questo problema potrebbe verificarsi quando Apigee non è in grado di risolvere il nome di dominio se il peering DNS non è configurato nei deployment Apigee. | Apigee |
Causa: l'host del server di destinazione specificato non è corretto o contiene caratteri non validi
Diagnosi
-
Invia una richiesta API al proxy API pertinente:
curl -ik https://dev.example.com/dns-peering-example HTTP/2 503 content-type: application/json x-request-id: *** content-length: 169 date: Thu, 02 Nov 2023 04:31:43 GMT via: 1.1 google alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
e controlla il messaggio di risposta:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
-
Se la risposta contiene il motivo dell'errore
TARGET_CONNECT_HOST_NOT_REACHABLE
, è correlato a questo motivo.
Risoluzione
- Controlla la definizione del proxy API e trova il nome host di destinazione definito:
- Se il nome host di destinazione specificato non è valido o contiene caratteri non validi, correggilo di conseguenza, crea una nuova revisione del proxy ed esegui il deployment del proxy.
Causa: il peering DNS non è configurato
Diagnosi
- Controlla se l'organizzazione Apigee è connessa in peering con una rete VPC
richiamando la seguente API Apigee:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork
Ad esempio:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Risposta:
"projects/example-org/global/networks/shared-vpc1"
Se l'organizzazione Apigee non è in peering con un VPC e utilizza Private Service Connect (PSC), questo scenario non si applica per questa organizzazione Apigee.
- Verifica con lo sviluppatore del proxy API dal lato clienti se questo nome di dominio del server di destinazione è configurato internamente. In caso contrario, questo scenario non è applicabile.
- Trova l'ID progetto e la rete in cui è ospitato l'endpoint di destinazione.
-
Elenca i peering DNS creati nella rete indicata sopra eseguendo il
comando
peered-dns-domains list
:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
Il comando precedente potrebbe restituire un risultato vuoto se non sono disponibili domini DNS in peering o elencare domini DNS in peering simili ai seguenti:
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
Se il comando precedente non riporta una voce di peering DNS per il suffisso DNS pertinente, il problema potrebbe essere dovuto a questo. Segui le istruzioni fornite nella sezione Risoluzione per risolverlo.
Risoluzione
- Prendi nota del suffisso DNS, dell'ID progetto e della rete in cui è ospitato l'endpoint di destinazione.
- Crea un dominio DNS in peering per il suffisso DNS utilizzando il comando gcloud
peered-dns-domains create
. Tieni presente che il suffisso DNS deve contenere un punto finale alla fine del suffisso DNS.gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID
Ad esempio:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Risposta:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
- Ora, invia una richiesta API all'endpoint del proxy API e verifica se il proxy API è riuscito a risolvere il nome di dominio del server di destinazione e a comunicare con il server di destinazione:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Risposta:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully
Raccogliere dati diagnostici
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni diagnostiche e contatta l'assistenza clienti Google Cloud.
- ID progetto Google Cloud
- Organizzazione Apigee
- Revisione e proxy API
- Rete in cui è stato creato il dominio privato
- Suffisso DNS del dominio privato
- L'output completo del comando di creazione del dominio DNS in peering