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 indicado 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
authorizedNetworkestá 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 este nome de domínio do 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 uma lista dos 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, essa pode ser a razão deste problema. Siga as instruções apresentadas 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 da VPC ativado
Se a sua organização tiver a interligação de VPC ativada, use o comando
peered-dns-domains creategcloud. 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 VPC peering ativada, crie uma zona de peering DNS com a zona DNS privada 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 com peering