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
Die folgenden potenziellen Ursachen wurden für das oben genannte Symptom ermittelt:
| Ursache | Beschreibung | Plattform |
| Der angegebene Zielserverhost ist falsch oder enthält ungültige Zeichen. | Dieses Problem kann auftreten, wenn der im API-Proxy angegebene Host des Zielservers falsch ist oder ungültige Zeichen enthält. | Apigee, Apigee Hybrid |
| DNS-Peering ist nicht konfiguriert | Dieses Problem kann auftreten, wenn Apigee den Domainnamen nicht auflösen kann, weil in Apigee-Bereitstellungen kein DNS-Peering 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 den Fehlergrund
TARGET_CONNECT_HOST_NOT_REACHABLEenthält, hängt das mit diesem Grund zusammen.
Lösung
- Prüfen Sie die API-Proxy-Definition und suchen Sie nach dem definierten Zielhostnamen:
- Wenn der angegebene Zielhostname ungültig ist oder ungültige Zeichen enthält, korrigieren Sie ihn entsprechend, erstellen Sie eine neue Revision 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 verbunden 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
Wenn Sie beispielsweise feststellen möchten, ob VPC-Peering aktiviert ist, prüfen Sie, ob das Antwortattribut
authorizedNetworkvorhanden und auf einen Wert festgelegt ist. Wenn nicht, ist VPC-Peering nicht aktiviert:TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Diese Beispielantwort gibt an, dass VPC-Peering aktiviert ist:
"projects/example-org/global/networks/shared-vpc1"
- Fragen Sie den API-Proxy-Entwickler auf Kundenseite, ob dieser Domainname des Zielservers intern konfiguriert ist. Andernfalls trifft dieses Szenario nicht zu.
- Suchen Sie die Projekt-ID und das Netzwerk, in dem der Zielendpunkt gehostet wird.
Listen Sie die im oben genannten Netzwerk erstellten DNS-Peerings auf. Führen Sie die folgenden Schritte aus, je nachdem, ob die Apigee-Organisation mit einem VPC-Netzwerk per Peering verbunden ist oder nicht.
VPC-Peering aktiviert
Wenn in Ihrer Organisation VPC-Peering aktiviert ist, verwenden Sie den Befehl
peered-dns-domains list:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
Das Ergebnis kann entweder leer sein, wenn keine per Peering verbundenen DNS-Domains verfügbar sind, oder die per Peering verbundenen DNS-Domains auflisten. Beispiel:
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
VPC-Peering nicht aktiviert
Wenn in Ihrer Organisation kein VPC-Peering aktiviert ist, verwenden Sie die folgende Apigee API:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones"
Dabei ist
ORGANIZATIONder Name Ihrer Apigee-Organisation.Beispielantwort, in der der Name der Organisation
dns-peering-int-4ist:{ "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" } ] }Wenn die Antwort keinen DNS-Peering-Eintrag für das entsprechende DNS-Suffix enthält, 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.
VPC-Peering aktiviert
Wenn in Ihrer Organisation VPC-Peering aktiviert ist, verwenden Sie den gcloud-Befehl
peered-dns-domains create. Beachten Sie, dass das DNS-Suffix mit einem Punkt enden sollte: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
Response:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
VPC-Peering nicht aktiviert
Wenn in Ihrer Organisation kein VPC-Peering aktiviert ist, erstellen Sie eine DNS-Peering-Zone mit der privaten DNS-Zone in Ihrem Projekt:
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" } }'Wobei:
ORGANIZATIONist der Name Ihrer Apigee-Organisation.DNS_ZONE_IDist der Name der DNS-Zone, die Sie erstellen möchten.DOMAINist der DNS-Name dieser verwalteten Zone, z. B.example.com.DESCRIPTIONist eine kurze Beschreibung der DNS-Zone. Maximale Anzahl von Zeichen: 1.024PRODUCER_PROJECT_IDist das Projekt, das das VPC-Netzwerk des Erstellers enthält.PRODUCER_VPC_NETWORKist das VPC-Netzwerk im Kundenprojekt.
- 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.
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 ‑Version
- Netzwerk, in dem die private Domain erstellt wird
- DNS-Suffix der privaten Domain
- Die vollständige Ausgabe des Befehls zum Erstellen der per Peering verbundenen DNS-Domain