Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Tidak ada padanan
Dokumentasi Apigee Edge untuk topik ini.
Gejala
Selama pemulihan Cassandra di Apigee Hybrid, Anda mungkin mengalami error pada memulihkan log.
Pesan error
Anda akan melihat salah satu hal berikut dalam log:
java.net.ConnectException: Connection timed out (Connection timed out)
/tmp/tmp/schema.cql:662:OperationTimedOut: errors={'10.0.0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=10.0.0.1
/tmp/tmp/schema.cql:6409:AlreadyExists: Table 'kvm_myorg.kvm_map_keys_descriptor' already exists
Kemungkinan penyebab
Penyebab | Deskripsi | Petunjuk pemecahan masalah berlaku untuk |
---|---|---|
Waktu koneksi habis |
Kesalahan ini adalah kesalahan konektivitas antara
apigee-cassandra-restore pod dan
apigee-cassandra-default-* pod.
|
Apigee hybrid |
Waktu operasi habis | Error ini terjadi jika waktu pemulihan habis setelah lebih dari 15 menit. | Apigee hybrid |
Sudah ada | Pesan error ini tidak terkait dengan penyebab masalah dan merupakan hasil dari operasi percobaan ulang dari tugas pemulihan. | Apigee hybrid |
Penyebab: Waktu sambungan habis
Error berikut adalah error konektivitas antara
apigee-cassandra-restore
pod dan
apigee-cassandra-default-*
pod:
java.net.ConnectException: Connection timed out (Connection timed out)
Diagnosis
-
Jika jaringan host Anda tidak dapat dijangkau dari jaringan pod, pastikan bahwa
hostNetwork
ditetapkan kefalse
di bagiancassandra
dioverrides.yaml
seperti yang ditunjukkan di Memulihkan region dari cadangan. -
Untuk menguji konektivitas, login ke
apigee-mart
atau Podapigee-runtime
, yang berada di jaringan yang sama dengan Tugasapigee-cassandra-restore
. Anda juga dapat menggunakan pod lainnya dalam jaringan pod.-
Dapatkan nama
apigee-mart
pod:kubectl -n apigee get po --selector=app=apigee-mart --no-headers -o custom-columns=":metadata.name"
-
Jalankan sesi bash di dalam pod mart:
kubectl exec -it MART_POD_NAME -n apigee -- bash
Ganti MART_POD_NAME dengan nama pod MART. Contoh,
apigee-mart-myorg--9a8228a-191-t0xh1-qz5fl
. -
Menjalankan uji konektivitas terhadap
Port Cassandra:
curl -v -m 5 telnet://apigee-cassandra-default-0.apigee-cassandra-default.apigee.svc.cluster.local:9042
curl -v -m 5 telnet://apigee-cassandra-default-0.apigee-cassandra-default.apigee.svc.cluster.local:7001
Jika Anda mendapatkan error
Connection timed out
dalam output, itu berarti Anda memiliki masalah konektivitas. Namun jika Anda melihatConnected to
, yang menunjukkan bahwa koneksi berhasil, dan Anda perlu menekan Ctrl + C untuk menutup koneksi dan melanjutkan. -
Dapatkan nama
Resolusi
Pastikan setelan HostNetwork
disetel ke
false
dalam file overrides.yaml
yang digunakan untuk pemulihan,
dan
ulangi proses pemulihan. Jika pengaturan sudah ditetapkan ke
false
, tetapi Anda melihat error konektivitas, pastikan Cassandra
pod aktif dan berjalan dengan perintah berikut:
kubectl get pods -n apigee -l app=apigee-cassandra
Output Anda akan terlihat seperti contoh berikut:
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 14m apigee-cassandra-default-1 1/1 Running 0 13m apigee-cassandra-default-2 1/1 Running 0 11m exampleuser@example hybrid-files %
Penyebab: Waktu operasi habis
Error berikut terjadi jika waktu pemulihan habis setelah lebih dari 15 detik menit. Error ini menunjukkan masalah I/O seperti penyimpanan dan jaringan tidak mampu mengirimkan isi cadangan yang tidak dikompresi tepat waktu.
/tmp/tmp/schema.cql:662:OperationTimedOut: errors={'10.0.0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=10.0.0.1
Diagnosis
-
Periksa log
apigee-cassandra-default-0
untuk mencatat stempel waktu awal pemulihan:kubectl logs apigee-cassandra-default-0 -n apigee | grep 'MigrationManager.java' | head -n 1
-
Bandingkan stempel waktu dengan log terbaru pembuatan tabel:
kubectl logs apigee-cassandra-default-0 -n apigee | grep 'Create new table' | tail -n 1
Hasil dari perbandingan ini akan menunjukkan bahwa pod Cassandra masih dalam proses pembuatan tabel setelah waktu tunggu habis terlampaui.
-
Uji bandwidth penyimpanan dengan perintah berikut:
kubectl -n apigee exec -it apigee-cassandra-default-0 -- bash -c 'dd if=/dev/zero of=/opt/apigee/data/test.img bs=200M count=1 ; rm /opt/apigee/data/test.img'
kubectl -n apigee exec -it apigee-cassandra-default-1 -- bash -c 'dd if=/dev/zero of=/opt/apigee/data/test.img bs=200M count=1 ; rm /opt/apigee/data/test.img'
kubectl -n apigee exec -it apigee-cassandra-default-2 -- bash -c 'dd if=/dev/zero of=/opt/apigee/data/test.img bs=200M count=1 ; rm /opt/apigee/data/test.img'
Jika kecepatan tulis kurang dari 100 M/s, ini bisa menunjukkan kurangnya pasar StorageClass (SSD) digunakan.
-
Uji bandwidth jaringan:
-
Jalankan
netcat
di pod Cassandra untuk memproses port:kubectl -n apigee exec -it apigee-cassandra-default-0 -- bash -c 'nc -l -p 3456 > /dev/null'
-
Dalam sesi shell terpisah, dapatkan nama atribut Pod
apigee-mart
:kubectl -n apigee get po --selector=app=apigee-mart --no-headers -o custom-columns=":metadata.name"
-
Jalankan sesi bash di dalam pod
apigee-mart
. Anda juga dapat menggunakan pod lain dalam jaringan pod:kubectl exec -it MART_POD_NAME -n apigee -- bash
Ganti MART_POD_NAME dengan nama pod MART. Contoh,
apigee-mart-myorg--9a8228a-191-t0xh1-qz5fl
. -
Jalankan uji {i>bandwidth<i} jaringan terhadap pod Cassandra yang masih menjalankan
netcat
:dd if=/dev/zero bs=50M count=1 | nc apigee-cassandra-default-0.apigee-cassandra-default.apigee.svc.cluster.local 3456
Anda dapat mengulangi proses ini untuk pod Cassandra lainnya. Jika hasil kecepatannya kurang dari 10M/dtk, maka kemungkinan besar {i>bandwidth<i} jaringan penyebab masalah tersebut.
-
Resolusi
Setelah kecepatan I/O lambat dikonfirmasi dengan langkah-langkah di atas, pastikan cluster memenuhi kriteria minimum jaringan dan persyaratan penyimpanan. Setelah itu, uji bandwidth lagi.
Penyebab: Sudah ada
Diagnosis
Anda akan melihat error yang mirip dengan yang berikut ini:
/tmp/tmp/schema.cql:6409:AlreadyExists: Table 'kvm_myorg.kvm_map_keys_descriptor' already exists
Resolusi
Pesan error ini tidak terkait dengan penyebab masalah dan merupakan hasil atas operasi percobaan ulang dari tugas pemulihan. Pesan {i>error<i} yang sebenarnya seharusnya ditampilkan dalam log pod pertama yang gagal.
Dapatkan log dari kegagalan awal untuk mendiagnosis masalah.
Jika masalah masih berlanjut, buka Harus mengumpulkan informasi diagnostik.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Google Cloud Customer Care:
-
Selain data biasa yang mungkin diminta untuk Anda berikan, kumpulkan data diagnostik dari semua pod Cassandra dengan perintah berikut:
for p in $(kubectl -n apigee get pods -l app=apigee-cassandra --no-headers -o custom-columns=":metadata.name") ; do \ for com in info describecluster failuredetector version status ring info gossipinfo compactionstats tpstats netstats cfstats proxyhistograms gcstats ; do kubectl \ -n apigee exec ${p} -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD '"$com"' 2>&1 '\ | tee /tmp/k_cassandra_nodetool_${com}_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | head -n 40 ; echo '...' ; done; done
-
Kompresi, dan sediakan dalam kasus dukungan:
tar -cvzf /tmp/cassandra_data_$(date +%Y.%m.%d_%H.%M.%S).tar.gz /tmp/k_cassandra_nodetool*
- Mengumpulkan dan menyediakan log dari pod pemulihan. Perhatikan bahwa log berumur singkat, sehingga harus dikumpulkan segera setelah kegagalan.
- Jika Anda mengikuti langkah-langkah diagnosis di atas, kumpulkan semua outputnya, salin ke dalam file, dan lampirkan filenya ke kasus dukungan.