Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Für dieses Thema gibt es keine entsprechende Apigee Edge-Dokumentation.
Symptome
API-Anfragen schlagen mit dem Fehler TARGET_CONNECT_HOST_NOT_REACHABLE
fehl.
Fehlermeldungen
Wenn dieses Problem auftritt, schlagen die API-Anfragen mit dem Antwortstatuscode HTTP 503
und dem folgenden Fehler fehl:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
Mögliche Ursachen
Für die oben genannten Zwecke wurden folgende mögliche Ursachen ermittelt: Symptom:
Ursache | Beschreibung | Plattform |
Der angegebene Zielserverhost ist falsch oder enthält ungültige Zeichen | Dieses Problem kann auftreten, wenn der im API-Proxy angegebene Zielserverhost entweder falsch ist oder ungültige Zeichen enthält. | Apigee, Apigee Hybrid |
DNS-Peering ist nicht konfiguriert | Dieses Problem kann auftreten, wenn Apigee die Domain nicht auflösen kann Name, wenn DNS-Peering in Apigee-Bereitstellungen nicht konfiguriert ist. | Apigee |
Ursache: Der angegebene Zielserverhost ist falsch oder enthält ungültige Zeichen
Diagnose
-
Senden Sie eine API-Anfrage an den entsprechenden API-Proxy:
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
und prüfen Sie die Antwortnachricht:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
-
Wenn die Antwort die Fehlerursache
TARGET_CONNECT_HOST_NOT_REACHABLE
enthält, hängt dies mit diesem Grund zusammen.
Lösung
- Prüfen Sie die API-Proxy-Definition und ermitteln Sie den definierten Zielhostnamen:
- Wenn der angegebene Zielhostname ungültig ist oder ungültige Zeichen enthält, korrigieren Sie den Fehler entsprechend, erstellen Sie eine neue Überarbeitung des Proxys und stellen Sie den Proxy bereit.
Ursache: DNS-Peering ist nicht konfiguriert
Diagnose
- Prüfen Sie, ob die Apigee-Organisation mit einem VPC-Netzwerk gepeert ist, indem Sie die folgende Apigee API aufrufen:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork
Beispiel:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Antwort:
"projects/example-org/global/networks/shared-vpc1"
Wenn die Apigee-Organisation nicht mit einer VPC verbunden ist und Private Service Connect (PSC) verwendet, gilt dieses Szenario nicht für diese Apigee-Organisation.
- Erkundigen Sie sich beim API-Proxy-Entwickler auf Kundenseite, ob dieser Zielserver-Domainname intern konfiguriert ist. Wenn nicht, gilt dieses Szenario nicht.
- Ermitteln Sie die Projekt-ID und das Netzwerk, in dem der Zielendpunkt gehostet wird.
-
Listen Sie die im obigen Netzwerk erstellten DNS-Peerings mit dem Befehl
peered-dns-domains list
auf:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
Der obige Befehl kann entweder ein leeres Ergebnis zurückgeben, wenn keine Peered-DNS-Domains verfügbar sind, oder eine Liste von Peered-DNS-Domains wie die folgende:
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
Wird mit dem obigen Befehl kein DNS-Peering-Eintrag für das entsprechende DNS-Suffix aufgelistet, könnte das der Grund für das Problem sein. Folgen Sie der Anleitung unter Lösung, um das Problem zu beheben.
Lösung
- Notieren Sie sich das DNS-Suffix, die Projekt-ID und das Netzwerk, in dem der Zielendpunkt gehostet wird.
- Erstellen Sie eine Peering-DNS-Domain für das DNS-Suffix mithilfe des
peered-dns-domains create
-gcloud-Befehls. Beachten Sie, dass das DNS-Suffix einen abschließenden Punkt am Ende des DNS-Suffixes enthalten muss.gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID
Beispiel:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Antwort:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
- Senden Sie nun eine API-Anfrage an den API-Proxy-Endpunkt und prüfen Sie, ob der API-Proxy den Domainnamen des Zielservers auflösen und mit dem Zielserver kommunizieren kann:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Antwort:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an den Google Cloud Customer Care:
- Google Cloud-Projekt-ID
- Apigee-Organisation
- API-Proxy und -Überarbeitung
- Netzwerk, in dem die private Domain erstellt wird
- DNS-Suffix der privaten Domain
- Die vollständige Ausgabe des Befehls zum Erstellen der DNS-Domain über Peering