Esta
é a documentação da Apigee e da Apigee híbrida.
Não há documentação equivalente do
Apigee Edge para esse tópico.
Sintomas
As solicitações de API falham com erro TARGET_CONNECT_HOST_NOT_REACHABLE
.
Mensagens de erro
Se esse problema ocorrer, as solicitações da API vão falhar com HTTP 503
.
código de status da resposta e o seguinte erro:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
Causas possíveis
As possíveis causas a seguir foram identificadas para os casos acima sintoma:
Causa | Descrição | Plataforma |
O host do servidor de destino especificado é está incorreta ou tem caracteres inválidos | Esse problema pode ocorrer caso o servidor de destino designado especificado no proxy de API está incorreto ou contém caracteres inválidos. | Apigee, Apigee híbrida |
O peering de DNS não está configurado | Esse problema pode ocorrer quando a Apigee não consegue resolver o domínio nome, se o peering de DNS não estiver configurado nas implantações da Apigee. | Apigee |
Causa: o host do servidor de destino especificado está incorreto ou tem caracteres inválidos
Diagnóstico
-
Envie uma solicitação de API ao 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
e verifique a mensagem de resposta:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
-
Se a resposta contiver o motivo do erro
TARGET_CONNECT_HOST_NOT_REACHABLE
, que está relacionado às por isso.
Resolução
- Verifique a definição do proxy de API e encontre o nome do host de destino definido:
- Se o nome do host de destino for inválido ou tiver caracteres inválidos, fazer as correções necessárias, criar uma nova revisão do proxy e implantar proxy.
Causa: o peering de DNS não está configurado
Diagnóstico
- Verificar se a organização da Apigee está fazendo peering com uma rede VPC
invocando a seguinte API da Apigee:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork
Exemplo:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Resposta:
"projects/example-org/global/networks/shared-vpc1"
Se a organização da Apigee não fizer peering com uma VPC e usar Private Service Connect (PSC), este cenário não se aplica a esta organização da Apigee.
- Verifique com o desenvolvedor do proxy de API do lado do cliente se o nome de domínio do servidor de destino é configurado internamente. Caso contrário, nesse cenário não se aplica.
- Encontre o ID do projeto e a rede em que o endpoint de destino está hospedados.
-
Liste os peerings de DNS criados na rede acima executando o
comando
peered-dns-domains list
:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
O comando acima pode retornar um resultado em branco se não houver peering Há domínios DNS disponíveis ou você pode listar domínios DNS em peering da seguinte maneira:
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
Se o comando acima não listar uma entrada de peering de DNS para o item de linha esse poderia ser o motivo do problema. Seguir as instruções fornecidas em Resolução para resolver ele.
Resolução
- Anote o sufixo DNS, o ID do projeto e a rede em que o e o endpoint de destino está hospedado.
- Crie um domínio DNS com peering para o sufixo DNS usando o
peered-dns-domains create
do gcloud. Observe que o O sufixo DNS precisa ter um ponto final no final.gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID
Exemplo:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Resposta:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
- Agora envie uma solicitação de API para o endpoint do proxy de API e verifique
se o proxy de API pode resolver o nome de domínio do servidor de destino
e se comunicar com o servidor de destino:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
Resposta:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully
É 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:
- ID do projeto do Google Cloud
- Organização da Apigee
- Proxy e revisão de API
- Rede em que o domínio particular é criado
- Sufixo DNS do domínio particular
- A saída completa do comando de criação de domínio DNS com peering