Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat
Dokumentasi Apigee Edge.
Gejala
Deployment proxy API gagal dengan peringatan Tidak ada pod runtime aktif di Apigee Hybrid UI.
Pesan error
Peringatan Tidak ada pod runtime yang aktif ditampilkan di Detail dialog di samping pesan error Masalah deployment pada ENVIRONMENT: REVISION_NUMBER di halaman proxy API:
Masalah ini dapat bermunculan sebagai error yang berbeda di halaman resource UI lainnya. Berikut beberapa contoh pesan error:
Pesan error UI Hybrid #1: Error Datastore
Anda mungkin melihat Error Datastore pada Produk API dan Aplikasi UI campuran seperti yang ditunjukkan di bawah ini:
Pesan error UI Hybrid #2: Error Server Internal
Anda mungkin melihat Error Server Internal di halaman Developer pada UI seperti yang ditunjukkan di bawah ini:
Output perintah Kubectl
Anda mungkin melihat status pod apiege-mart
, apigee-runtime
, dan apigee-
synchronizer
berubah menjadi CrashLoopBackOff
di
Output perintah kubectl get pods
:
Pesan error log komponen
Anda akan mengamati error kegagalan pemeriksaan keaktifan berikut di apigee-runtime
Log pod dalam rilis hybrid Apigee >= 1.4.0:
{"timestamp":"1621575431454","level":"ERROR","thread":"qtp365724939-205","mdc":{"targetpath":"/v1/pr obes/live"},"logger":"REST","message":"Error occurred : probe failed Probe cps-datastore- connectivity-liveliness-probe failed due to com.apigee.probe.model.ProbeFailedException{ code = cps.common.datastoreConnectionNotHealthy, message = Datastore connection not healthy, associated contexts = []}\n\n\tcom.apigee.probe.ProbeAPI.getResponse(ProbeAPI.java:66)\n\tcom.apigee.probe.ProbeAPI.getLiv eStatus(ProbeAPI.java:55)\n\tsun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)\n\tsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\t ","context":"apigee-service- logs","severity":"ERROR","class":"com.apigee.rest.framework.container.ExceptionMapper","method":"toR esponse"} {"timestamp":"1621575431454","level":"ERROR","thread":"qtp365724939-205","mdc":{"targetpath":"/v1/pr obes/live"},"logger":"REST","message":"Returning error response : ErrorResponse{errorCode = probe.ProbeRunError, errorMessage = probe failed Probe cps-datastore-connectivity-liveliness-probe failed due to com.apigee.probe.model.ProbeFailedException{ code = cps.common.datastoreConnectionNotHealthy, message = Datastore connection not healthy, associated contexts = []}}","context":"apigee-service- logs","severity":"ERROR","class":"com.apigee.rest.framework.container.ExceptionMapper","method":"toR esponse"}
Anda akan mengamati error Cannot build a cluster without contact points
berikut
di apigee-synchronizer
log pod pada rilis hybrid Apigee >= 1.4.0:
{"timestamp":"1621575636434","level":"ERROR","thread":"main","logger":"KERNEL.DEPLOYMENT","message": "ServiceDeployer.deploy() : Got a life cycle exception while starting service [SyncService, Cannot build a cluster without contact points] : {}","context":"apigee-service- logs","exception":"java.lang.IllegalArgumentException: Cannot build a cluster without contact points\n\tat com.datastax.driver.core.Cluster.checkNotEmpty(Cluster.java:134)\n\tat com.datastax.driver.core.Cluster.<init>(Cluster.java:127)\n\tat com.datastax.driver.core.Cluster.buildFrom(Cluster.java:193)\n\tat com.datastax.driver.core.Cluster$Builder.build(Cluster.java:1350)\n\tat io.apigee.persistence.PersistenceContext.newCluster(PersistenceContext.java:214)\n\tat io.apigee.persistence.PersistenceContext.<init>(PersistenceContext.java:48)\n\tat io.apigee.persistence.ApplicationContext.<init>(ApplicationContext.java:19)\n\tat io.apigee.runtimeconfig.service.RuntimeConfigServiceImpl.<init>(RuntimeConfigServiceImpl.java:75) \n\tat io.apigee.runtimeconfig.service.RuntimeConfigServiceFactory.newInstance(RuntimeConfigServiceFactory. java:99)\n\tat io.apigee.common.service.AbstractServiceFactory.initializeService(AbstractServiceFactory.java:301)\n \tat ...","severity":"ERROR","class":"com.apigee.kernel.service.deployment.ServiceDeployer","method":"sta rtService"}
Anda akan mengamati error kegagalan pemeriksaan keaktifan berikut di pod apigee-mart
log dalam rilis hybrid Apigee >= 1.4.0:
{"timestamp":"1621576757592","level":"ERROR","thread":"qtp991916558-144","mdc":{"targetpath":"/v1/pr obes/live"},"logger":"REST","message":"Error occurred : probe failed Probe cps-datastore- connectivity-liveliness-probe failed due to com.apigee.probe.model.ProbeFailedException{ code = cps.common.datastoreConnectionNotHealthy, message = Datastore connection not healthy, associated contexts = []}\n\n\tcom.apigee.probe.ProbeAPI.getResponse(ProbeAPI.java:66)\n\tcom.apigee.probe.ProbeAPI.getLiv eStatus(ProbeAPI.java:55)\n\tsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\t","conte xt":"apigee-service- logs","severity":"ERROR","class":"com.apigee.rest.framework.container.ExceptionMapper","method":"toR esponse"} {"timestamp":"1621576757593","level":"ERROR","thread":"qtp991916558-144","mdc":{"targetpath":"/v1/pr obes/live"},"logger":"REST","message":"Returning error response : ErrorResponse{errorCode = probe.ProbeRunError, errorMessage = probe failed Probe cps-datastore-connectivity-liveliness-probe failed due to com.apigee.probe.model.ProbeFailedException{ code = cps.common.datastoreConnectionNotHealthy, message = Datastore connection not healthy, associated contexts = []}}","context":"apigee-service- logs","severity":"ERROR","class":"com.apigee.rest.framework.container.ExceptionMapper","method":"toR esponse"}
Informasi tentang error Tidak ada pod runtime aktif
Dalam rilis Apigee Hybrid 1.4.0, fitur pemeriksaan keaktifan ditambahkan ke
Pod apigee-runtime
dan apigee-mart
untuk memeriksa status pod
Pod Cassandra. Jika semua pod Cassandra menjadi tidak tersedia, pemeriksaan keaktifan
apigee-runtime
dan apigee-mart
pod akan gagal. Dengan demikian,
apigee-runtime
dan apigee-mart
pod akan masuk ke
CrashLoopBackOff
status menyebabkan deployment proxy API gagal dengan peringatan
No active runtime pods
.
Pod apigee-synchronizer
juga akan dipindahkan ke status CrashLoopBackOff
karena pod Cassandra tidak tersedia.
Kemungkinan penyebab
Berikut adalah beberapa kemungkinan penyebab error ini:
Penyebab | Deskripsi |
---|---|
Pod Cassandra tidak aktif | Pod Cassandra tidak aktif; sehingga pod apigee-runtime tidak akan dapat berkomunikasi dengan database Cassandra. |
Replika Cassandra yang dikonfigurasi hanya dengan satu pod | Hanya memiliki satu pod Cassandra bisa menjadi titik tunggal kegagalan. |
Penyebab: Pod Cassandra tidak aktif
Selama proses deployment proxy API, pod apigee-runtime
terhubung ke
Database Cassandra untuk mengambil resource, seperti Key Value Maps (KVM) dan cache, yang ditentukan dalam proxy API. Jika tidak ada
Pod Cassandra sedang berjalan, maka pod apigee-runtime
tidak akan dapat terhubung ke
dari database Cassandra. Hal ini menyebabkan kegagalan deployment Proxy API.
Diagnosis
- Mencantumkan pod Cassandra:
kubectl -n apigee get pods -l app=apigee-cassandra
Contoh output 1:
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 0/1 Pending 0 9m23s
Contoh output 2:
NAME READY STATUS RESTARTS AGE apigee-cassandra-0 0/1 CrashLoopBackoff 0 10m
- Verifikasi status setiap pod Cassandra. Status semua pod Cassandra harus dalam
status
Running
. Jika salah satu pod Cassandra berada dalam status yang berbeda, itu bisa berarti alasan untuk masalah ini. Lakukan langkah-langkah berikut untuk menyelesaikan masalah:
Resolusi
- Jika salah satu pod Cassandra berada dalam status
Pending
, lihat Pod Cassandra macet dalam status Tertunda untuk memecahkan masalah dan menyelesaikan masalah. - Jika salah satu pod Cassandra berada dalam status
CrashLoopBackoff
, lihat Pod Cassandra macet dalam status CrashLoopBackoff untuk memecahkan dan menyelesaikan masalah.Contoh output:
kubectl -n apigee get pods -l app=apigee-runtime NAME READY STATUS RESTARTS AGE apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-2gnch 1/1 Running 13 43m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-42jdv 1/1 Running 13 45m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-l7wq7 1/1 Running 13 43m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-q2thb 1/1 Running 8 38m
kubectl -n apigee get pods -l app=apigee-mart NAME READY STATUS RESTARTS AGE apigee-mart-apigee-hybrid-s-2664b3e-143-u0a5c-rtg69 2/2 Running 8 28m
kubectl -n apigee get pods -l app=apigee-synchronizer NAME READY STATUS RESTARTS AGE apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zp269nb 2/2 Running 10 29m apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zp2w2jp 2/2 Running 0 4m40s apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zpkfkvq 2/2 Running 0 4m40s apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zpxmzhn 2/2 Running 0 4m40s
Penyebab: Replika Cassandra dikonfigurasi hanya dengan satu pod
Jika jumlah replika Cassandra dikonfigurasi menjadi satu, hanya akan ada satu pod Cassandra yang tersedia
dalam runtime. Akibatnya, pod apigee-runtime
mungkin mengalami masalah konektivitas
jika pod Cassandra tersebut
tidak tersedia untuk jangka waktu tertentu.
Diagnosis
- Dapatkan set stateful Cassandra dan periksa jumlah replika saat ini:
kubectl -n apigee get statefulsets -l app=apigee-cassandra
Contoh output:
NAME READY AGE apigee-cassandra-default 1/1 21m
- Jika jumlah replika dikonfigurasi menjadi 1, lakukan langkah berikut untuk meningkatkannya angka yang lebih tinggi.
Resolusi
Deployment non-produksi hybrid Apigee mungkin Jumlah replika Cassandra ditetapkan ke 1. Jika ketersediaan tinggi Cassandra penting dalam kondisi non- deployment produksi, tingkatkan jumlah replika menjadi 3 untuk menyelesaikan masalah ini.
Lakukan langkah-langkah berikut untuk menyelesaikan masalah ini:
- Perbarui file
overrides.yaml
dan tetapkan jumlah replika Cassandra ke 3:cassandra: replicaCount: 3
Untuk informasi konfigurasi Cassandra, lihat Referensi properti konfigurasi.
- Terapkan konfigurasi di atas menggunakan CLI
apigeectl
:cd path/to/hybrid-files apigeectl apply -f overrides/overrides.yaml
- Dapatkan set stateful Cassandra dan periksa jumlah replika saat ini:
kubectl -n get statefulsets -l app=apigee-cassandra
Contoh output:
NAME READY AGE apigee-cassandra-default 3/3 27m
- Mendapatkan pod Cassandra dan memeriksa jumlah instance saat ini. Jika semua pod belum siap dan
Dalam status
Running
, tunggu pod Cassandra baru dibuat dan diaktifkan:kubectl -n get pods -l app=apigee-cassandra
Contoh output:
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 29m apigee-cassandra-default-1 1/1 Running 0 21m apigee-cassandra-default-2 1/1 Running 0 19m
Contoh output:
kubectl -n apigee get pods -l app=apigee-runtime NAME READY STATUS RESTARTS AGE apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-2gnch 1/1 Running 13 43m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-42jdv 1/1 Running 13 45m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-l7wq7 1/1 Running 13 43m apigee-runtime-apigee-hybrid-s-test1-8b64f12-143-501i7-q2thb 1/1 Running 8 38m
kubectl -n apigee get pods -l app=apigee-mart NAME READY STATUS RESTARTS AGE apigee-mart-apigee-hybrid-s-2664b3e-143-u0a5c-rtg69 2/2 Running 8 28m
kubectl -n apigee get pods -l app=apigee-synchronizer NAME READY STATUS RESTARTS AGE apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zp269nb 2/2 Running 10 29m apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zp2w2jp 2/2 Running 0 4m40s apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zpkfkvq 2/2 Running 0 4m40s apigee-synchronizer-apigee-hybrid-s-test1-8b64f12-143-96zpxmzhn 2/2 Running 0 4m40s
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti instruksi di atas, kumpulkan informasi diagnostik, lalu hubungi Google Cloud Customer Care.
- ID Project Google Cloud
- Organisasi Apigee Hybrid/Apigee
- Untuk Apigee Hybrid:
overrides.yaml
, yang menyamarkan semua informasi sensitif - Status pod Kubernetes di semua namespace:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
- Dump info cluster Kubernetes:
# generate kubernetes cluster-info dump kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump # zip kubernetes cluster-info dump zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*
Referensi
- Menskalakan Cassandra secara horizontal
- Introspeksi dan Proses Debug Aplikasi Kubernetes
- Tips Praktis kubectl