Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Tidak ada dokumentasi
Apigee Edge yang setara untuk topik ini.
Gejala
Dalam beberapa kasus, klien eksternal tidak dapat mengakses/terhubung ke Apigee dengan cara yang diinginkan. Hal ini termasuk kegagalan konektivitas jaringan (gagal handshake TLS) atau respons 4xx/5xx
dari Apigee.
Pesan error
Saat mengirim permintaan API dari Klien ke Apigee, Anda akan melihat kegagalan handshake TLS atau respons 4xx/5xx
meskipun proxy API mungkin tampak responsif di UI Apigee.
Kemungkinan penyebab
Penyebab | Deskripsi | Kode error |
---|---|---|
Error TLS di load balancer HTTPS | Anda mengelola konfigurasi TLS load balancer HTTPS. Selidiki error TLS di log load balancer HTTPS. | Error handshake TLS dari alamat IP load balancer |
Google Cloud Armor memblokir permintaan | Jika Anda menggunakan Google Cloud Armor, mungkin ada aturan yang memblokir permintaan. |
Kode respons API dapat bervariasi berdasarkan konfigurasi Google Cloud Armor. Aturan penolakan dapat menampilkan respons HTTP 403
(Tidak Sah), 404 (Akses Ditolak), atau 502
(Gateway Buruk) atau bahkan kode respons lainnya.
|
VM proxy Apigee tidak dapat meneruskan traffic ke instance Apigee | Konfigurasi proxy router traffic Apigee API dan responsnya perlu diselidiki | 502 Server Error |
Konfigurasi jaringan salah | Pastikan jaringan yang benar di-peering dengan VPC Apigee. | 502 Server error |
Lingkungan yang tidak terpasang pada instance Apigee baru yang dibuat sebagai bagian dari perluasan region | Setelah membuat instance baru, misalnya region kedua, Anda harus menambahkan lingkungan ke instance tersebut. Jika tidak, instance tidak dapat merespons permintaan API. | 503 error response |
Penyebab: Error TLS di load balancer HTTPS
Diagnosis
- Temukan sertifikat TLS yang terkait dengan load balancer.
- Menggunakan konsol Google Cloud:
-
Di konsol Google Cloud, buka halaman Load balancing.
-
Klik Nama load balancer. Halaman Detail load balancer akan terbuka.
- Di area Frontend, pada kolom IP:Port, pastikan Anda melihat load balancer yang tepat dengan memverifikasi alamat IP dan port-nya.
- Di kolom Sertifikat, klik nama sertifikat untuk melihat sertifikat TLS.
-
-
Menggunakan perintah gcloud:
-
Cantumkan load balancer dengan
perintah gcloud berikut. Perintah ini juga menampilkan
SSL_CERTIFICATES
yang terkait dengan setiap load balancer.gcloud compute target-https-proxies list --project=PROJECT_NAME
Ganti
PROJECT_NAME
dengan nama project Anda.Sesuatu yang mirip dengan yang berikut ini ditampilkan:
NAME: example-proxy-https-proxy SSL_CERTIFICATES: example-ssl-cert URL_MAP: example-proxy-url-map REGION: CERTIFICATE_MAP:
-
Lihat sertifikat TLS dengan
perintah gcloud berikut (dengan asumsi bahwa Anda telah menginstal
jq
atau alat serupa di mesin Anda):gcloud compute ssl-certificates describe CERTICATE_NAME \ --project PROJECT_NAME --format json | jq -r '.certificate' | openssl x509 -text -noout
Ganti CERTIFICATE_NAME dengan nama sertifikat. Contoh,
example-ssl-cert
.Sesuatu yang mirip dengan yang berikut ini ditampilkan:
certCertificate: Data: Version: 3 (0x2) Serial Number: 51:3b:a4:60:fe:49:34:a2:09:af:14:85:96:a2:4f:d9 Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, O = Google Trust Services LLC, CN = GTS CA 1D4 Validity Not Before: Jul 11 11:51:52 2023 GMT Not After : Oct 9 12:44:45 2023 GMT Subject: CN = 34.149.207.105.nip.io Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) . . Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication X509v3 Basic Constraints: critical CA:FALSE X509v3 Subject Key Identifier: A5:DB:7C:6A:8B:0B:7A:22:45:52:1E:85:29:32:77:18:A3:9D:87:76 X509v3 Authority Key Identifier: keyid:25:E2:18:0E:B2:57:91:94:2A:E5:D4:5D:86:90:83:DE:53:B3:B8:92 Authority Information Access: OCSP - URI:http://ocsp.pki.goog/s/gts1d4/qMhEcTt7LjA CA Issuers - URI:http://pki.goog/repo/certs/gts1d4.der X509v3 Subject Alternative Name: DNS:34.149.207.105.nip.io X509v3 Certificate Policies: Policy: 2.23.140.1.2.1 Policy: 1.3.6.1.4.1.11129.2.5.3 X509v3 CRL Distribution Points: Full Name: URI:http://crls.pki.goog/gts1d4/LjtNmxrQfWE.crl
Pastikan nama umum (CN) dalam sertifikat cocok dengan Nama host yang dikonfigurasi di Apigee > Admin > Environments > Groups. Pastikan sertifikat valid dan tidak habis masa berlakunya. Anda dapat menggunakan
openssl
untuk melakukan pemeriksaan ini.
-
Cantumkan load balancer dengan
perintah gcloud berikut. Perintah ini juga menampilkan
- Menggunakan konsol Google Cloud:
-
Untuk memeriksa sertifikat TLS yang ditampilkan oleh load balancer, jalankan perintah
openssl
berikut dari komputer klien. Periksa apakah sertifikat ini cocok dengan sertifikat yang ditampilkan pada langkah 1 di atas.openssl s_client -connect LB_HOSTNAME_OR_IP:443 -servername LB_HOSTNAME -showcerts
Ganti kode berikut:
-
LB_HOSTNAME_OR_IP: nama host atau alamat IP load balancer. Contoh,
my-load-balancer
. -
LB_HOSTNAME: nama host load balancer. Misalnya:
my-hostname
.
Untuk memastikan bahwa sertifikat cocok, jalankan perintah berikut dari klien Anda:
echo | openssl s_client -connect HOST_NAME:443 -servername HOST_NAME | openssl x509 -noout -text | openssl md5
Ganti HOST_NAME dengan nama host yang dikonfigurasi di Apigee (Admin > Environments > Groups).
Kemudian, verifikasi bahwa
md5
cocok dengan menjalankan perintah gcloud berikut:gcloud compute ssl-certificates describe CERTIFICATE_NAME --project PROJECT_NAME --format json | jq -r '.certificate' | openssl x509 -noout -text | openssl md5
Ganti CERTIFICATE_NAME dengan nama sertifikat. Misalnya,
my-certificate
-
LB_HOSTNAME_OR_IP: nama host atau alamat IP load balancer. Contoh,
-
Jika sertifikat langkah 1 dan langkah 2 cocok (yaitu, jika nilai
md5
cocok), lanjutkan untuk mengumpulkanpacket capture
di sisi klien untuk menyelidiki kegagalan handshake TLS. Anda dapat mengambil tangkapan paket di sisi klien dengan alat seperti Wireshark, tcpdump, atau alat andal lainnya. - Aktifkan log di load balancer dengan mengikuti petunjuk di Mengaktifkan logging di layanan backend yang ada.
- Tinjau log load balancer untuk menemukan error.
Resolusi
- Jika sertifikat yang dikelola sendiri di load balancer sudah tidak berlaku atau memiliki nilai CN/SAN yang salah, Anda mungkin perlu mengganti sertifikat load balancer.
-
Jika sertifikat yang ditampilkan oleh load balancer pada langkah 1 dan sertifikat pada langkah 2 tidak cocok, mungkin load balancer menayangkan sertifikat yang tidak berlaku/salah dan Anda harus mengajukan tiket ke Google Cloud Customer Care.
-
Jika
tcpdump
menunjukkan kegagalan handshake TLS, selidiki apakah kegagalan koneksi berasal dari load balancer atau dari sisi klien.- Jika kegagalan atau reset koneksi berasal dari sisi klien, maka periksa aplikasi klien Anda untuk memahami alasan perilakunya. Misalnya, Anda dapat memeriksa konfigurasi jaringan pada sisi klien atau memverifikasi bahwa aplikasi klien memiliki konektivitas dengan Apigee.
- Jika Anda melihat kegagalan/reset dari load balancer itu sendiri, lihat Memecahkan masalah konektivitas umum dan mengajukan tiket ke Google Cloud Customer Care jika diperlukan.
- Jika Anda melihat error di log load balancer, lihat Error 5XX yang tidak dijelaskan dan ajukan tiket ke Google Cloud Customer Care jika diperlukan.
Jika Anda masih memerlukan bantuan, lihat Harus mengumpulkan informasi diagnostik.
Penyebab: Cloud Armor memblokir permintaan
Diagnosis
Jika Anda melihat respons error 403
, 404
, atau 502
berdasarkan konfigurasi Cloud Armor, tinjau konfigurasi load balancer dan MIG untuk memastikan keduanya telah dikonfigurasi dengan benar dan tampak responsif.
- Jika Anda menggunakan Google Cloud Armor di lingkungan Google Cloud, tinjau konfigurasi Google Cloud Armor untuk mengetahui aturan yang mungkin memblokir permintaan. Kebijakan keamanan dapat ditemukan di Mengonfigurasi kebijakan keamanan Google Cloud Armor.
- Jika tidak yakin aturan mana yang menolak traffic, Anda dapat mencoba mengaktifkan logging di load balancer, seperti yang dijelaskan dalam Mengaktifkan logging di layanan backend yang ada.
-
Setelah logging diaktifkan, jalankan kueri log untuk menemukan semua permintaan yang diblokir oleh kebijakan Google Cloud Armor:
-
Di Konsol Google Cloud, buka halaman Logs Explorer.
-
Tempel perintah berikut ke panel Query:
jsonPayload.enforcedSecurityPolicy.outcome="DENY"
- Klik Jalankan kueri.
-
Nama kebijakan yang diterapkan ditampilkan di
jsonPayload.enforcedSecurityPolicy.name
di panel Query results:
-
Resolusi
Ubah aturan/konfigurasi Google Cloud Armor agar sesuai dengan kebutuhan Anda untuk mengatasi masalah ini. Jika Anda memerlukan bantuan terkait hal ini, hubungi Google Cloud Customer Care.
Penyebab: VM proxy Apigee tidak dapat meneruskan traffic ke instance Apigee
Diagnosis
-
Jika klien API menerima error
HTTP 502
dengan pesan error berikut, VM proxy router traffic API Apigee mungkin berada dalam status tidak responsif.Error
502
seperti berikut ini dapat diterima oleh klien:<html><head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>502 Server Error</title> </head> <body text=#000000 bgcolor=#ffffff> <h1>Error: Server Error</h1> <h2>The server encountered a temporary error and could not complete your request.<p>Please try again in 30 seconds.</h2> <h2></h2> </body></html>
Tinjau log load balancer untuk menemukan pesan error seperti berikut:
statusDetails: "failed_to_pick_backend" severity: "WARNING"
Ada serangkaian VM (dengan awalan
apigee-proxy
) yang berjalan dalam grup instance terkelola (MIG) yang meneruskan traffic ke instance Apigee. Jika Anda melihat pesan seperti di atas, periksa kondisi VMapigee-proxy
dari grup instance melalui langkah-langkah berikut:-
Di konsol Google Cloud, buka halaman Load balancing.
-
Klik Nama load balancer. Halaman Detail load balancer akan terbuka.
-
Di bagian Backend, pastikan semua backend load balancer memiliki tanda centang hijau di kolom Healthy.
-
-
Pastikan alamat IP endpoint di template MIG cocok dengan alamat IP instance Apigee.
VM
apigee-proxy
dibuat menggunakan template instance. Template ini menentukan alamat IPENDPOINT
untuk terhubung ke alamat IP instance Apigee.-
Dapatkan alamat IP instance Apigee:
curl -s -H "Authorization: Bearer (gcloud auth print-access-token)" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances/INSTANCE_NAME"
Ganti kode berikut:
-
ORG_NAME: nama organisasi Anda. Misalnya:
my-org
. -
INSTANCE_NAME: nama instance Anda. Misalnya:
apigee-proxy-example
.
-
ORG_NAME: nama organisasi Anda. Misalnya:
-
Atau, dapatkan alamat IP instance Apigee menggunakan UI Apigee:
- Di UI Apigee, klik Admin > Instances.
-
Kolom Alamat IP mencantumkan alamat IP:
-
Dapatkan alamat IP
ENDPOINT
dari template:-
Di Konsol Google Cloud, buka halaman Load balancing.
- Klik Nama load balancer. Halaman Detail load balancer akan terbuka.
- Di area Backend, klik nama layanan backend.
-
Di area Instance group members, klik nama Template.
-
Di halaman template, scroll ke Metadata kustom tempat Anda akan melihat alamat IP ENDPOINT:
-
Pastikan alamat IP ENDPOINT cocok dengan alamat IP Apigee yang ditampilkan di langkah 2. Jika tidak cocok, buka Resolution.
-
Dapatkan alamat IP instance Apigee:
Resolusi
-
Jika VM
apigee-proxy
dalam grup instance menampilkan status tidak responsif, pastikan Anda memiliki aturan firewall yang memungkinkan rentang alamat IP load balancing130.211.0.0/22
dan35.191.0.0/16
mengakses MIG. -
Di Konsol Google Cloud, buka halaman Firewall.
-
Pastikan ada aturan firewall masuk dengan
target-tag
sepertigke-apigee-proxy
dan rentang IP sumber seperti130.211.0.0/22
dan35.191.0.0/16
melalui port443 TCP
:Jika MIG memiliki tag yang berbeda dari
gke-apigee-proxy
, pastikan tag tersebut ditambahkan ketarget-tag
di aturan firewall.Jika aturan firewall tidak ada, tambahkan aturan tersebut.
- Jika alamat IP ENDPOINT tidak cocok dengan alamat IP instance Apigee, kemungkinan instance telah dihapus dan dibuat ulang, sehingga menghasilkan alamat IP yang tidak lagi cocok dengan alamat IP dalam template. Untuk memperbarui template agar dapat menggunakan alamat IP baru, ikuti petunjuk di Mengubah IP instance.
Penyebab: Konfigurasi jaringan salah
Diagnosis
-
Temukan nilai untuk
authorizedNetwork
dengan menjalankan panggilan API berikut:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"
Sesuatu yang mirip dengan yang berikut ini ditampilkan:
{ "name": "apigee-example-org", "createdAt": "1621287579456", "lastModifiedAt": "1674063833580", "environments": [ "test" ], "properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, "analyticsRegion": "us-west1", "authorizedNetwork": "default", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "certificate-number", "runtimeDatabaseEncryptionKeyName": "projects/apigee-example-org/locations/us-west1/keyRings/my-database-key-ring/cryptoKeys/my-database-key", "projectId": "apigee-example-org", "state": "ACTIVE", "billingType": "SUBSCRIPTION", "addonsConfig": { "advancedApiOpsConfig": {}, "integrationConfig": {}, "monetizationConfig": {} }, "apigeeProjectId": "l09587a43efde330cp-tp" }
Dalam contoh ini, nilai untuk
authorizedNetwork
adalah default. -
Verifikasi bahwa nilai
authorizedNetwork
sama dengan jaringan yang di-peering denganservicenetworking
:-
Di konsol Google Cloud project host, buka halaman peering jaringan VPC.
-
Nilai yang tercantum untuk
servicenetworking-googleapis-com
dalam Jaringan VPC Anda harus sama dengan nilai yang ditampilkan dari panggilan API. Misalnya,default
.
-
-
Jika Anda menggunakan VPC Bersama, pastikan bahwa nilai
authorizedNetwork
memiliki nilai VPC yang sebenarnya dalam project host yang di-peering denganservicenetworking
.-
Di konsol Google Cloud, buka halaman VPC Bersama.
- Pilih project host.
-
Nilai yang tercantum untuk
servicenetworking-googleapis-com
dalam Jaringan VPC Anda harus sama dengan nilaiauthorizedNetwork
yang ditampilkan dari panggilan API. Misalnya:default
.
-
-
Pastikan bahwa grup instance yang terkait dengan load balancer adalah jaringan yang sama dengan nilai
authorizedNetwork
:-
Di Konsol Google Cloud, buka halaman Load balancing.
-
Klik nama load balancer. Halaman Detail load balancer akan terbuka. Daftar grup instance ditampilkan di area Backend:
- Klik nama grup instance. Halaman Overview grup instance akan ditampilkan.
- Klik tab Details.
-
Scroll ke bagian Jaringan:
-
Pastikan Jaringan utama di sini sama dengan
nilai
authorizedNetwork
. Misalnya,default
. - Klik tab Ringkasan.
- Di bagian Instance Group Members, klik nama instance. Halaman Details akan ditampilkan.
-
Scroll ke bagian Network Interfaces:
-
Pastikan nilai Network sama dengan
nilai
authorizedNetwork
. Misalnya,default
. - Buka tab Ringkasan dan ulangi langkah h hingga langkah j untuk setiap instance di bagian Instance Group Members.
-
Resolusi
-
Jika pada langkah 2 atau langkah 3, nilai
authorizedNetwork
tidak sama dengan jaringan yang di-peering denganservicenetworking
, pastikan Anda telah meng-peering jaringan VPC yang benar menggunakanservicenetworking
dengan mengikuti langkah-langkah di Langkah 4: Konfigurasi jaringan layanan. -
Jika pada langkah 4f dan 4j, nilai jaringan tidak sama dengan nilai
authorizedNetwork
, pastikan bahwaauthorizedNetwork
adalah jaringan yang di-peering denganservicenetworking.
Jika di-peering dengan benar, dan jaringan masih tidak sama denganauthorizedNetwork,
, berarti grup instance dibuat dengan tidak benar dan Anda harus menghubungi Google Cloud Customer Care.
Penyebab: Lingkungan yang tidak terpasang pada instance Apigee baru yang dibuat sebagai bagian dari perluasan region
Diagnosis
-
Anda melihat error
503
di sisi klien. Contoh:HTTP/2 503 date: Thu, 08 Jun 2023 07:22:15 GMT content-length: 0 via: 1.1 google alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
-
Jika Anda melihat error
503
di region kedua segera setelah perluasan region:-
Pastikan lingkungan telah ditambahkan ke instance baru dengan menjalankan
panggilan API berikut:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances/NEW_INSTANCE/attachments"
Contoh:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/apigee-example-org/instances/apigee-proxy-example/attachments"
Sesuatu yang mirip dengan yang berikut ini ditampilkan:
{ "attachments": [ { "name": "9ed157df-5ef2-4cdc-b1d5-2643b480eb33", "environment": "dev", "createdAt": "1628153855420" }, { "name": "a9e04dff-4ca4-4749-902f-5058e28c26a5", "environment": "prod", "createdAt": "1664517347106" } ] }
Dalam contoh ini, instance bernama
apigee-proxy-example
dilampirkan ke dua lingkungan:dev
danprod
. -
Pastikan grup instance terkelola (MIG) untuk region kedua telah dibuat dan ditampilkan sebagai responsif:
-
Di Konsol Google Cloud, buka halaman Load balancing.
- Klik Nama load balancer. Halaman Detail load balancer akan terbuka.
-
Di bagian Backend, Anda akan melihat dua MIG; satu untuk region 1, dan satu untuk region 2. Pastikan keduanya sehat:
- Validasi MIG kedua dengan mengikuti langkah-langkah di bagian VM proxy Apigee tidak dapat meneruskan traffic ke instance Apigee.
-
-
Pastikan lingkungan telah ditambahkan ke instance baru dengan menjalankan
panggilan API berikut:
Resolusi
-
Jika instance baru tidak terpasang ke lingkungan, lampirkan instance ke lingkungan dengan mengikuti petunjuk dalam Melampirkan lingkungan ke instance baru.
Opsi lainnya adalah memastikan load balancer mengarahkan permintaan ke backend yang benar tempat lingkungan sudah terpasang. Misalnya, dari lingkungan nonprod. Anda mungkin hanya ingin mengaitkan permintaan ini ke satu region. Namun, load balancer mungkin mengarahkan permintaan ke region yang salah. Anda harus memperbarui konfigurasi load balancer untuk memastikan bahwa konfigurasi tersebut dirutekan ke region yang benar.
- Jika MIG tidak responsif, lihat bagian Diagnosis dan Resolusi di VM proxy Apigee tidak dapat meneruskan traffic ke instance Apigee.
Harus mengumpulkan informasi diagnostik
Jika masalah terus berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Google Cloud Customer Care:
- Organisasi Apigee
- Proxy lingkungan dan API mengalami masalah
- Sesi debug yang didownload (jika masalahnya sesekali)
- Output curl panjang dari permintaan yang gagal.
- Load balancer dikonfigurasi untuk mengirim panggilan API ke Apigee