Masalah konektivitas Apigee dengan target PSC southbound

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Tidak ada dokumentasi Apigee Edge yang setara untuk topik ini.

Gejala

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

Pesan error

Masalah koneksi jaringan atau waktu tunggu TCP antara Apigee dan layanan target akan muncul sebagai respons error 503 dan akan menampilkan error yang mirip dengan di bawah 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 antara lampiran layanan dan instance Apigee Region Instance Apigee dan region Lampiran layanan berbeda.
Aturan firewall masuk tidak ada untuk subnet PSC di project target Di project target, pastikan ada aturan firewall masuk untuk mengizinkan alamat IP dan port rentang subnet PSC.
Konfigurasi lampiran layanan yang salah di project target Verifikasi Lampiran layanan di project target.
Status lampiran endpoint yang salah di Apigee Verifikasi Lampiran endpoint di Apigee.
Ketidakcocokan pada port yang dikonfigurasi di TargetEndpoint dan ILB Pastikan TargetEndpoint di proxy API menggunakan port yang sama dengan yang ditampilkan oleh load balancer internal (ILB) di project target.

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. Login ke UI Apigee.
      2. Klik Admin > Instance.
      3. Klik 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 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 sebagai nama organisasi. Contoh, example-apigee-support.

      Sesuatu yang mirip dengan berikut ini akan ditampilkan. Lokasi hosting runtime adalah nilai yang ditampilkan untuk location di bawah. 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 lampiran endpoint. Contoh, example-ea.

    Sesuatu yang mirip dengan berikut ini akan ditampilkan. 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 halaman Private Service Connect .

      Buka Private Service Connect

    2. Periksa kolom Region untuk mengetahui lokasinya.

Resolusi

Pastikan region Instance Apigee, Lampiran endpoint, dan Lampiran layanan sama. Misalnya, asia-northeast1.

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

Jika region-nya berbeda, Anda akan melihat masalah konektivitas antara Apigee dan layanan target.

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

Diagnosis

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

  1. Di Konsol Google Cloud, buka halaman Firewall.

    Buka Firewall

  2. Di panel Aturan firewall VPC, pastikan ada aturan seperti contoh berikut:
    • Arah: Masuk
    • Tindakan jika ada kecocokan: Izinkan
    • Filter Sumber: Rentang IPv4/IPv6
    • Rentang IP: Rentang alamat IP Subnet PSC (ipCidrRange) yang dapat Anda dapatkan dengan perintah gcloud berikut 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 lokasi. Misalnya, asia-northeast1.

      Sesuatu yang mirip dengan berikut ini 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: Ini harus dicantumkan sesuai dengan konfigurasi layanan target Anda.
  3. Contoh:

Resolusi

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

Penyebab: Konfigurasi lampiran layanan yang salah di project target

Diagnosis

Periksa wilayah Lampiran layanan menggunakan salah satu metode berikut:

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

      Buka Private Service Connect

    2. Klik Layanan yang dipublikasikan.
    3. Klik layanan.
    4. Periksa baris Region untuk mengetahui lokasinya.

  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 lokasi. Misalnya, asia-northeast1.

    Sesuatu yang mirip dengan 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 mereferensikan project tenant Apigee dan pastikan statusnya adalah ACCEPTED. Anda dapat menemukan project tenant menggunakan Apigee Organizations API:
    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"

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

    Sesuatu yang mirip dengan berikut ini akan ditampilkan. ID tersebut berada di 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 dalam Pola jaringan southbound, Periksa dan kelola konektivitas lampiran. Di UI dari langkah 1 , pastikan bahwa:
    1. Baris Subnet mereferensikan subnet PSC. Misalnya, pscsub.
    2. Baris Target mereferensikan load balancer internal yang benar 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 lampiran endpoint. Contoh, example-ea.

Sesuatu yang mirip dengan 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 pada project target dan nama lampiran layanan yang benar

Penyebab: Ketidakcocokan pada port yang dikonfigurasi di TargetEndpoint dan ILB

Diagnosis

  1. Di project target, temukan port yang ditampilkan oleh aturan penerusan menggunakan Cloud Console:
    1. Di konsol Google Cloud, buka halaman Private Service Connect .

      Buka Private Service Connect

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

Resolusi

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

Untuk memeriksanya, buka Proxy API dan verifikasi URL TargetEndpoint:

  1. Menggunakan UI Apigee klasik:
    1. Login ke UI Apigee.
    2. Klik Develop > API Proxies
    3. Klik proxy.
    4. Klik Develop.
    5. Periksa panel XML untuk 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 Pengembangan proxy, klik Proxy API.
    3. Klik proxy.
    4. Klik Develop.
    5. Periksa panel XML untuk hal berikut:
        <HTTPTargetConnection>
          <URL>http://7.0.4.2:80</URL>
        </HTTPTargetConnection>

Harus mengumpulkan informasi diagnostik

Jika masalah berlanjut meskipun setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Layanan Pelanggan Google Cloud:

  • Organisasi Apigee
  • Lingkungan dan proxy API yang melihat masalah
  • Sesi debug yang didownload (ini akan memberikan semua info di atas)
  • Lampiran endpoint yang digunakan
  • Project target dan lampiran layanan