Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Non esiste una documentazione
Apigee Edge equivalente per questo argomento.
Sintomi
Le richieste API non vanno a buon fine e generano l'errore TARGET_CONNECT_HOST_NOT_REACHABLE.
Messaggi di errore
Se si verifica questo problema, le richieste API non andranno a buon fine e verrà restituito 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 del sintomo sopra menzionato:
| Causa | Descrizione | Piattaforma |
| L'host del server di destinazione specificato è errato o contiene caratteri non validi | Questo problema potrebbe verificarsi se l'host del server di destinazione designato specificato all'interno del proxy API è errato o contiene caratteri non validi. | Apigee, Apigee hybrid |
| Il peering DNS non è configurato | Questo problema può verificarsi quando Apigee non è in grado di risolvere il nome di dominio se il peering DNS non è configurato nelle implementazioni di 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, allora è 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 e implementalo.
Causa: il peering DNS non è configurato
Diagnosi
- Verifica se l'organizzazione Apigee è 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, per determinare se il peering VPC è abilitato, controlla se l'attributo di risposta
authorizedNetworkè presente e impostato su un valore. In caso contrario, il peering VPC non è abilitato:TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Questa risposta di esempio indica che il peering VPC è abilitato:
"projects/example-org/global/networks/shared-vpc1"
- Verifica con lo sviluppatore del proxy API dal lato cliente se questo nome di dominio del server di destinazione è configurato internamente. In caso contrario, questo scenario non si applica.
- Trova l'ID progetto e la rete in cui è ospitato l'endpoint di destinazione.
Elenca i peering DNS creati nella rete precedente. Segui i passaggi riportati di seguito a seconda che l'organizzazione Apigee sia in peering con una rete VPC o meno.
Peering VPC abilitato
Se la tua organizzazione ha abilitato il peering VPC, utilizza il comando
peered-dns-domains list:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
Il risultato potrebbe essere vuoto se non sono disponibili domini DNS con peering o elencare i domini DNS con peering. Ad esempio:
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
Peering VPC non abilitato
Se la tua organizzazione non ha attivato il peering VPC, utilizza la seguente API Apigee:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones"
Dove
ORGANIZATIONè il nome della tua organizzazione Apigee.Risposta di esempio, in cui il nome dell'organizzazione è
dns-peering-int-4:{ "dnsZones": [ { "name": "organizations/dns-peering-int-4/dnsZones/demo", "description": "latest", "domain": "demo.com", "peeringConfig": { "targetProjectId": "dns-peering-int-4", "targetNetworkId": "default" }, "state": "ACTIVE" }, { "name": "organizations/dns-peering-int-4/dnsZones/dns-peering-int-4", "description": "latest", "domain": "dns-peering-int-4.com", "peeringConfig": { "targetProjectId": "dns-peering-int-4", "targetNetworkId": "default" }, "state": "ACTIVE" } ] }Se la risposta non include una voce di peering DNS per il suffisso DNS pertinente, potrebbe essere questo il motivo del problema. Segui le istruzioni fornite nella Risoluzione per risolvere il problema.
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.
Peering VPC abilitato
Se il peering VPC è abilitato nella tua organizzazione, utilizza il comando
peered-dns-domains creategcloud. Tieni presente che il suffisso DNS deve contenere un punto finale: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.
Peering VPC non abilitato
Se il peering VPC non è abilitato per la tua organizzazione, crea una zona di peering DNS con la zona DNS privata nel tuo progetto:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones?dnsZoneId=DNS_ZONE_ID" \ -d '{ "domain": "DOMAIN", "description": "DESCRIPTION", "peeringConfig": { "targetProjectId": "PRODUCER_PROJECT_ID", "targetNetworkId": "PRODUCER_VPC_NETWORK" } }'Dove:
ORGANIZATIONè il nome della tua organizzazione Apigee.DNS_ZONE_IDè il nome della zona DNS che vuoi creare.DOMAINè il nome DNS di questa zona gestita, ad esempioexample.com.DESCRIPTIONè una breve descrizione della zona DNS. Caratteri massimi: 1024PRODUCER_PROJECT_IDè il progetto che contiene la rete VPC producer.PRODUCER_VPC_NETWORKè la rete VPC nel progetto cliente.
- Ora invia una richiesta API all'endpoint del proxy API e verifica se il proxy API è in grado di risolvere il nome di dominio del server di destinazione e comunicare con il server di destinazione.
Deve raccogliere informazioni diagnostiche
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 progettoGoogle Cloud
- Organizzazione Apigee
- Proxy API e revisione
- Rete in cui viene creato il dominio privato
- Suffisso DNS del dominio privato
- L'output completo del comando di creazione del dominio DNS in peering