Estás viendo la documentación de Apigee y Apigee hybrid.
No hay documentación de Apigee Edge equivalente para este tema.
Síntomas
Las solicitudes a la API fallan con el error TARGET_CONNECT_HOST_NOT_REACHABLE
.
Mensajes de error
Si ocurre este problema, las solicitudes a la API fallarán con el código de estado de respuesta HTTP 503
y el siguiente error:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
Causas posibles
Se identificaron las siguientes causas potenciales para el síntoma mencionado anteriormente:
Causa | Descripción | Plataforma |
El host del servidor de destino que se especificó es incorrecto o tiene caracteres no válidos | Este problema puede ocurrir si el host del servidor de destino designado que se especificó en el proxy de API es incorrecto o contiene caracteres no válidos. | Apigee, Apigee hybrid |
El intercambio de tráfico de DNS no está configurado | Este problema puede ocurrir cuando Apigee no puede resolver el nombre de dominio si el intercambio de tráfico de DNS no se configura en las implementaciones de Apigee. | Apigee |
Causa: El host del servidor de destino que se especificó es incorrecto o tiene caracteres no válidos
Diagnóstico
-
Envía una solicitud a la API al proxy de API relevante:
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
Luego, verifica el mensaje de respuesta:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
-
Si la respuesta contiene el motivo de error
TARGET_CONNECT_HOST_NOT_REACHABLE
, entonces eso está relacionado con este motivo.
Solución
- Revisa la definición del proxy de API y busca el nombre de host de destino definido:
- Si el nombre de host de destino proporcionado no es válido o tiene caracteres no válidos, corrígelo según corresponda, crea una nueva revisión del proxy y, luego, implementa el proxy.
Causa: El intercambio de tráfico de DNS no está configurado
Diagnóstico
- Revisa si la organización de Apigee intercambia tráfico con una red de VPC invocando la siguiente API de Apigee:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork
Por ejemplo:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Respuesta:
"projects/example-org/global/networks/shared-vpc1"
Si la organización de Apigee no intercambia tráfico con una VPC y usa Private Service Connect (PSC), esta situación no se aplica para esta organización de Apigee.
- Verifica con el desarrollador del proxy de API del cliente si este nombre de dominio de servidor de destino está configurado internamente. Si no es así, no se aplica esta situación.
- Busca el ID de proyecto y la red en la que se aloja el extremo de destino.
-
Enumera los intercambios de tráfico de DNS creados en la red anterior ejecutando el comando
peered-dns-domains list
:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
El comando anterior podría mostrar un resultado en blanco si no hay dominios DNS con intercambio de tráfico disponibles o mostrar una lista de dominios DNS con intercambio de tráfico similar a lo siguiente:
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
Si el comando anterior no enumera una entrada de intercambio de tráfico de DNS para el sufijo DNS relevante, ese puede ser el motivo de este problema. Sigue las instrucciones proporcionadas en Solución para resolverlo.
Solución
- Toma nota del sufijo DNS, el ID del proyecto y la red en la que se aloja el extremo de destino.
- Crea un dominio DNS con intercambio de tráfico para el sufijo DNS usando el comando de gcloud
peered-dns-domains create
. Ten en cuenta que el sufijo DNS debe contener un punto final.gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID
Por ejemplo:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Respuesta:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
- Ahora, envía la solicitud a la API al extremo del proxy de API y verifica si el proxy de API puede resolver el nombre de dominio del servidor de destino y comunicarse con el servidor de destino:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Respuesta:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully
Se debe recopilar información de diagnóstico
Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y, luego, comunícate con Atención al cliente de Cloud:
- ID del proyecto de Google Cloud
- Organización de Apigee
- Proxy de API y revisión
- Red en la que se crea el dominio privado
- Sufijo DNS del dominio privado
- La salida completa del comando de creación del dominio DNS con intercambio de tráfico