Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat
Dokumentasi Apigee Edge.
Gejala
Pod Cassandra gagal dimulai di salah satu region dalam penyiapan hybrid Apigee multi-region. Kapan
menerapkan file overrides.yaml
, pod Cassandra tidak berhasil dimulai.
Pesan error
- Anda akan mengamati 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 terjadi dalam skenario berikut:
- Cluster runtime Apigee dihapus di salah satu region.
- Upaya untuk menginstal ulang cluster runtime Apigee dilakukan di region dengan Cassandra
konfigurasi host seed di file
overrides.yaml
seperti yang dijelaskan di Multi-region deployment di GKE dan GKE secara lokal. - Menghapus cluster runtime Apigee tidak menghapus referensi di Cassandra . Dengan demikian, referensi usang pod Cassandra di cluster yang dihapus akan dipertahankan. Oleh karena itu, saat Anda mencoba menginstal ulang cluster runtime Apigee di region sekunder, pod Cassandra mengeluh bahwa alamat IP tertentu sudah ada. Bahwa karena alamat IP mungkin ditetapkan dari {i> subnet<i} yang sama dengan yang digunakan sebelumnya.
Penyebab | Deskripsi |
---|---|
Referensi yang sudah tidak berlaku ke pod region sekunder yang dihapus di cluster Cassandra | Menghapus cluster runtime Apigee di region sekunder tidak menghapus referensi ke alamat IP pod Cassandra di region sekunder. |
Penyebab: Referensi yang sudah tidak berlaku ke pod region sekunder yang dihapus di gugus Cassandra
Diagnosis
- Pesan error di log pod Cassandra
A node with address 10.52.18.40 already exists
menunjukkan bahwa ada referensi usang ke salah satu wilayah sekunder Cassandra pod dengan alamat IP10.52.18.40
. Validasi hal ini dengan menjalankan Perintahnodetool status
di region utama.Contoh Output:
Contoh di atas menunjukkan bahwa alamat IP
10.52.18.40
yang terkait dengan Pod Cassandra dari region sekunder masih tercantum dalam output. - Jika output berisi referensi yang tidak berlaku lagi ke pod Cassandra di region sekunder, itu menunjukkan bahwa region sekunder telah dihapus, tetapi alamat IP {i>Cassandra<i} pod di region sekunder tidak akan dihapus.
Resolusi
Lakukan langkah-langkah berikut untuk menghapus referensi tidak berlaku pod Cassandra dari yang dihapus :
- Login ke container dan terhubung ke antarmuka command line Cassandra dengan mengikuti langkah-langkah di Membuat penampung klien.
- Setelah Anda login ke container dan terhubung ke Cassandra
cqlsh
jalankan kueri SQL berikut untuk menampilkan daftar definisikeyspace
saat ini:select * from system_schema.keyspaces;
Contoh output yang menunjukkan keyspace saat ini:
Dalam output berikut,
Primary-DC1
merujuk ke region utama danSecondary-DC2
mengacu pada 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,
keyspaces
merujuk padaPrimary-DC1
danSecondary-DC2
, meskipun cluster runtime Apigee dihapus di region sekunder.Referensi lama ke
Secondary-DC2
harus dihapus dari setiap Definisikeyspace
. - Sebelum menghapus referensi lama dalam definisi
keyspace
, gunakan atribut perintah berikut untuk menghapus seluruh instalasi Apigee Hybrid kecuali ASM (Istio) dancert-manager
dariSecondary-DC2
. Untuk informasi selengkapnya, lihat Uninstal runtime hybrid.apigeectl delete -f YOUR_OVERRIDES_FILE.yaml --all
- Menghapus referensi usang ke
Secondary-DC2
dari setiapkeyspaces
dengan mengubah definisikeyspace
.ALTER KEYSPACE system_auth WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE kvm_tsg1_apigee_hybrid_prod_hybrid WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE kms_tsg1_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_tsg1_apigee_hybrid_prod_hybrid WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE rtc_tsg1_apigee_hybrid_prod_hybrid WITH replication = {'Primary-DC1': '3', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}; ALTER KEYSPACE quota_tsg1_apigee_hybrid_prod_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'};
- Verifikasi bahwa referensi lama ke region
Secondary-DC2
telah dihapus dari semuakeyspaces
dengan menjalankan perintah berikut:select * from system_schema.keyspaces;
- Login ke pod Cassandra
Primary-DC1
dan hapus referensi ke UUID semua pod CassandraSecondary-DC2
. UUID dapat diperoleh dari perintahnodetool status
seperti yang dijelaskan sebelumnya dalam 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 dari
Secondary-DC2
dengan menjalankan perintahnodetool status
lagi. - Instal cluster runtime Apigee di region sekunder (
Secondary-DC2
) dengan mengikuti langkah-langkah di Deployment multi-region di GKE dan GKE lokal.
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
- Nama organisasi hybrid Apigee
- File
overrides.yaml
dari region primer dan sekunder, menyamarkan informasi sensitif - Status pod Kubernetes di semua namespace baik yang primer maupun sekunder
wilayah:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
- Dump
cluster-info
kubernetes 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
nodetool
di 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
- Apigee Hybrid Deployment multi-region di GKE dan GKE lokal
- Dokumentasi Kubernetes
-
Perintah
nodetool status
Cassandra