Masalah konektivitas Apigee dengan target PSC arah selatan

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

Gejala

Masalah konektivitas jaringan antara Apigee dan layanan target yang mengarah ke selatan yang terhubung oleh Private Service Connect (PSC).

Pesan error

Masalah koneksi jaringan atau waktu tunggu TCP antara Apigee dan target layanan akan muncul sebagai respons error 503 dan akan menampilkan seperti di bawah ini jika Anda membuat sesi debug.

{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable","reason":"TARGET_CONNECT_TIMEOUT"}}}

Kemungkinan Penyebab

Penyebab Deskripsi
Region yang berbeda di antara lampiran layanan dan instance Apigee Region Instance Apigee dan Lampiran layanan wilayah berbeda.
Aturan firewall masuk untuk subnet PSC tidak ada dalam project target Dalam project target, pastikan ada aturan firewall masuk untuk izinkan alamat IP dan porta dari rentang subnet PSC.
Konfigurasi layanan salah lampiran di project target Verifikasi Lampiran layanan di project target.
Status lampiran endpoint salah di Apigee Verifikasi Lampiran endpoint di Apigee.
Ketidakcocokan dalam port yang dikonfigurasi di TargetEndpoint dan ILB Pastikan TargetEndpoint di proxy API menggunakan port yang diekspos oleh load balancer internal (ILB) pada target proyek.

Penyebab: Region yang berbeda antara lampiran Layanan dan instance Apigee

Diagnosis

  1. Periksa region instance Apigee menggunakan salah satu metode berikut:

    1. Menggunakan UI Apigee klasik:
      1. Masuk ke UI Apigee.
      2. Klik Admin > Instance.
      3. Klik salah satu instance.
      4. Periksa Lokasi hosting runtime di Panel Detail instance.
    2. Menggunakan UI Apigee di Konsol Google Cloud:
      1. Di Konsol Google Cloud, buka halaman Apigee Instances.

        Buka Instance Apigee

      2. Klik salah satu instance.
      3. Periksa Lokasi hosting runtime di Panel Detail instance.
    3. Menggunakan Panggilan API:
      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances"
      

      Dengan ORG_NAME adalah nama organisasi. Contoh, example-apigee-support.

      Sesuatu yang mirip dengan berikut ini akan ditampilkan. Hosting Runtime location adalah nilai yang ditampilkan untuk location di bawah ini. Misalnya, asia-northeast1.

      "instances": [
        {
          "name": "asia-northeast1",
          "location": "asia-northeast1",
          "host": "10.117.0.2",
          "port": "443",
          "createdAt": "1628150049760",
          "lastModifiedAt": "1682139265367",
          "diskEncryptionKeyName": "projects/apigee-x-support-apac-05/locations/asia-northeast1/keyRings/phanim-disk-key-1/cryptoKeys/phanim-disk-key-ring-1",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_20",
          "runtimeVersion": "1-9-0-apigee-25",
          "consumerAcceptList": [
            "example-apigee-support",
            "example-neg-project"
          ],
          "serviceAttachment": "projects/xb363132eb41cb643p-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-yp9o"
        }
  2. Periksa region Lampiran endpoint menggunakan Panggilan API:
    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
    

    Dengan keterangan:

    • ORG_NAME adalah nama organisasi. Contoh, example-apigee-support.
    • ENDPOINT_ATTACHMENT_NAME adalah nama endpoint lampiran. Contoh, example-ea.

    Sesuatu yang mirip dengan berikut ini akan dikembalikan. Tujuan Region lampiran endpoint adalah nilai yang ditampilkan untuk location di bawah. Misalnya, asia-northeast1.

    {
      "name": "organizations/example-apigee-support/endpointAttachments/example-ea",
      "location": "asia-northeast1",
      "host": "7.0.4.2",
      "state": "ACTIVE",
      "connectionState": "ACCEPTED",
      "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend"
    }
    
  3. Periksa region Lampiran layanan menggunakan Cloud Console:
    1. Di konsol Google Cloud, buka Private Service Connect .

      Buka Private Service Connect

    2. Periksa kolom Wilayah untuk mengetahui lokasi.

Resolusi

Pastikan instance Apigee, Lampiran endpoint, dan Region Lampiran layanan sama. Misalnya, asia-northeast1.

Seperti yang dijelaskan dalam Batasan, akses global tidak didukung. Artinya, lampiran layanan dan lampiran endpoint harus berada di region yang sama. Misalnya, jika Apigee instance ada di region us-west1, Anda tidak dapat menghubungkan layanan yang berada di us-east2 atau region lainnya.

Jika wilayahnya berbeda, Anda akan melihat masalah konektivitas antara Apigee dan layanan target.

Penyebab: Aturan firewall masuk untuk subnet PSC tidak ada di project target

Diagnosis

Periksa aturan firewall di project target yang mengizinkan alamat IP dari rentang subnet PSC untuk terhubung ke layanan target:

  1. Di Konsol Google Cloud, buka halaman Firewall.

    Buka Firewall

  2. Di panel VPC firewall rules, pastikan bahwa aturan seperti ada contoh berikut:
    • Arah: Ingress
    • Tindakan saat kecocokan: Izinkan
    • Filter Sumber: Rentang IPv4/IPv6
    • IP Ranges: Rentang alamat IP dari Subnet PSC (ipCidrRange) yang bisa Anda dapatkan dengan Perintah gcloud untuk mendeskripsikan subnet PSC:
      gcloud compute networks subnets describe PSC_SUBNET_NAME --region=REGION

      Dengan keterangan:

      • PSC_SUBNET_NAME adalah nama subnet PCS. Contoh, pscsub.
      • REGION adalah lokasinya. Misalnya, asia-northeast1.

      Sesuatu yang mirip dengan hal berikut akan ditampilkan:

      creationTimestamp: '2023-04-19T03:33:29.371-07:00'
      fingerprint: 1JPKY66teTg=
      gatewayAddress: 10.10.0.1
      id: '5645967773396008342'
      ipCidrRange: 10.10.0.0/24
      kind: compute#subnetwork
      name: pscsub
      network: https://www.googleapis.com/compute/v1/projects/target-project/global/networks/default
      privateIpGoogleAccess: false
      privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS
      purpose: PRIVATE_SERVICE_CONNECT
      ....
    • Protokol dan port: Protokol dan port ini harus dicantumkan sesuai dengan konfigurasi layanan target Anda.
  3. Contoh:

Resolusi

Jika aturan firewall tidak diterapkan, buat subnet PSC seperti yang dijelaskan di Buat lampiran layanan, langkah 2.

Penyebab: Konfigurasi lampiran layanan salah dalam project target

Diagnosis

Periksa region Lampiran layanan menggunakan salah satu metode berikut:

  1. Menggunakan Konsol Cloud:
    1. Di konsol Google Cloud, buka Private Service Connect .

      Buka Private Service Connect

    2. Klik Layanan yang dipublikasikan.
    3. Klik layanan.
    4. Periksa baris Wilayah untuk mencari lokasi.

  2. Menggunakan gcloud command:
      gcloud compute service-attachments describe SERVICE_ATTACHMENT --region=REGION

    Dengan keterangan:

    • SERVICE_ATTACHMENT adalah nama lampiran layanan. Contoh, gkebackend.
    • REGION adalah lokasinya. Misalnya, asia-northeast1.

    Sesuatu yang mirip dengan hal berikut ini akan ditampilkan:

    connectedEndpoints:
    - endpoint: https://www.googleapis.com/compute/v1/projects/xb363132eb41cb643p-tp/regions/asia-northeast1/forwardingRules/example-ea
      pscConnectionId: '6816512648152066'
      status: ACCEPTED
    connectionPreference: ACCEPT_AUTOMATIC
    creationTimestamp: '2023-04-19T05:09:09.941-07:00'
    description: ''
    enableProxyProtocol: false
    fingerprint: 0BZDAZ3zDCs=
    id: '4503680255626733322'
    kind: compute#serviceAttachment
    name: gkebackend
    natSubnets:
    - https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/subnetworks/pscsub
    pscServiceAttachmentId:
      high: '21570167574103266'
      low: '4503680255626733322'
    region: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1
    selfLink: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend
    targetService: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/forwardingRules/k8s2-tcp-b65prv8v-default-ilb-svc-tv2s6klz

Resolusi

  1. Pastikan nilai connectedEndpoints.endpoint merujuk project tenant Apigee dan memastikan statusnya ACCEPTED. Anda dapat menemukan project tenant dengan menggunakan Apigee Organisasi API:
    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"

    Dengan ORG_NAME adalah nama organisasi. Sebagai contoh, example-apigee-support.

    Sesuatu yang mirip dengan berikut ini akan ditampilkan. ID ada dalam kolom bernama apigeeProjectId. Sebagai contoh, xb363132eb41cb643p-tp.

    {
      "name": "example-apigee-support",
      "createdAt": "1628148440954",
      "lastModifiedAt": "1650563608527",
      "environments": [
      "dev"
      ],
      "properties": {
        "property": [
          {
            "name": "features.mart.connect.enabled",
            "value": "true"
          },
          {
            "name": "features.hybrid.enabled",
            "value": "true"
          }
        ]
      },
        "analyticsRegion": "asia-northeast1",
        "authorizedNetwork": "default",
        "runtimeType": "CLOUD",
        "subscriptionType": "PAID",
        "caCertificate": "CERTIFICATE_NUMBER",
        "runtimeDatabaseEncryptionKeyName": "projects/example-apigee-support/locations/asia-northeast1/keyRings/phanim-key-ring-1/cryptoKeys/phanim-app-key-1",
        "projectId": "example-apigee-support",
        "state": "ACTIVE",
        "billingType": "SUBSCRIPTION",
        "addonsConfig": {
        "advancedApiOpsConfig": {},
        "integrationConfig": {},
        "monetizationConfig": {}
        },
    "apigeeProjectId": "xb363132eb41cb643p-tp"
    }
    
  2. Pastikan Lampiran layanan memiliki konektivitas dengan Lampiran endpoint seperti yang dijelaskan di Pola jaringan yang mengarah ke selatan, Memeriksa dan mengelola konektivitas lampiran. Di UI dari langkah 1 , pastikan bahwa:
    1. Baris Subnets merujuk ke subnet PSC. Misalnya, pscsub.
    2. Baris Target merujuk pada load balancer internal untuk backend target.

Penyebab: Status lampiran endpoint di Apigee salah

Diagnosis

Lihat lampiran endpoint di Apigee menggunakan Panggilan API:

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"

Dengan keterangan:

  • ORG_NAME adalah nama organisasi. Sebagai contoh, example-apigee-support.
  • ENDPOINT_ATTACHMENT_NAME adalah nama endpoint lampiran. Contoh, example-ea.

Sesuatu yang mirip dengan hal berikut ini akan ditampilkan:

  {
    "name": "organizations/example-apigee-support/endpointAttachments/example-ea",
    "location": "asia-northeast1",
    "host": "7.0.4.2",
    "state": "ACTIVE",
    "connectionState": "ACCEPTED",
    "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend"
  }

Resolusi

Pastikan hal berikut:

  • state ACTIVE
  • connectionState ACCEPTED
  • serviceAttachment merujuk ke project target yang benar dan nama lampiran layanan

Penyebab: Ketidakcocokan di port yang dikonfigurasi di TargetEndpoint dan ILB

Diagnosis

  1. Dalam project target, temukan port tempat aturan penerusan menggunakan konsol Cloud:
    1. Di konsol Google Cloud, buka Private Service Connect .

      Buka Private Service Connect

    2. Klik Layanan yang dipublikasikan.
    3. Klik layanan. Seperti ditunjukkan dalam contoh berikut, port 80 terekspos.

Resolusi

Pastikan port 80 yang sama adalah port di TargetEndpoint dari proxy API.

Untuk memeriksanya, buka Proxy API dan verifikasi URL TargetEndpoint:

  1. Menggunakan UI Apigee klasik:
    1. Masuk ke UI Apigee.
    2. Klik Develop > Proxy API
    3. Klik proxy.
    4. Klik Develop.
    5. Periksa panel XML untuk mengetahui hal berikut:
      <HTTPTargetConnection>
        <URL>http://7.0.4.2:80</URL>
      </HTTPTargetConnection>
  2. Menggunakan UI Apigee di Konsol Google Cloud:
    1. Di konsol Google Cloud, buka halaman Apigee.

      Buka Apigee

    2. Di area Proxy development, klik API proxy.
    3. Klik proxy.
    4. Klik Develop.
    5. Periksa panel XML untuk mengetahui hal berikut:
        <HTTPTargetConnection>
          <URL>http://7.0.4.2:80</URL>
        </HTTPTargetConnection>

Harus mengumpulkan informasi diagnostik

Jika masalah berlanjut bahkan setelah mengikuti instruksi di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Google Cloud Customer Care:

  • Organisasi Apigee
  • Proxy API dan lingkungan mengalami masalah
  • Sesi debug yang didownload (ini akan memberikan semua info di atas)
  • Lampiran endpoint sedang digunakan
  • Lampiran project dan layanan target