Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Il n'existe pas de documentation Apigee Edge équivalente pour ce sujet.
Symptômes
Les requêtes API échouent en renvoyant l'erreur TARGET_CONNECT_HOST_NOT_REACHABLE
.
Messages d'erreur
Si ce problème se produit, les requêtes API échouent en renvoyant le code d'état de réponse HTTP 503
et l'erreur suivante :
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
Causes possibles :
Les éléments suivants ont été identifiés comme des causes potentielles du symptôme susmentionné :
Cause | Description | Plate-forme |
L'hôte du serveur cible spécifié est incorrect ou comporte des caractères non valides | Ce problème peut se produire si l'hôte du serveur cible désigné, spécifié dans le proxy d'API, est incorrect ou contient des caractères non valides. | Apigee, Apigee hybrid |
L'appairage DNS n'est pas configuré | Ce problème peut survenir lorsque Apigee ne parvient pas à résoudre le nom de domaine si l'appairage DNS n'est pas configuré dans les déploiements Apigee. | Apigee |
Cause : l'hôte du serveur cible spécifié est incorrect ou comporte des caractères non valides
Diagnostic
-
Envoyez une requête API au proxy d'API approprié :
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
Et vérifiez le message de réponse :
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
-
Si la réponse contient le motif d'erreur
TARGET_CONNECT_HOST_NOT_REACHABLE
, cela signifie que l'erreur est liée à ce motif.
Solution
- Vérifiez la définition du proxy d'API et recherchez le nom d'hôte cible défini :
- Si le nom d'hôte cible indiqué n'est pas valide ou contient des caractères non valides, corrigez-le, créez une nouvelle révision du proxy et déployez le proxy.
Cause : l'appairage DNS n'est pas configuré
Diagnostic
- Vérifiez si l'organisation Apigee est appairée à un réseau VPC en appelant l'API Apigee suivante :
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork
Exemple :
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Réponse :
"projects/example-org/global/networks/shared-vpc1"
Si l'organisation Apigee n'est pas appairée à un VPC et si elle utilise Private Service Connect (PSC), ce scénario ne s'applique pas à cette organisation Apigee.
- Vérifiez auprès du développeur du proxy d'API côté client si ce nom de domaine du serveur cible est configuré en interne. Si ce n'est pas le cas, ce scénario ne s'applique pas.
- Recherchez l'ID de projet et le réseau sur lequel le point de terminaison cible est hébergé.
-
Listez les appairages DNS créés dans le réseau ci-dessus en exécutant la commande
peered-dns-domains list
:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
La commande ci-dessus peut renvoyer un résultat vide si aucun domaine DNS appairé n'est disponible, ou bien une liste des domaines DNS appairés, semblable à celle-ci :
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
Si la commande ci-dessus ne liste pas d'entrée d'appairage DNS pour le suffixe DNS concerné, cela peut être la raison de ce problème. Suivez les instructions fournies dans la section Solution pour le résoudre.
Solution
- Notez le suffixe DNS, l'ID de projet et le réseau sur lequel le point de terminaison cible est hébergé.
- Créez un domaine DNS appairé pour le suffixe DNS, à l'aide de la commande gcloud
peered-dns-domains create
. Notez que le suffixe DNS doit se terminer par un point.gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID
Exemple :
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Réponse :
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
- Envoyez maintenant une requête API au point de terminaison du proxy d'API, et vérifiez que le proxy d'API parvient à résoudre le nom de domaine du serveur cible et à communiquer avec le serveur cible :
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Réponse :
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully
Vous devez collecter des informations de diagnostic
Si le problème persiste, même après avoir suivi les instructions ci-dessus, rassemblez les informations de diagnostic suivantes, puis contactez Google Cloud Customer Care :
- ID de projet Google Cloud
- Organisation Apigee
- Proxy d'API et son numéro de révision
- Réseau dans lequel le domaine privé est créé
- Suffixe DNS du domaine privé
- Résultat complet de la commande de création de domaine DNS appairé