Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat dokumentasi
Apigee Edge.
Gejala
Dalam beberapa kasus, klien eksternal tidak dapat mengakses/terhubung ke Apigee dengan cara yang diinginkan. Hal ini mencakup kegagalan konektivitas jaringan (TLS handshake gagal) atau respons 4xx/5xx dari Apigee.
Pesan error
Saat mengirim permintaan API dari Klien ke Apigee, Anda melihat kegagalan handshake TLS atau respons 4xx/5xx meskipun proxy API mungkin tampak berfungsi dengan baik di UI Apigee.
Kemungkinan penyebab
| Penyebab | Deskripsi | Kode error |
|---|---|---|
| Kesalahan TLS pada load balancer HTTPS | Anda mengelola konfigurasi TLS load balancer HTTPS. Selidiki kesalahan TLS apa pun di log load balancer HTTPS. | Kesalahan jabat tangan TLS dari alamat IP penyeimbang beban |
| Google Cloud Armor memblokir permintaan | Jika Anda menggunakan Google Cloud Armor, mungkin ada aturan yang memblokir permintaan. |
Kode respons API dapat bervariasi tergantung pada konfigurasi Google Cloud Armor. Aturan penolakan dapat menampilkan respons HTTP 403
(Tidak Sah), 404 (Akses Ditolak), atau 502
(Bad Gateway) atau bahkan kode respons lain.
|
| VM proxy Apigee tidak dapat meneruskan traffic ke instance Apigee | Konfigurasi proxy perute traffic API Apigee dan kondisinya perlu diselidiki | 502 Server Error |
| Konfigurasi jaringan salah | Pastikan jaringan yang benar di-peering dengan VPC Apigee. | 502 Server error |
| Lingkungan yang tidak terlampir pada instance Apigee baru yang dibuat sebagai bagian dari perluasan wilayah | Setelah membuat instance baru, misalnya region kedua, Anda harus melampirkan lingkungan ke instance tersebut, jika tidak, instance tidak dapat merespons permintaan API. | 503 error response |
Penyebab: Kesalahan TLS pada load balancer HTTPS
Diagnosis
- Temukan sertifikat TLS yang terkait dengan load balancer.
- Menggunakan konsol Google Cloud :
-
Di dalam Google Cloud konsol, bukaPenyeimbangan beban halaman.
-
Klik Name load balancer. Halaman Detail load balancer terbuka.
- Di area Frontend, di 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_CERTIFICATESyang terkait dengan setiap load balancer.gcloud compute target-https-proxies list --project=PROJECT_NAME
Ganti
PROJECT_NAMEdengan nama project Anda.Sesuatu yang mirip dengan berikut ini akan 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 (ini mengasumsikan Anda telah memasang
jqatau 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 berikut ini akan 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 bahwa nama umum ( CN ) dalam sertifikat cocok dengan Nama host dikonfigurasi di Apigee> Admin> Lingkungan> Kelompok. Pastikan sertifikat tersebut masih berlaku dan belum kedaluwarsa. Anda dapat menggunakan
openssluntuk melakukan pemeriksaan ini.
-
Cantumkan load balancer dengan perintah gcloud berikut . Perintah ini juga menampilkan
- Menggunakan konsol Google Cloud :
-
Untuk memeriksa sertifikat TLS yang dikembalikan oleh load balancer, jalankan perintah
opensslberikut dari mesin klien Anda. Periksa apakah sertifikat ini cocok dengan sertifikat yang ditampilkan di 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 memverifikasi 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
md5cocok 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
md5cocok), lanjutkan pengumpulanpacket capturedi sisi klien untuk menyelidiki kegagalan handshake TLS. Anda dapat mengambil tangkapan paket di sisi klien Anda 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.
- Periksa log load balancer untuk mengetahui adanya kesalahan.
Resolusi
- Jika sertifikat yang Anda kelola sendiri pada load balancer telah kedaluwarsa atau memiliki nilai CN/SAN yang salah, Anda mungkin perlu mengganti sertifikat pada load balancer.
-
Jika sertifikat yang dikembalikan oleh load balancer pada langkah 1 dan sertifikat pada langkah 2 tidak cocok, maka ini mungkin berarti load balancer tersebut menggunakan sertifikat yang sudah kadaluarsa/salah, dan Anda harus mengajukan tiket ke Layanan Pelanggan Google Cloud.
-
Jika
tcpdumpmenunjukkan kegagalan TLS handshake, selidiki apakah kegagalan koneksi berasal dari load balancer atau dari sisi klien.- Jika kegagalan atau reset koneksi berasal dari sisi klien, periksa aplikasi klien Anda untuk memahami penyebabnya. Misalnya, Anda dapat memeriksa konfigurasi jaringan di 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 ajukan tiket ke Google Cloud Customer Care jika diperlukan.
- Jika Anda melihat error di log load balancer, lihat Error 5XX yang tidak dapat 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 memverifikasi bahwa keduanya
dikonfigurasi dengan benar dan tampak dalam kondisi baik.
- 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 di Mengaktifkan logging di layanan backend yang ada.
-
Setelah pencatatan log diaktifkan, lakukan kueri log untuk menemukan permintaan apa pun yang diblokir oleh kebijakan Google Cloud Armor:
-
Di konsol Google Cloud , buka halaman Logs Explorer.
-
Tempelkan yang berikut ini ke dalam panel Query:
jsonPayload.enforcedSecurityPolicy.outcome="DENY"
- Klik Run query.
-
Nama kebijakan yang diberlakukan ditampilkan di
jsonPayload.enforcedSecurityPolicy.namepada panel Hasil kueri:
-
Resolusi
Ubah aturan/konfigurasi Google Cloud Armor agar sesuai dengan kebutuhan Anda untuk menyelesaikan masalah ini. Jika Anda memerlukan bantuan terkait hal ini, hubungi Layanan Pelanggan Google Cloud.
Penyebab: VM proxy Apigee tidak dapat meneruskan lalu lintas ke instance Apigee.
Diagnosis
-
Jika klien API menerima kesalahan
HTTP 502dengan pesan kesalahan berikut, maka VM proxy router lalu lintas API Apigee mungkin berada dalam kondisi tidak sehat.Error
502seperti berikut mungkin 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 melihat pesan error seperti berikut:
statusDetails: "failed_to_pick_backend" severity: "WARNING"
Terdapat sejumlah VM (dengan awalan
apigee-proxy) yang berjalan dalam grup instance terkelola (MIG) yang meneruskan lalu lintas ke instance Apigee. Jika Anda melihat pesan seperti di atas, periksa kesehatan VMapigee-proxyyang merupakan bagian dari grup instance melalui langkah-langkah berikut:-
Di dalam Google Cloud konsol, bukaPenyeimbangan beban halaman.
-
Klik load balancer Nama. Halaman Detail load balancer terbuka.
-
Di bagian Backend, verifikasi bahwa semua backend load balancer memiliki tanda centang hijau di kolom Healthy.
-
-
Pastikan alamat IP endpoint dalam template MIG cocok dengan alamat IP instance Apigee.
VM
apigee-proxydibuat menggunakan template instance. Template menentukan alamat IPENDPOINTuntuk 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
ENDPOINTdari templat:-
Di konsol Google Cloud , buka halaman Load balancing.
- Klik load balancer Nama. Halaman Detail load balancer terbuka.
- Di area Backend, klik nama layanan backend.
-
Di area Anggota grup instance, klik nama Template.
-
Pada halaman templat, gulir ke Metadata kustom di mana Anda akan melihat alamat IP ENDPOINT:
-
Pastikan bahwa alamat IP ENDPOINT cocok dengan alamat IP Apigee yang dikembalikan pada langkah 2. Jika tidak cocok, buka Resolusi.
-
Dapatkan alamat IP instance Apigee:
Resolusi
-
Jika VM
apigee-proxydalam grup instance menampilkan status tidak sehat, pastikan Anda memiliki aturan firewall yang memungkinkan rentang alamat IP penyeimbang beban130.211.0.0/22dan35.191.0.0/16mengakses MIG. -
Di konsol Google Cloud , buka halaman Firewall.
-
Pastikan aturan firewall masuk ada dengan
target-tagsepertigke-apigee-proxydan rentang IP sumber seperti130.211.0.0/22dan35.191.0.0/16melalui port443 TCP:
Jika MIG memiliki tag yang berbeda dengan
gke-apigee-proxy, pastikan tag tersebut ditambahkan ketarget-tagdalam aturan firewall.Jika aturan firewall tidak ada, tambahkan.
- Jika alamat IP ENDPOINT tidak cocok dengan alamat IP instance Apigee, ada kemungkinan instance tersebut dihapus dan dibuat ulang, sehingga alamat IP tidak lagi cocok dengan alamat IP dalam template. Untuk memperbarui template agar menggunakan alamat IP baru, ikuti petunjuk di Mengubah IP instance.
Penyebab: Konfigurasi jaringan salah
Diagnosis
-
Temukan nilai untuk
authorizedNetworkdengan 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 berikut ini akan 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
authorizedNetworkadalah nilai default. -
Verifikasi bahwa nilai
authorizedNetworksama dengan jaringan yang di-peering denganservicenetworking:-
Di konsol Google Cloud project host, buka halaman peering Jaringan VPC.
-
Nilai yang tercantum untuk
servicenetworking-googleapis-comdi Jaringan VPC Anda harus sama dengan nilai yang dikembalikan dari panggilan API. Misalnya,default.
-
-
Jika Anda menggunakan Shared VPC, pastikan nilai
authorizedNetworkberisi nilai VPC sebenarnya di proyek host yang di-peer denganservicenetworking.-
Di konsol Google Cloud , buka halaman VPC Bersama.
- Pilih proyek host.
-
Nilai yang tercantum untuk
servicenetworking-googleapis-comdi Jaringan VPC Anda harus sama dengan nilaiauthorizedNetworkyang ditampilkan dari panggilan API. Misalnya,default.
-
-
Verifikasi bahwa grup instance yang terkait dengan load balancer berada di jaringan yang sama dengan nilai
authorizedNetwork:-
Di konsol Google Cloud , buka halaman Load balancing.
-
Klik nama load balancer. Halaman Detail load balancer terbuka. Daftar grup instance ditampilkan di area Backend:
- Klik nama grup instans. Halaman Overview grup instance akan ditampilkan.
- Klik tab Details.
-
Scroll ke bagian Networking:
-
Pastikan Jaringan utama di sini sama dengan nilai
authorizedNetwork. Misalnya,default. - Klik tab Overview.
- Di bagian Instance Group Members, klik nama instance. Halaman Detail 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 Anggota Grup Instance.
-
Resolusi
-
Jika pada langkah 2 atau langkah 3, nilai
authorizedNetworktidak sama dengan jaringan yang di-peer denganservicenetworking, maka pastikan Anda telah melakukan peering jaringan VPC yang benar denganservicenetworkingdengan mengikuti langkah-langkah pada Langkah 4: Konfigurasi jaringan layanan. -
Jika pada langkah 4f dan 4j, nilai jaringan tidak sama dengan nilai
authorizedNetwork, maka verifikasi bahwaauthorizedNetworkadalah jaringan yang terhubung denganservicenetworking.. Jika sudah terhubung dengan benar, dan jaringan masih tidak sama denganauthorizedNetwork,maka ini berarti grup instance dibuat dengan tidak benar dan Anda harus menghubungi Google Cloud Customer Care.
Penyebab: Lingkungan yang tidak terlampir pada instance Apigee baru yang dibuat sebagai bagian dari perluasan wilayah
Diagnosis
-
Anda melihat kesalahan
503di 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
503di region kedua segera setelah perluasan region:-
Pastikan lingkungan terpasang 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 berikut ini akan 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-exampledilampirkan ke dua lingkungan:devdanprod. -
Pastikan grup instance terkelola (MIG) untuk region kedua telah dibuat dan ditampilkan sebagai responsif:
-
Di konsol Google Cloud , buka halaman Load balancing.
- Klik Name load balancer. Halaman Load balancer details akan terbuka.
-
Di bagian Backend, Anda akan melihat dua MIG; satu untuk region 1, dan
satu untuk region 2. Pastikan keduanya responsif:
- Validasi MIG kedua dengan mengikuti langkah-langkah di VM proxy Apigee tidak dapat meneruskan traffic ke instance Apigee.
-
-
Pastikan lingkungan terpasang ke instance baru dengan menjalankan panggilan API berikut:
Resolusi
-
Jika instance baru tidak dilampirkan ke lingkungan, lampirkan instance ke lingkungan dengan mengikuti petunjuk di Melampirkan lingkungan ke instance baru.
Opsi lainnya adalah memastikan load balancer merutekan permintaan ke backend yang benar tempat lingkungan sudah terlampir. Misalnya, dari lingkungan non-produksi. Anda mungkin ingin melampirkan ini hanya ke satu region; namun, load balancer mungkin merutekan permintaan ke region yang salah. Anda harus memperbarui konfigurasi load balancer untuk memastikan perutean ke region yang benar.
- Jika MIG tidak responsif, lihat Diagnosis dan Penyelesaian di VM proxy Apigee tidak dapat meneruskan traffic ke instance Apigee.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Layanan Pelanggan Google Cloud:
- Organisasi Apigee
- Lingkungan dan proxy API yang mengalami masalah
- Sesi debug yang diunduh (jika masalahnya terjadi sesekali)
- Output curl yang detail dari permintaan yang gagal.
- Load balancer yang dikonfigurasi untuk mengirim panggilan API ke Apigee