Apigee 및 Apigee Hybrid 문서입니다.
이 주제에 해당하는 Apigee Edge 문서가 없습니다.
증상
API 요청이 TARGET_CONNECT_HOST_NOT_REACHABLE
오류와 함께 실패합니다.
오류 메시지
이 문제가 발생하면 HTTP 503
응답 상태 코드 및 다음 오류와 함께 API 요청이 실패합니다.
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
가능한 원인
앞에서 언급한 증상으로 다음과 같은 잠재적 원인이 식별되었습니다.
원인 | 설명 | 플랫폼 |
지정된 대상 서버 호스트가 잘못되었거나 잘못된 문자가 포함되어 있음 | 이 문제는 API 프록시 내에 지정된 대상 서버 호스트가 잘못되었거나 잘못된 문자를 포함하는 경우에 발생할 수 있습니다. | Apigee, Apigee Hybrid |
DNS 피어링이 구성되지 않음 | 이 문제는 Apigee 배포에서 DNS 피어링이 구성되지 않은 경우 Apigee가 도메인 이름을 확인할 수 없을 때 발생할 수 있습니다. | Apigee |
원인: 지정된 대상 서버 호스트가 잘못되었거나 잘못된 문자가 포함되어 있음
진단
-
관련 API 프록시에 API 요청을 보냅니다.
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
그리고 응답 메시지를 확인합니다.
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
-
응답에 오류 이유로
TARGET_CONNECT_HOST_NOT_REACHABLE
이 포함되어 있으면 이 이유와 관련이 있습니다.
해결 방법
- API 프록시 정의를 확인하고 정의된 대상 호스트 이름을 찾습니다.
- 지정된 대상 호스트 이름이 잘못되었거나 잘못된 문자가 포함된 경우 그에 따라 수정하고, 새 버전의 프록시를 만들고 이 프록시를 배포합니다.
원인: DNS 피어링이 구성되지 않음
진단
- 다음 Apigee API를 호출하여 Apigee 조직이 VPC 네트워크와 피어링되어 있는지 확인합니다.
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork
예를 들면 다음과 같습니다.
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
응답:
"projects/example-org/global/networks/shared-vpc1"
Apigee 조직이 VPC와 피어링되지 않았고 Private Service Connect(PSC)를 사용하는 경우에는 이 Apigee 조직에 대해 이 시나리오가 적용되지 않습니다.
- 이 대상 서버 도메인 이름이 내부적으로 구성되었는지 여부를 고객 측의 API 프록시 개발자에게 확인하세요. 그렇지 않으면 이 시나리오가 적용되지 않습니다.
- 대상 엔드포인트가 호스팅되는 프로젝트 ID 및 네트워크를 찾습니다.
-
peered-dns-domains list
명령어를 실행하여 위 네트워크에서 생성된 DNS 피어링을 나열합니다.gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
위 명령어는 사용 가능한 피어링된 DNS 도메인이 없는 경우 빈 결과를 반환할 수 있습니다. 그렇지 않으면 다음과 비슷한 피어링된 DNS 도메인을 나열합니다.
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
위 명령어로 관련 DNS 서픽스의 DNS 피어링 항목이 나열되지 않으면 그것이 이 문제의 이유일 수 있습니다. 해결에 표시된 안내에 따라 문제를 해결하세요.
해결 방법
- 대상 엔드포인트가 호스팅되는 DNS 서픽스, 프로젝트 ID, 네트워크를 기록해 둡니다.
peered-dns-domains create
gcloud 명령어를 사용해서 DNS 서픽스에 대해 피어링된 DNS 도메인을 만듭니다. DNS 서픽스에는 DNS 서픽스 끝에 후행 점이 포함되어야 합니다.gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID
예를 들면 다음과 같습니다.
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
응답:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
- 이제 API 프록시 엔드포인트에 API 요청을 보내고 API 프록시가 대상 서버 도메인 이름을 확인하고 대상 서버와 통신할 수 있는지 여부를 확인합니다.
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
응답:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully
진단 정보 수집 필요
위 안내를 따른 후에도 문제가 지속되면 다음 진단 정보를 수집한 후 Google Cloud Customer Care에 문의하세요.
- Google Cloud 프로젝트 ID
- Apigee 조직
- API 프록시 및 버전
- 비공개 도메인이 생성되는 네트워크
- 비공개 도메인의 DNS 서픽스
- 피어링된 DNS 도메인 생성 명령어의 전체 출력