Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat dokumentasi
Apigee Edge.
Gejala
Pod Cassandra gagal dimulai di salah satu region dalam penyiapan campuran Apigee multi-region. Saat menerapkan file overrides.yaml, pod Cassandra tidak berhasil dimulai.
Pesan error
- Anda akan melihat pesan error berikut di log pod Cassandra:
Exception (java.lang.RuntimeException) encountered during startup: A node with address 10.52.18.40 already exists, cancelling join. use cassandra.replace_addrees if you want to replace this node.
Anda mungkin melihat peringatan berikut di status pod Cassandra:
Kemungkinan penyebab
Masalah ini biasanya diamati dalam skenario berikut:
- Cluster runtime Apigee dihapus di salah satu region.
- Upaya untuk menginstal ulang cluster runtime Apigee dilakukan di region dengan konfigurasi host seed Cassandra
dalam file
overrides.yamlseperti yang dijelaskan dalam Deployment multi-region di GKE dan GKE on-prem. - Menghapus cluster runtime Apigee tidak akan menghapus referensi di cluster Cassandra. Dengan demikian, referensi yang sudah tidak berlaku dari pod Cassandra di cluster yang dihapus akan dipertahankan. Oleh karena itu, saat Anda mencoba menginstal ulang cluster runtime Apigee di region sekunder, pod Cassandra akan mengeluh bahwa alamat IP tertentu sudah ada. Hal ini karena alamat IP mungkin ditetapkan dari subnet yang sama dengan yang digunakan sebelumnya.
| Penyebab | Deskripsi |
|---|---|
| Referensi yang tidak berlaku ke pod wilayah sekunder yang dihapus di cluster Cassandra | Menghapus cluster runtime Apigee di region sekunder tidak akan menghapus referensi ke alamat IP pod Cassandra di region sekunder. |
Penyebab: Referensi yang tidak berlaku ke pod region sekunder yang dihapus di cluster Cassandra
Diagnosis
- Pesan error dalam log pod Cassandra
A node with address 10.52.18.40 already existsmenunjukkan bahwa ada referensi yang sudah tidak berlaku ke salah satu pod Cassandra region sekunder dengan alamat IP10.52.18.40. Validasi ini dengan menjalankan perintahnodetool statusdi region utama.Contoh Output:
Contoh di atas menunjukkan bahwa alamat IP
10.52.18.40yang terkait dengan pod Cassandra di region sekunder masih tercantum dalam output. - Jika output berisi referensi yang sudah tidak berlaku ke pod Cassandra di region sekunder, hal ini menunjukkan bahwa region sekunder telah dihapus, tetapi alamat IP pod Cassandra di region sekunder tidak dihapus.
Resolusi
Lakukan langkah-langkah berikut untuk menghapus referensi yang sudah tidak berlaku dari pod Cassandra cluster yang dihapus:
- Login ke penampung dan hubungkan ke antarmuka command line Cassandra dengan mengikuti langkah-langkah di Membuat penampung klien.
- Setelah Anda login ke penampung dan terhubung ke antarmuka
cqlshCassandra, jalankan kueri SQL berikut untuk mencantumkan definisikeyspacesaat ini:select * from system_schema.keyspaces;
Contoh output yang menampilkan ruang kunci saat ini:
Dalam output berikut,
Primary-DC1merujuk ke region utama danSecondary-DC2merujuk ke region sekunder.bash-4.4# cqlsh 10.50.112.194 -u admin_user -p ADMIN.PASSWORD --ssl Connected to apigeecluster at 10.50.112.194:9042. [cqlsh 5.0.1 | Cassandra 3.11.6 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. admin_user@cqlsh> Select * from system_schema.keyspaces; keyspace_name | durable_writes | replication -------------------------------------+----------------+-------------------------------------------------------------------------------------------------- system_auth | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} kvm_tsg1_apigee_hybrid_prod_hybrid | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} kms_tsg1_apigee_hybrid_prod_hybrid | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} system_distributed | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} perses | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} cache_tsg1_apigee_hybrid_prod_hybrid | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} rtc_tsg1_apigee_hybrid_prod_hybrid | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} quota_tsg1_apigee_hybrid_prod_hybrid | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} system_traces | True | {'Primary-DC1': '3', 'Secondary-DC2': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'} (11 rows)
Seperti yang dapat Anda lihat,
keyspacesmerujuk kePrimary-DC1danSecondary-DC2, meskipun cluster runtime Apigee dihapus di region sekunder.Referensi yang sudah tidak berlaku ke
Secondary-DC2harus dihapus dari setiap pendefinisiankeyspace. - Sebelum menghapus referensi yang sudah tidak berlaku dalam definisi
keyspace, gunakan perintah berikut untuk menghapus seluruh penginstalan campuran Apigee kecuali ASM (Istio) dancert-managerdariSecondary-DC2. Untuk informasi selengkapnya, lihat Meng-uninstal runtime campuran.helm uninstall -n APIGEE_NAMESPACE ENV_GROUP_RELEASE_NAME ENV_RELEASE_NAME $ORG_NAME ingress-manager telemetry redis datastore
Selain itu, uninstal
apigee-operator:helm uninstall -n APIGEE_NAMESPACE operator
- Hapus referensi yang sudah tidak berlaku ke
Secondary-DC2dari setiapkeyspacesdengan mengubah definisikeyspace.ALTER KEYSPACE system_auth WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE kvm_ORG_NAME_apigee_hybrid_prod_hybrid WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE kms_ORG_NAME_apigee_hybrid_prod_hybrid WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE system_distributed WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE perses WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE cache_ORG_NAME_apigee_hybrid_ENV_NAME_hybrid WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE rtc_ORG_NAME_apigee_hybrid_ENV_NAME_hybrid WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE quota_ORG_NAME_apigee_hybrid_ENV_NAME_hybrid WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE system_traces WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'};
- Pastikan referensi yang sudah tidak berlaku ke region
Secondary-DC2telah dihapus dari semuakeyspacesdengan menjalankan perintah berikut:select * from system_schema.keyspaces;
- Login ke pod Cassandra
Primary-DC1dan hapus referensi ke UUID dari semua pod CassandraSecondary-DC2. UUID dapat diperoleh dari perintahnodetool statusseperti yang dijelaskan sebelumnya di Diagnosis.kubectl exec -it -n apigee apigee-cassandra-default-0 -- bash nodetool -u admin_user -pw ADMIN.PASSWORD removenode UUID_OF_CASSANDRA_POD_IN_SECONDARY_DC2
- Pastikan tidak ada pod Cassandra
Secondary-DC2dengan menjalankan perintahnodetool statuslagi. - Instal cluster runtime Apigee di region sekunder (
Secondary-DC2) dengan mengikuti langkah-langkah di Deployment multi-region di GKE dan GKE on-premise.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut meskipun setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Layanan Pelanggan Google Cloud:
- ID Project Google Cloud
- Nama organisasi hybrid Apigee
- File
overrides.yamldari region utama dan sekunder, yang menyamarkan informasi sensitif apa pun - Status pod Kubernetes di semua namespace region utama dan sekunder:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
- Dump
cluster-infokubernetes dari region utama dan sekunder:# 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/*
- Output perintah
nodetooldi bawah dari region utama.export u=`kubectl -n apigee get secrets apigee-datastore-default-creds -o jsonpath='{.data.jmx\.user}' | base64 -d` export pw=`kubectl -n apigee get secrets apigee-datastore-default-creds -o jsonpath='{.data.jmx\.password}' | base64 -d` kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw info 2>&1 | tee /tmp/k_nodetool_info_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw describecluster 2>&1 | tee /tmp/k_nodetool_describecluster_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw failuredetector 2>&1 | tee /tmp/k_nodetool_failuredetector_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw status 2>&1 | tee /tmp/k_nodetool_status_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw gossipinfo 2>&1 | tee /tmp/k_nodetool_gossipinfo_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw netstats 2>&1 | tee /tmp/k_nodetool_netstats_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw proxyhistograms 2>&1 | tee /tmp/k_nodetool_proxyhistograms_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw tpstats 2>&1 | tee /tmp/k_nodetool_tpstats_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw gcstats 2>&1 | tee /tmp/k_nodetool_gcstats_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw version 2>&1 | tee /tmp/k_nodetool_version_$(date +%Y.%m.%d_%H.%M.%S).txt kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u $u -pw $pw ring 2>&1 | tee /tmp/k_nodetool_ring_$(date +%Y.%m.%d_%H.%M.%S).txt
Referensi
- Deployment multi-region Apigee hybrid di GKE dan GKE on-prem
- Dokumentasi Kubernetes
-
Perintah
nodetool statusCassandra