Permintaan API gagal dengan error TARGET_CONNECT_HOST_NOT_REACHABLE

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Tidak ada padanan Dokumentasi Apigee Edge untuk topik ini.

Gejala

Permintaan API gagal dengan TARGET_CONNECT_HOST_NOT_REACHABLE error.

Pesan Error

Jika masalah ini terjadi, permintaan API akan gagal dengan HTTP 503 kode status respons dan error berikut:

{"fault":{"faultstring":
"Unable to resolve host invalid-target-host","detail":
{"errorcode":"protocol.http.NoResolvedHost","reason":
"TARGET_CONNECT_HOST_NOT_REACHABLE"}}}

Kemungkinan Penyebab

Potensi penyebab berikut telah diidentifikasi untuk hal tersebut di atas gejala:

Penyebab Deskripsi Platform
Host server target yang ditentukan adalah salah atau memiliki karakter yang tidak valid Masalah ini dapat terjadi jika server target yang ditetapkan yang ditetapkan dalam proxy API salah atau berisi karakter tidak valid. Apigee, Apigee Hybrid
Peering DNS tidak dikonfigurasi Masalah ini dapat terjadi jika Apigee tidak dapat me-resolve domain jika peering DNS tidak dikonfigurasi di deployment Apigee. Apigee

Penyebab: host server target yang ditentukan salah atau memiliki karakter yang tidak valid

Diagnosis

  1. Kirim permintaan API ke proxy API yang relevan:

    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

    dan periksa pesan responsnya:

    {"fault":{"faultstring":
    "Unable to resolve host invalid-target-host","detail":
    {"errorcode":"protocol.http.NoResolvedHost","reason":
    "TARGET_CONNECT_HOST_NOT_REACHABLE"}}}
  2. Jika respons berisi alasan error TARGET_CONNECT_HOST_NOT_REACHABLE, lalu terkait dengan alasan ini.

Resolusi

  1. Periksa definisi proxy API dan temukan nama host target yang ditentukan:
  2. Jika nama host target yang diberikan tidak valid atau memiliki karakter yang tidak valid, memperbaikinya, membuat revisi baru untuk {i>proxy<i}, dan men-deploy {i>proxy<i}.

Penyebab: Peering DNS tidak dikonfigurasi

Diagnosis

  1. Periksa apakah organisasi Apigee di-peering dengan jaringan VPC dengan memanggil Apigee API berikut:
    TOKEN=$(gcloud auth print-access-token)
    curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork

    Contoh:

    TOKEN=$(gcloud auth print-access-token)
    curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork

    Respons:

    "projects/example-org/global/networks/shared-vpc1"

    Jika organisasi Apigee tidak di-peering dengan VPC dan menggunakan Private Service Connect (PSC), maka skenario ini tidak berlaku untuk organisasi Apigee ini.

  2. Memverifikasi dengan developer proxy API dari sisi pelanggan apakah nama domain server target ini telah dikonfigurasi secara internal. Jika tidak, skenario ini tidak berlaku.
  3. Temukan project ID dan jaringan tempat endpoint target berada dihosting.
  4. Buat daftar peering DNS yang dibuat di jaringan di atas dengan menjalankan Perintah peered-dns-domains list:
    gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID

    Perintah di atas dapat menampilkan hasil kosong jika tidak ada yang di-peering Domain DNS tersedia, atau cantumkan domain DNS yang di-peering yang mirip dengan berikut ini:

    NAME                 DNS_SUFFIX
    customer-service     customer.service.internal.
    accounts-service     accounts.service.internal.

    Jika perintah di atas tidak mencantumkan entri peering DNS untuk Akhiran DNS, maka, itu mungkin menjadi penyebab masalah ini. Ikuti petunjuk yang diberikan dalam Resolusi untuk menyelesaikan anotasi.

Resolusi

  1. Catat akhiran DNS, project ID, dan jaringan tempat endpoint target dihosting.
  2. Buat domain DNS yang di-peering untuk akhiran DNS menggunakan Perintah gcloud peered-dns-domains create. Perhatikan bahwa Akhiran DNS harus berisi tanda titik di akhir akhiran DNS.
    gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID

    Contoh:

    gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project

    Respons:

    Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
  3. Sekarang, kirim permintaan API ke endpoint proxy API dan verifikasi apakah proxy API dapat me-resolve nama domain server target dan berkomunikasi dengan server target:
    gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project

    Respons:

    Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully

Harus mengumpulkan informasi diagnostik

Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, mengumpulkan informasi diagnostik berikut, lalu menghubungi Google Cloud Customer Care.

  1. ID project Google Cloud
  2. Organisasi Apigee
  3. Proxy dan revisi API
  4. Jaringan tempat domain pribadi dibuat
  5. Akhiran DNS domain pribadi
  6. Output lengkap dari perintah pembuatan domain DNS yang di-peering