Está a ver a documentação do Apigee e do Apigee Hybrid.
Não existe um equivalente
na documentação do Apigee Edge para este tópico.
Sintomas
Os pedidos de API falham com o erro TARGET_CONNECT_HOST_NOT_REACHABLE
.
Mensagens de erro
Se este problema ocorrer, os pedidos da API falham com o código de estado da resposta HTTP 503
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
Foram identificadas as seguintes potenciais causas para o sintoma mencionado acima:
Causa | Descrição | Plataforma |
O anfitrião do servidor de destino especificado está incorreto ou tem carateres inválidos | Este problema pode ocorrer se o anfitrião do servidor de destino designado especificado no proxy da API estiver incorreto ou contiver carateres inválidos. | Apigee, Apigee Hybrid |
O intercâmbio de DNS não está configurado | Este problema pode ocorrer quando o Apigee não consegue resolver o nome do domínio se o peering de DNS não estiver configurado nas implementações do Apigee. | Apigee |
Causa: o anfitrião do servidor de destino especificado está incorreto ou tem carateres inválidos
Diagnóstico
-
Envie um pedido 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
, significa que está relacionado com este motivo.
Resolução
- Verifique a definição do proxy de API e encontre o nome do anfitrião de destino definido:
- Se o nome de anfitrião de destino fornecido for inválido ou tiver carateres inválidos, corrija-o em conformidade, crie uma nova revisão do proxy e implemente o proxy.
Causa: o peering de DNS não está configurado
Diagnóstico
- Verifique se a organização do Apigee está em peering com uma rede VPC
invocando a seguinte API Apigee:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork
Por exemplo, para determinar se o peering de VPC está ativado, verifique se o atributo de resposta
authorizedNetwork
está presente e definido para um valor. Se não for o caso, o peering de VPC não está ativado:TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
Esta resposta de exemplo indica que o peering de VPC está ativado:
"projects/example-org/global/networks/shared-vpc1"
- Verifique junto do programador do proxy de API do lado do cliente se o nome de domínio deste servidor de destino está configurado internamente. Caso contrário, este cenário não se aplica.
- Encontre o ID do projeto e a rede na qual o ponto final de destino está alojado.
Liste as interligações de DNS criadas na rede acima. Siga os passos abaixo consoante a organização do Apigee esteja ou não em peering com uma rede VPC.
Intercâmbio de VPC ativado
Se a sua organização tiver a interligação de VPC ativada, use o comando
peered-dns-domains list
:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
O resultado pode estar em branco se não estiverem disponíveis domínios DNS com peering ou apresentar os domínios DNS com peering. Por exemplo:
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
O intercâmbio de VPC não está ativado
Se a sua organização não tiver a funcionalidade de interligação de VPC ativada, use a seguinte API Apigee:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones"
Onde:
ORGANIZATION
é o nome da sua organização do Apigee.Exemplo de resposta, em que o nome da organização é
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" } ] }
Se a resposta não incluir uma entrada de peering de DNS para o sufixo de DNS relevante, esse pode ser o motivo deste problema. Siga as instruções indicadas em Resolução para resolver o problema.
Resolução
- Tome nota do sufixo DNS, do ID do projeto e da rede em que o ponto final de destino está alojado.
Crie um domínio DNS com peering para o sufixo DNS.
Intercâmbio de VPC ativado
Se a sua organização tiver a interligação de VPC ativada, use o comando
peered-dns-domains create
gcloud. Tenha em atenção que o sufixo DNS deve conter um ponto final no final do sufixo DNS:gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID
Por 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.
O intercâmbio de VPC não está ativado
Se a sua organização não tiver a funcionalidade de peering de VPC ativada, crie uma zona de peering de DNS com a zona de DNS privado no seu projeto:
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" } }'
Onde:
ORGANIZATION
é o nome da sua organização do Apigee.DNS_ZONE_ID
é o nome da zona DNS que quer criar.DOMAIN
é o nome DNS desta zona gerida, por exemplo,example.com
.DESCRIPTION
é uma breve descrição da zona DNS. Máximo de carateres: 1024PRODUCER_PROJECT_ID
é o projeto que contém a rede VPC do produtor.PRODUCER_VPC_NETWORK
é a rede VPC no projeto do cliente.
- Agora, envie um pedido de API para o ponto final do proxy de API e verifique se o proxy de API conseguiu resolver o nome do domínio do servidor de destino e comunicar com o servidor de destino.
Tem de recolher 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, em seguida, contacte o apoio ao cliente do Google Cloud.
- Google Cloud ID do projeto
- Organização do Apigee
- Proxy e revisão da API
- Rede na qual o domínio privado é criado
- Sufixo DNS do domínio privado
- O resultado completo do comando de criação do domínio DNS em peering