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
Par exemple, pour déterminer si l'appairage de VPC est activé, vérifiez si l'attribut de réponse
authorizedNetwork
est présent et défini sur une valeur. Si ce n'est pas le cas, l'appairage VPC n'est pas activé:TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Cet exemple de réponse indique que l'association de VPC est activée:
"projects/example-org/global/networks/shared-vpc1"
- 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. Suivez les étapes ci-dessous en fonction de l'appairage de l'organisation Apigee à un réseau VPC ou non.
Appairage de VPC activé
Si l'appairage de VPC est activé dans votre organisation, utilisez la commande
peered-dns-domains list
:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
Le résultat peut être vide si aucun domaine DNS appairé n'est disponible, ou bien une liste des domaines DNS appairés. Exemple :
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
L'appairage de VPC n'est pas activé
Si l'appairage de VPC n'est pas activé dans votre organisation, utilisez l'API Apigee suivante:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones"
Où
ORGANIZATION
est le nom de votre organisation Apigee.Exemple de réponse, où le nom de l'organisation est
dns-peering-int-4
:{ "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" } ] }
Si la réponse n'inclut 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.
Appairage de VPC activé
Si l'appairage de VPC est activé dans votre organisation, utilisez 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.
L'appairage de VPC n'est pas activé
Si l'appairage VPC n'est pas activé dans votre organisation, créez une zone d'appairage DNS avec la zone DNS privée de votre projet:
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" } }'
Où :
ORGANIZATION
est le nom de votre organisation Apigee.DNS_ZONE_ID
est le nom de la zone DNS que vous souhaitez créer.DOMAIN
est le nom DNS de cette zone gérée (example.com
, par exemple).DESCRIPTION
est une brève description de la zone DNS. Nombre maximal de caractères: 1 024PRODUCER_PROJECT_ID
est le projet qui contient le réseau VPC du producteur.PRODUCER_VPC_NETWORK
est le réseau VPC du projet client.
- 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.
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 projetGoogle 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é