Esta
é a documentação da Apigee e da Apigee híbrida.
Não há documentação equivalente do
Apigee Edge para esse tópico.
Sintoma
Problemas de conectividade de rede entre a Apigee e um serviço de destino sul conectado pelo Private Service Connect (PSC).
Mensagem de erro
Se você criar uma sessão de depuração, um erro de conexão de rede ou tempo limite de TCP entre a Apigee e o serviço de destino, 503
será exibido como uma resposta de erro, exibindo um erro semelhante ao mostrado abaixo.
{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable","reason":"TARGET_CONNECT_TIMEOUT"}}}
Causas possíveis
Causa | Descrição |
Diferentes regiões entre o anexo de serviço e a instância da Apigee | As regiões da instância da Apigee e do anexo do serviço são diferentes. |
Regra de firewall de entrada ausente para a sub-rede PSC no projeto de destino | No projeto de destino, verifique se existe uma regra de firewall de entrada para permitir o endereço IP e a porta do intervalo de sub-rede PSC. |
Configuração incorreta do anexo de serviço no projeto de destino | Verifique o Anexo de serviço no projeto de destino. |
Estado incorreto do anexo de endpoint na Apigee | Verifique o anexo do endpoint na Apigee. |
Incompatibilidade na porta configurada em TargetEndpoint e ILB | Verifique se o TargetEndpoint no proxy de API está usando a mesma porta que é exposta pelo balanceador de carga interno (ILB, na sigla em inglês) no projeto de destino. |
Causa: diferentes regiões entre o anexo de serviço e a instância da Apigee
Diagnóstico
-
Verifique a região da instância da Apigee usando um dos seguintes métodos:
- Using the classic Apigee UI:
- Faça login na interface da Apigee.
- Clique em Administrador > Instâncias.
- Clique em uma instância.
- Verifique o Local de hospedagem do ambiente de execução no painel Detalhes da instância.
- Using the Apigee UI in Google Cloud console:
-
No Console do Google Cloud, acesse a página Instâncias da Apigee.
- Clique em uma instância.
- Verifique o Local de hospedagem do ambiente de execução no painel Detalhes da instância.
-
- Usando uma
chamada de API:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances"
Em que ORG_NAME é o nome da organização. Por exemplo,
example-apigee-support
.Algo semelhante ao seguinte é retornado. O Local de hospedagem do ambiente de execução é o valor mostrado para
location
abaixo. Por exemplo,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" }
- Using the classic Apigee UI:
-
Verifique a região de Anexo do endpoint usando uma
chamada de API:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
Em que:
- ORG_NAME é o nome da organização.
Por exemplo,
example-apigee-support
. - ENDPOINT_ATTACHMENT_NAME é o nome do anexo de endpoint. Por exemplo,
example-ea
.
Algo semelhante ao seguinte é retornado. A região do anexo de endpoint é o valor mostrado para
location
abaixo. Por exemplo,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 é o nome da organização.
Por exemplo,
-
Verifique a região do Anexo de serviço usando o Console do Cloud:
-
No Console do Google Cloud, acesse a página do Private Service Connect.
- Verifique a coluna Região do local.
-
Resolução
Verifique se as regiões Instância da Apigee, Anexo do endpoint e Anexo de serviço são as mesmas. Por exemplo: asia-northeast1
.
Conforme descrito em
Limitações, o acesso global não é compatível. Isso significa que os anexos de serviço e os de endpoints
precisam estar na mesma região. Por exemplo, se sua instância da Apigee estiver na região
us-west1
, não vai ser possível conectar a ela serviços que estejam em us-east2
ou qualquer outra região.
Se as regiões forem diferentes, você verá problemas de conectividade entre a Apigee e o serviço de destino.
Causa: regra de firewall de entrada ausente para a sub-rede PSC no projeto de destino
Diagnóstico
Verifique se há uma regra de firewall no projeto de destino que permita que os endereços IP do intervalo de sub-rede PSC se conectem ao serviço de destino:
-
No Console do Google Cloud, acesse a página Firewall.
-
No painel Regras de firewall da VPC, verifique se há uma regra como
o exemplo a seguir:
- Direção: Ingress
- Ação na correspondência: permitir
- Filtro de origem: intervalos IPv4/IPv6
- Intervalos de IP: intervalo de endereços IP da sub-rede do PSC (
ipCidrRange
) que pode ser conseguido com o comando gcloud a seguir para descrever sub-rede do PSC:gcloud compute networks subnets describe PSC_SUBNET_NAME --region=REGION
Em que:
-
PSC_SUBNET_NAME é o nome da sub-rede PCS.
Por exemplo,
pscsub
. -
REGION é o local. Por exemplo:
asia-northeast1
Algo semelhante ao seguinte é retornado:
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 é o nome da sub-rede PCS.
Por exemplo,
- Protocolos e portas: precisam ser listados de acordo com a configuração de serviço de destino.
Por exemplo:
Resolução
Se a regra de firewall não estiver em vigor, crie uma sub-rede PSC, conforme descrito na etapa 2 em Criar um anexo de serviço.
Causa: configuração incorreta do anexo de serviço no projeto de destino
Diagnóstico
Verifique a região do Anexo de serviço usando um dos seguintes métodos:
- Use o Console do Cloud:
-
No Console do Google Cloud, acesse a página do Private Service Connect.
- Clique em Serviços publicados.
- Clique em um serviço.
- Verifique a linha Região do local.
-
- Como usar um
gcloud command
:gcloud compute service-attachments describe SERVICE_ATTACHMENT --region=REGION
Em que:
-
SERVICE_ATTACHMENT é o nome do anexo de serviço.
Por exemplo,
gkebackend
. -
REGION é o local. Por exemplo,
asia-northeast1
.
Algo semelhante ao seguinte é retornado:
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 é o nome do anexo de serviço.
Por exemplo,
Resolução
-
Verifique se o valor
connectedEndpoints.endpoint
está fazendo referência ao projeto de locatário da Apigee e se o status éACCEPTED
. É possível encontrar o projeto de locatário usando a API Apigee Organizations:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"
Em que ORG_NAME é o nome da organização. Por exemplo,
example-apigee-support
.Algo semelhante ao seguinte é retornado. O ID está em um campo chamado
apigeeProjectId
. Por exemplo,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" }
-
Certifique-se de que o Anexo de serviço tem conectividade com o
Anexo do endpoint conforme descrito em
Padrões de rede vinculados ao sul e Verificar e gerenciar a conectividade dos anexos.
In the UI from step 1 , ensure
that:
-
A linha Sub-redes faz referência à sub-rede PSC. Por exemplo,
pscsub
. - A linha Target faz referência ao balanceador de carga interno correto para os back-ends de destino.
-
A linha Sub-redes faz referência à sub-rede PSC. Por exemplo,
Causa: estado incorreto do anexo de endpoint na Apigee
Diagnóstico
Veja o anexo do endpoint na Apigee usando uma chamada de API:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
Em que:
-
ORG_NAME é o nome da organização. Por exemplo,
example-apigee-support
. -
ENDPOINT_ATTACHMENT_NAME é o nome do anexo de endpoint. Por exemplo,
example-ea
.
Algo semelhante ao seguinte é retornado:
{ "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" }
Resolução
Confirme os seguintes itens:
state
éACTIVE
connectionState
éACCEPTED
-
serviceAttachment
refere-se ao projeto de destino e nome de anexo de serviço corretos.
Causa: incompatibilidade na porta configurada em TargetEndpoint e ILB
Diagnóstico
- No projeto de destino, encontre a porta que a regra de encaminhamento está
expondo usando o console do Cloud:
-
No Console do Google Cloud, acesse a página do Private Service Connect.
- Clique em Serviços publicados.
- Clique em um serviço. Como mostrado no exemplo a seguir, a porta 80 está exposta.
-
Resolução
Verifique se a mesma porta 80 é a porta em TargetEndpoint
do proxy de API.
Para isso, navegue até o proxy de API e verifique o URL TargetEndpoint
:
- Using the classic Apigee UI:
- Faça login na interface da Apigee.
- Clique em Desenvolver > Proxies de API
- Clique em um proxy.
- Clique em Desenvolver.
- Verifique o painel XML para ver o seguinte:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
- Using the Apigee UI in Google Cloud console:
-
No console do Google Cloud, abra a página Apigee.
- Na área Desenvolvimento de proxy, clique em Proxies de API.
- Clique em um proxy.
- Clique em Desenvolver.
- Verifique o painel XML para ver o seguinte:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
-
É necessário coletar informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções acima, reúna as seguintes informações de diagnóstico e entre em contato com o Suporte do Google Cloud:
- Organização da Apigee
- O ambiente e o proxy de API veem o problema
- Download da sessão de depuração (com todas as informações acima)
- Anexo do endpoint em uso
- Projeto de destino e anexo de serviço