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
In diesem Fall schlagen die API-Anfragen mit dem Antwortstatuscode HTTP 503
und der folgenden Fehlermeldung 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 das oben genannte Symptom wurden die folgenden möglichen Ursachen 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 Zielserverhost falsch ist oder ungültige Zeichen enthält. | Apigee, Apigee Hybrid |
DNS-Peering nicht konfiguriert | Dieses Problem kann auftreten, wenn Apigee den Domainnamen nicht auflösen kann, wenn das 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üfe 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_REACHABLE
enthält, hängt der Fehler damit zusammen.
Lösung
- Prüfen Sie die API-Proxy-Definition und suchen Sie nach dem definierten Zielhostnamen:
- Wenn der angegebene Ziel-Hostname ungültig ist oder ungültige Zeichen enthält, beheben Sie das Problem, erstellen Sie eine neue Version des Proxys und stellen Sie den Proxy bereit.
Ursache: DNS-Peering 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
Wenn Sie beispielsweise feststellen möchten, ob das VPC-Peering aktiviert ist, prüfen Sie, ob das Antwortattribut
authorizedNetwork
vorhanden ist und einen Wert hat. Ist das nicht der Fall, ist das 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
In dieser Beispielantwort wird angegeben, dass das VPC-Peering aktiviert ist:
"projects/example-org/global/networks/shared-vpc1"
- Erkundige dich beim API-Proxy-Entwickler auf Kundenseite, ob dieser Domainname des Zielservers intern konfiguriert ist. Andernfalls gilt dieses Szenario nicht für Sie.
- Ermitteln Sie die Projekt-ID und das Netzwerk, in dem der Zielendpunkt gehostet wird.
Liste der DNS-Peerings, die im obigen Netzwerk erstellt wurden. Führen Sie die folgenden Schritte aus, je nachdem, ob die Apigee-Organisation mit einem VPC-Netzwerk gepeert 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 Peer-DNS-Domains verfügbar sind, oder die Peer-DNS-Domains enthalten. 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
ORGANIZATION
der Name Ihrer Apigee-Organisation.Beispielantwort, bei der der Name der Organisation
dns-peering-int-4
lautet:{ "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 Befehl
peered-dns-domains create
gcloud. Das DNS-Suffix muss am Ende einen Punkt enthalten: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:
ORGANIZATION
ist der Name Ihrer Apigee-Organisation.DNS_ZONE_ID
ist der Name der DNS-Zone, die Sie erstellen möchten.DOMAIN
ist der DNS-Name dieser verwalteten Zone, z. B.example.com
.DESCRIPTION
ist eine kurze Beschreibung der DNS-Zone. Maximale Anzahl Zeichen: 1.024PRODUCER_PROJECT_ID
ist das Projekt, das das VPC-Netzwerk des Erstellers enthält.PRODUCER_VPC_NETWORK
ist 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 einer per Peering verbundenen DNS-Domain