Estás viendo la documentación de Apigee y Apigee hybrid.
No hay documentación de Apigee Edge equivalente para este tema.
Síntoma
Problemas de conectividad de red entre Apigee y un servicio de destino descendente conectados por Private Service Connect (PSC).
Mensaje de error
Un problema de conexión de red o un tiempo de espera de TCP entre Apigee y el servicio de destino se mostraría como una respuesta de error 503
y mostraría un error similar al siguiente si creas una sesión de depuración.
{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable","reason":"TARGET_CONNECT_TIMEOUT"}}}
Causas posibles
Causa | Descripción |
Diferentes regiones entre el adjunto de servicio y la instancia de Apigee | La región de la instancia de Apigee y la región del adjunto de servicio son diferentes. |
Falta la regla de firewall de entrada para la subred PSC en el proyecto de destino | En el proyecto de destino, asegúrate de que exista una regla de firewall de entrada que permita la dirección IP y el puerto del rango de subred de PSC. |
Configuración incorrecta del adjunto de servicio en el proyecto de destino | Verifica el Adjunto de servicio en el proyecto de destino. |
Estado incorrecto del adjunto de extremo en Apigee | Verifica el adjunto de extremo en Apigee. |
Coincidencias en el puerto configurado en TargetEndpoint y el ILB | Asegúrate de que el TargetEndpoint en el proxy de API use el mismo puerto que expone el balanceador de cargas interno (ILB) en el proyecto de destino. |
Causa: Diferentes regiones entre el adjunto del servicio y la instancia de Apigee
Diagnóstico
-
Verifica la región de la instancia de Apigee mediante uno de los siguientes métodos:
- Usa la IU clásica de Apigee:
- Accede a la IU de Apigee.
- Haz clic en Administrador > Instancias.
- Haz clic en una instancia.
- Verifica la ubicación de hosting del entorno de ejecución en el panel Detalles de la instancia.
- Usa la IU de Apigee en la consola de Google Cloud:
-
En la consola de Google Cloud, ve a la página Instancias de Apigee.
- Haz clic en una instancia.
- Verifica la ubicación de hosting del entorno de ejecución en el panel Detalles de la instancia.
-
- Mediante una llamada a la API:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances"
En el que ORG_NAME es el nombre de la migración. Por ejemplo,
example-apigee-support
Se mostrará un resultado similar al siguiente. La ubicación de hosting del entorno de ejecución es el valor que se muestra para
location
a continuación. Por ejemplo,asia-northeast1
."instances": [ { "name": "asia-northeast1", "location": "asia-northeast1", "host": "10.117.0.2", "port": "443", "createdAt": "1628150049760", "lastModifiedAt": "1682139265367", "diskEncryptionKeyName": "projects/apigee-x-support-apac-05/locations/asia-northeast1/keyRings/phanim-disk-key-1/cryptoKeys/phanim-disk-key-ring-1", "state": "ACTIVE", "peeringCidrRange": "SLASH_20", "runtimeVersion": "1-9-0-apigee-25", "consumerAcceptList": [ "example-apigee-support", "example-neg-project" ], "serviceAttachment": "projects/xb363132eb41cb643p-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-yp9o" }
- Usa la IU clásica de Apigee:
-
Verifica la región del adjunto de extremo mediante una llamada a la API:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
Donde:
- ORG_NAME es el nombre de la organización.
Por ejemplo,
example-apigee-support
- ENDPOINT_ATTACHMENT_NAME es el nombre del adjunto del extremo. Por ejemplo,
example-ea
Se mostrará un resultado similar al siguiente. La región del adjunto de extremo es el valor que se muestra para
location
a continuación. Por ejemplo,asia-northeast1
.{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
- ORG_NAME es el nombre de la organización.
Por ejemplo,
-
Verifica la región Adjunto de servicio mediante Cloud Console:
-
En la consola de Google Cloud, ve a la página Private Service Connect.
- Verifica la columna Región para ver la ubicación.
-
Solución
Asegúrate de que las regiones Instancia de Apigee, Adjunto de extremo y Adjunto de servicio sean las mismas. Por ejemplo: asia-northeast1
.
Como se describe en Limitaciones, el acceso global no es compatible. Esto significa que los adjuntos del servicio y los adjuntos del extremo deben estar en la misma región. Por ejemplo, si tu instancia de Apigee está en la región us-west1
, no puedes conectar servicios que estén en us-east2
ni en ninguna otra región.
Si las regiones son diferentes, verás problemas de conectividad entre Apigee y el servicio de destino.
Causa: Falta la regla de firewall de entrada para la subred PSC en el proyecto de destino
Diagnóstico
Busca una regla de firewall en el proyecto de destino que permita que las direcciones IP del rango de subred de PSC se conecten al servicio de destino:
-
En la consola de Google Cloud, ve a la página Firewall.
-
En el panel Reglas de firewall de VPC, verifica que exista una regla como la del siguiente ejemplo:
- Dirección Entrada
- Acción en caso de coincidencia: Permitir
- Filtro de fuente: Rangos de IPv4/IPv6
- Rangos de IP: Es el rango de direcciones IP de la subred PSC (
ipCidrRange
) que puedes obtener con el siguiente comando de gcloud para describir la subred de PSC:gcloud compute networks subnets describe PSC_SUBNET_NAME --region=REGION
Donde:
-
PSC_SUBNET_NAME es el nombre de la subred de PCS.
Por ejemplo,
pscsub
-
REGION es la ubicación. Por ejemplo,
asia-northeast1
.
Se mostrará un resultado similar al siguiente:
creationTimestamp: '2023-04-19T03:33:29.371-07:00' fingerprint: 1JPKY66teTg= gatewayAddress: 10.10.0.1 id: '5645967773396008342' ipCidrRange: 10.10.0.0/24 kind: compute#subnetwork name: pscsub network: https://www.googleapis.com/compute/v1/projects/target-project/global/networks/default privateIpGoogleAccess: false privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS purpose: PRIVATE_SERVICE_CONNECT ....
-
PSC_SUBNET_NAME es el nombre de la subred de PCS.
Por ejemplo,
- Protocolos y puertos: Estos se deben enumerar según la configuración del servicio de destino.
Por ejemplo:
Solución
Si no se aplica la regla de firewall, crea una subred de PSC como se describe en Crea un adjunto de servicio, paso 2.
Causa: Configuración incorrecta del adjunto de servicio en el proyecto de destino
Diagnóstico
Verifica la región del adjunto de servicio mediante uno de los siguientes métodos:
- Usar la consola de Cloud:
-
En la consola de Google Cloud, ve a la página Private Service Connect.
- Haz clic en Servicios publicados.
- Haz clic en un servicio.
- Verifica la fila Región para ver la ubicación.
-
- Usa un
gcloud command
:gcloud compute service-attachments describe SERVICE_ATTACHMENT --region=REGION
Donde:
-
SERVICE_ATTACHMENT es el nombre del adjunto del servicio.
Por ejemplo,
gkebackend
-
REGION es la ubicación. Por ejemplo,
asia-northeast1
.
Se mostrará un resultado similar al siguiente:
connectedEndpoints: - endpoint: https://www.googleapis.com/compute/v1/projects/xb363132eb41cb643p-tp/regions/asia-northeast1/forwardingRules/example-ea pscConnectionId: '6816512648152066' status: ACCEPTED connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2023-04-19T05:09:09.941-07:00' description: '' enableProxyProtocol: false fingerprint: 0BZDAZ3zDCs= id: '4503680255626733322' kind: compute#serviceAttachment name: gkebackend natSubnets: - https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/subnetworks/pscsub pscServiceAttachmentId: high: '21570167574103266' low: '4503680255626733322' region: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1 selfLink: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend targetService: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/forwardingRules/k8s2-tcp-b65prv8v-default-ilb-svc-tv2s6klz
-
SERVICE_ATTACHMENT es el nombre del adjunto del servicio.
Por ejemplo,
Solución
-
Asegúrate de que el valor
connectedEndpoints.endpoint
haga referencia al proyecto de usuario de Apigee y asegúrate de que su estado seaACCEPTED
. Puedes encontrar el proyecto de usuario con la API de Organizations de Apigee:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"
En el que ORG_NAME es el nombre de la migración. Por ejemplo,
example-apigee-support
.Se mostrará un resultado similar al siguiente. El ID está en un campo llamado
apigeeProjectId
. Por ejemplo,xb363132eb41cb643p-tp
.{ "name": "example-apigee-support", "createdAt": "1628148440954", "lastModifiedAt": "1650563608527", "environments": [ "dev" ], "properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, "analyticsRegion": "asia-northeast1", "authorizedNetwork": "default", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "CERTIFICATE_NUMBER", "runtimeDatabaseEncryptionKeyName": "projects/example-apigee-support/locations/asia-northeast1/keyRings/phanim-key-ring-1/cryptoKeys/phanim-app-key-1", "projectId": "example-apigee-support", "state": "ACTIVE", "billingType": "SUBSCRIPTION", "addonsConfig": { "advancedApiOpsConfig": {}, "integrationConfig": {}, "monetizationConfig": {} }, "apigeeProjectId": "xb363132eb41cb643p-tp" }
-
Asegúrate de que Adjunto de servicio tiene conectividad con el Adjunto de extremo como se describe en Patrones de herramientas de redes descendentes, comprueba y administra la conectividad de adjuntos.
En la IU del paso 1, asegúrate de que se cumpla lo siguiente:
-
La fila Subredes hace referencia a la subred PSC. Por ejemplo:
pscsub
. - En la fila Destino, se hace referencia al balanceador de cargas interno correcto para los backends de destino.
-
La fila Subredes hace referencia a la subred PSC. Por ejemplo:
Causa: El estado del adjunto de extremo es incorrecto en Apigee
Diagnóstico
Visualiza el adjunto del extremo en Apigee con una llamada a la API:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
En el ejemplo anterior, se ilustra lo siguiente:
-
ORG_NAME es el nombre de la organización. Por ejemplo,
example-apigee-support
. -
ENDPOINT_ATTACHMENT_NAME es el nombre del adjunto del extremo. Por ejemplo,
example-ea
Se mostrará un resultado similar al siguiente:
{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
Solución
Asegúrate de que se cumpla lo siguiente:
state
esACTIVE
connectionState
esACCEPTED
-
serviceAttachment
se refiere al proyecto de destino y al nombre del adjunto de servicio correctos.
Causa: Discrepancia en el puerto configurado en TargetEndpoint y en el ILB
Diagnóstico
- En el proyecto de destino, busca el puerto que expone la regla de reenvío mediante laconsola de Cloud:
-
En la consola de Google Cloud, ve a la página Private Service Connect.
- Haz clic en Servicios publicados.
- Haz clic en un servicio. Como se muestra en el siguiente ejemplo, el puerto 80 está expuesto.
-
Solución
Asegúrate de que el mismo puerto 80 sea el puerto en el TargetEndpoint
del proxy de API.
Para verificarlo, navega al proxy de API y verifica la URL TargetEndpoint
:
- Con la IU clásica de Apigee, haz lo siguiente:
- Accede a la IU de Apigee.
- Haz clic en Desarrollar > Proxies de API
- Haz clic en un proxy.
- Haz clic en Develop.
- Verifica en el panel XML lo siguiente:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
- Usa la IU de Apigee en la consola de Google Cloud:
-
En la consola de Google Cloud, ve a la página Apigee.
- En el área Desarrollo de proxy, haz clic en Proxies de API.
- Haz clic en un proxy.
- Haz clic en Develop.
- Verifica en el panel XML lo siguiente:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
-
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 Google Cloud:
- Organización de Apigee
- Entorno y proxy de API que ven el problema
- Sesión de depuración descargada (esto proporcionará toda la información anterior)
- Adjunto de extremo que se usa
- Proyecto de destino y adjunto de servicio