API-Anfragen schlagen mit dem Fehler TARGET_CONNECT_HOST_NOT_REACHABLE fehl

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

  1. 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"}}}
  2. Wenn die Antwort die Fehlerursache TARGET_CONNECT_HOST_NOT_REACHABLE enthält, hängt dies mit diesem Grund zusammen.

Lösung

  1. Prüfen Sie die API-Proxy-Definition und ermitteln Sie den definierten Zielhostnamen:
  2. 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

  1. 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.

  2. Erkundigen Sie sich beim API-Proxy-Entwickler auf Kundenseite, ob dieser Zielserver-Domainname intern konfiguriert ist. Wenn nicht, gilt dieses Szenario nicht.
  3. Ermitteln Sie die Projekt-ID und das Netzwerk, in dem der Zielendpunkt gehostet wird.
  4. 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

  1. Notieren Sie sich das DNS-Suffix, die Projekt-ID und das Netzwerk, in dem der Zielendpunkt gehostet wird.
  2. 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.
  3. 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:

  1. Google Cloud-Projekt-ID
  2. Apigee-Organisation
  3. API-Proxy und -Überarbeitung
  4. Netzwerk, in dem die private Domain erstellt wird
  5. DNS-Suffix der privaten Domain
  6. Die vollständige Ausgabe des Befehls zum Erstellen der DNS-Domain über Peering