Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Tidak ada dokumentasi
Apigee Edge yang setara untuk topik ini.
Topik ini membahas langkah-langkah yang dapat Anda lakukan untuk memecahkan masalah dan memperbaiki masalah pada penyimpanan data Cassandra. Cassandra adalah
penyimpanan data persisten
yang berjalan di komponen cassandra
dari
arsitektur runtime hybrid.
Lihat juga
Ringkasan konfigurasi layanan runtime.
Pod Cassandra macet dalam status Releasing
Gejala
Setelah mencoba melakukan update pada pod Cassandra, datastore melaporkan bahwa datastore tersebut macet dalam status melepaskan.
Pesan error
Saat menggunakan kubectl
untuk melihat status pod, Anda akan melihat satu
atau beberapa pod Cassandra mengalami masalah dalam status merilis:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Ack 57s (x7 over 24h) apigee-datastore release started
Kemungkinan penyebab
Pod yang macet dalam status melepaskan dapat disebabkan oleh hal berikut:
Penyebab | Deskripsi |
---|---|
Perubahan kapasitas penyimpanan |
Langkah-langkah telah dilakukan untuk mengubah kapasitas penyimpanan di
file override.yaml .
|
Perubahan Konfigurasi lainnya |
Pembaruan telah dilakukan pada properti cassandra dalam
file override.yaml ; namun, perubahan tersebut tidak
berlaku.
|
Perubahan kapasitas penyimpanan
Diagnosis
-
Gunakan
kubectl
untuk melihat status pod datastoreapigee
saat ini:kubectl get apigeeds -n apigee
NAME STATE AGE default releasing 122d
-
Periksa apakah ada perubahan pada file
override.yaml
: -
Dengan menggunakan sistem kontrol versi, bandingkan file
override.yaml
versi sebelumnya dengan versi saat ini:diff OVERRIDES_BEFORE.yaml OVERRIDES_AFTER.yaml
-
Output perbedaan dalam
override.yaml
dapat menunjukkan kemungkinan masalah dengan ukuran kapasitas penyimpanan. Contoh:# Overrides.yaml before: cassandra: storage: capacity: 500Gi # Overrides.yaml after: cassandra: storage: capacity: 100Gi
Jika ada operasi untuk mengubah kapasitas penyimpanan yang langkah-langkahnya dilewati, dan
override.yaml
baru diterapkan secara langsung, hal ini dapat menyebabkan datastore berada dalam status merilis. -
Periksa
statefulset
untuk memastikan bahwa ada satu di sana untukapigee-cassandra-default
:kubectl describe sts -n apigee
Outputnya akan terlihat seperti ini:
Name: apigee-cassandra-default Namespace: apigee CreationTimestamp: Tue, 18 Jul 2023 00:40:57 +0000 Selector: app=apigee-cassandra,name=default Labels: apigee.cloud.google.com.revision=v1-2cc098050836c6b4 apigee.cloud.google.com.version=v1 apigee.cloud.google.com/platform=apigee app=apigee-cassandra name=default Annotations: <none> Replicas: 3 desired | 3 total Update Strategy: RollingUpdate Partition: 0 Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed Pod Template: Labels: apigee.cloud.google.com/apigee_servicename=production apigee.cloud.google.com/billing_type=subscription apigee.cloud.google.com/platform=apigee app=apigee-cassandra name=default revision=v1 runtime_type=hybrid Annotations: apigee.cloud.google.com/pod-template-spec-hash: 2cc098050836c6b4 prometheus.io/path: /metrics prometheus.io/port: 7070 prometheus.io/scheme: https prometheus.io/scrape: true Containers: apigee-cassandra: Image: gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra:1.10.1 Ports: 7000/TCP, 7001/TCP, 7199/TCP, 9042/TCP, 8778/TCP Host Ports: 7000/TCP, 7001/TCP, 7199/TCP, 9042/TCP, 8778/TCP Requests: cpu: 500m memory: 1Gi Readiness: exec [/bin/bash -c /opt/apigee/ready-probe.sh] delay=0s timeout=5s period=10s #success=1 #failure=2 Environment: POD_NAME: (v1:metadata.name) POD_IP: (v1:status.podIP) MAX_HEAP_SIZE: 512M HEAP_NEWSIZE: 100M CASSANDRA_SEEDS: apigee-cassandra-default-0.apigee-cassandra-default.apigee.svc.cluster.local CASSANDRA_CLUSTER_NAME: apigeecluster CASSANDRA_DC: dc-1 CASSANDRA_RACK: ra-1 CASSANDRA_OPEN_JMX: true CPS_ADMIN_USER: <set to the key 'admin.user' in secret 'apigee-datastore-default-creds'> Optional: false CPS_ADMIN_PASSWORD: <set to the key 'admin.password' in secret 'apigee-datastore-default-creds'> Optional: false APIGEE_JMX_USER: <set to the key 'jmx.user' in secret 'apigee-datastore-default-creds'> Optional: false APIGEE_JMX_PASSWORD: <set to the key 'jmx.password' in secret 'apigee-datastore-default-creds'> Optional: false CASS_PASSWORD: <set to the key 'default.password' in secret 'apigee-datastore-default-creds'> Optional: false APIGEE_JOLOKIA_USER: <set to the key 'jolokia.user' in secret 'apigee-datastore-default-creds'> Optional: false APIGEE_JOLOKIA_PASSWORD: <set to the key 'jolokia.password' in secret 'apigee-datastore-default-creds'> Optional: false Mounts: /opt/apigee/apigee-cassandra/conf from appsfs (rw) /opt/apigee/customer from cwc-volume (ro) /opt/apigee/data from cassandra-data (rw) /opt/apigee/ssl from tls-volume (ro) /var/secrets/google from apigee-cassandra-backup (rw) /var/secrets/keys from apigee-cassandra-backup-key-file (rw) Volumes: cwc-volume: Type: Secret (a volume populated by a Secret) SecretName: config-cassandra-default Optional: false tls-volume: Type: Secret (a volume populated by a Secret) SecretName: apigee-cassandra-default-tls Optional: false appsfs: Type: EmptyDir (a temporary directory that shares a pod's lifetime) Medium: SizeLimit: <unset> apigee-cassandra-backup: Type: Secret (a volume populated by a Secret) SecretName: apigee-cassandra-backup-svc-account Optional: true apigee-cassandra-backup-key-file: Type: Secret (a volume populated by a Secret) SecretName: apigee-cassandra-backup-key-file Optional: true Volume Claims: Name: cassandra-data StorageClass: Labels: <none> Annotations: <none> Capacity: 10Gi Access Modes: [ReadWriteOnce] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 47m statefulset-controller create Pod apigee-cassandra-default-2 in StatefulSet apigee-cassandra-default successful
-
Periksa error di pengontrol Apigee:
kubectl logs -f apigee-controller-manager-59cf595c77-wtwnr -n apigee-system -c manager | grep apigeedatastore
Hasil:
"error creating apigee-cassandra object: failed to update resource apigee/apigee-cassandra-default: StatefulSet.apps \"apigee-cassandra-default\" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbiddenerror creating apigee-cassandra object: failed to update resource apigee/apigee-cassandra-default: StatefulSet.apps \"apigee-cassandra-default\" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden"
Resolusi
Status Cassandra dapat direset menggunakan langkah-langkah berikut untuk membuatnya kembali ke status berjalan:
-
Nonaktifkan
apigee-controller
:kubectl -n apigee-system edit deployments and set --enable-controllers=true to --enable-controllers=false
-
Kembalikan datastore ke status berjalan menggunakan perintah
PATCH
:curl -XPATCH \-H "Accept: application/json" -H "Content-Type: application/json-patch+json" --data '[{"op": "replace", "path": "/status/nestedState", "value": ""},{"op": "replace", "path": "/status/state", "value": "running"}]' 'http://127.0.0.1:8001/apis/apigee.cloud.google.com/v1alpha1/namespaces/apigee/apigeedatastores/default/status'
-
Terapkan kembali file
override.yaml
asli menggunakan Helm:helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE \ --dry-run=server
Pastikan untuk menyertakan semua setelan yang ditampilkan, termasuk
--atomic
agar tindakan di-roll back jika gagal.Instal diagram:
helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
-
Aktifkan
apigee-controller
:kubectl -n apigee-system edit deployments and set --enable-controllers=false to --enable-controllers=true
-
Tunggu hingga datastore kembali aktif dan validasi menggunakan perintah berikut:
kubectl get apigeeds --namespace apigee
-
Validasi bahwa deployment dan pod Apigee dalam status berjalan, dan
apigeeds
tidak lagi dalam status merilis:kubectl get ad -n apigee
kubectl get pods -n apigee
kubectl get apigeeds -n apigee
NAME STATE AGE default running 24d
Perubahan konfigurasi lainnya
Pembaruan yang dilakukan pada properti cassandra
di
override.yaml
dan perubahan tidak berlaku. Hal ini dapat berupa
perubahan sandi, atau perubahan pada resource di override.yaml
.
Atau salah menerapkan override.yaml
yang salah ke cluster.
Diagnosis
Lihat langkah-langkahnya di Diagnosis.
Resolusi
Lihat langkah-langkahnya di Penyelesaian.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Layanan Pelanggan Google Cloud:
-
Overrides.yaml
untuk setiap cluster dalam penginstalan. -
Dump info cluster Kubernetes dari penginstalan Apigee Hybrid:
Buat
cluster-info dump
kubernetes:kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump
Kompres menggunakan zip kubernetes
cluster-info dump
:zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*
Pod Cassandra macet dalam status Pending
Gejala
Saat dimulai, pod Cassandra tetap dalam status Pending.
Pesan error
Saat menggunakan kubectl
untuk melihat status pod, Anda akan melihat bahwa satu atau beberapa pod Cassandra macet dalam status Pending
. Status
Pending
menunjukkan bahwa Kubernetes tidak dapat menjadwalkan pod
di sebuah node: pod tidak dapat dibuat. Contoh:
kubectl get pods -n NAMESPACE
NAME READY STATUS RESTARTS AGE
adah-resources-install-4762w 0/4 Completed 0 10m
apigee-cassandra-default-0 0/1 Pending 0 10m
...
Kemungkinan penyebab
Pod yang macet dalam status Tertunda dapat disebabkan oleh beberapa hal. Contoh:
Penyebab | Deskripsi |
---|---|
Resource tidak cukup | CPU atau memori yang tersedia tidak cukup untuk membuat pod. |
Volume tidak dibuat | Pod sedang menunggu volume persisten dibuat. |
Driver CSI Amazon EBS tidak ada | Untuk penginstalan EKS, driver CSI Amazon EBS yang diperlukan tidak diinstal. |
Diagnosis
Gunakan kubectl
untuk mendeskripsikan pod guna menentukan sumber error. Contoh:
kubectl -n NAMESPACE describe pods POD_NAME
Contoh:
kubectl describe pods apigee-cassandra-default-0 -n apigee
Output dapat menampilkan salah satu kemungkinan masalah berikut:
- Jika masalahnya adalah resource yang tidak memadai, Anda akan melihat pesan Peringatan yang menunjukkan CPU atau memori yang tidak memadai.
- Jika pesan error menunjukkan bahwa pod telah melepaskan PersistentVolumeClaim (PVC) langsung, artinya pod tidak dapat membuat Persistent volume.
Resolusi
Resource tidak cukup
Ubah node pool Cassandra agar memiliki resource CPU dan memori yang memadai. Lihat Mengubah ukuran node pool untuk mengetahui detailnya.
Volume persisten tidak dibuat
Jika Anda menentukan masalah volume persisten, deskripsikan PersistentVolumeClaim (PVC) untuk menentukan mengapa PVC tidak dibuat:
- Cantumkan PVC di cluster:
kubectl -n NAMESPACE get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-default-0 Bound pvc-b247faae-0a2b-11ea-867b-42010a80006e 10Gi RWO standard 15m ...
- Jelaskan PVC untuk pod yang gagal. Misalnya, perintah berikut
menjelaskan PVC yang terikat ke pod
apigee-cassandra-default-0
:kubectl apigee describe pvc cassandra-data-apigee-cassandra-default-0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 3m (x143 over 5h) persistentvolume-controller storageclass.storage.k8s.io "apigee-sc" not found
Perhatikan bahwa dalam contoh ini, StorageClass bernama
apigee-sc
tidak ada. Untuk mengatasi masalah ini, buat StorageClass yang tidak ada di cluster, seperti yang dijelaskan dalam Mengubah StorageClass default.
Lihat juga Men-debug Pod.
Driver CSI Amazon EBS tidak ada
Jika instance hybrid berjalan di cluster EKS, pastikan cluster EKS menggunakan driver Amazon EBS container storage interface (CSI). Lihat Pertanyaan umum tentang migrasi Amazon EBS CSI untuk mengetahui detailnya.
Pod Cassandra macet dalam status CrashLoopBackoff
Gejala
Saat dimulai, pod Cassandra tetap dalam status CrashLoopBackoff.
Pesan error
Saat menggunakan kubectl
untuk melihat status pod, Anda akan melihat bahwa satu atau beberapa pod Cassandra dalam status CrashLoopBackoff
.
Status ini menunjukkan bahwa Kubernetes tidak dapat membuat pod. Contoh:
kubectl get pods -n NAMESPACE
NAME READY STATUS RESTARTS AGE
adah-resources-install-4762w 0/4 Completed 0 10m
apigee-cassandra-default-0 0/1 CrashLoopBackoff 0 10m
...
Kemungkinan penyebab
Pod yang macet dalam status CrashLoopBackoff
dapat disebabkan oleh beberapa hal. Contoh:
Penyebab | Deskripsi |
---|---|
Pusat data berbeda dari pusat data sebelumnya | Error ini menunjukkan bahwa pod Cassandra memiliki volume persisten yang berisi data dari cluster sebelumnya, dan pod baru tidak dapat bergabung dengan cluster lama. Hal ini biasanya terjadi saat volume persisten yang tidak aktif tetap ada dari cluster Cassandra sebelumnya di node Kubernetes yang sama. Masalah ini dapat terjadi jika Anda menghapus dan membuat ulang Cassandra di cluster. |
Upgrade Kubernetes | Upgrade Kubernetes dapat memengaruhi cluster Cassandra. Hal ini dapat terjadi saat node pekerja Anthos yang menghosting pod Cassandra diupgrade ke versi OS baru. |
Diagnosis
Periksa log error Cassandra untuk mengetahui penyebab masalah.
- Buat daftar pod untuk mendapatkan ID pod Cassandra yang gagal:
kubectl get pods -n NAMESPACE
- Periksa log pod yang gagal:
kubectl logs POD_ID -n NAMESPACE
Resolusi
Cari petunjuk berikut dalam log pod:
Pusat data berbeda dari pusat data sebelumnya
Jika Anda melihat pesan log ini:
Cannot start node if snitch's data center (us-east1) differs from previous data center
- Periksa apakah ada PVC yang tidak aktif atau lama di cluster dan hapus PVC tersebut.
- Jika ini adalah penginstalan baru, hapus semua PVC dan coba lagi penyiapan. Contoh:
kubectl -n NAMESPACE get pvc
kubectl -n NAMESPACE delete pvc cassandra-data-apigee-cassandra-default-0
Upgrade Anthos mengubah setelan keamanan
Periksa log Cassandra untuk melihat pesan error ini:
/opt/apigee/run.sh: line 68: ulimit: max locked memory: cannot modify limit: Operation not permitted
- Jika instance hybrid bersifat multi-region, nonaktifkan instance hybrid yang terpengaruh dan perluas kembali ke region yang terpengaruh.
- Jika instance hybrid adalah satu region, lakukan mulai ulang berkelanjutan pada setiap pod Cassandra di instance hybrid.
Membuat container klien untuk proses debug
Bagian ini menjelaskan cara membuat container klien yang dapat Anda gunakan untuk mengakses utilitas debug Cassandra seperti
cqlsh
:
shell CQL.
Utilitas ini memungkinkan Anda membuat kueri tabel Cassandra dan dapat berguna untuk tujuan proses debug.
Buat container klien
Untuk membuat container klien, ikuti langkah-langkah berikut:
- Penampung harus menggunakan sertifikat TLS dari pod
apigee-cassandra-user-setup
. Ini disimpan sebagai secret Kubernetes. Ambil nama secret yang menyimpan sertifikat ini:kubectl get secrets -n apigee --field-selector type=kubernetes.io/tls | grep apigee-cassandra-user-setup | awk '{print $1}'
Perintah ini menampilkan nama secret. Misalnya:
apigee-cassandra-user-setup-rg-hybrid-b7d3b9c-tls
. Anda akan menggunakannya di bawah ini di kolomsecretName
dalam file YAML. - Buka file baru dan tempelkan spesifikasi pod berikut ke dalamnya:
apiVersion: v1 kind: Pod metadata: labels: name: CASSANDRA_CLIENT_NAME # For example: my-cassandra-client namespace: apigee spec: containers: - name: CASSANDRA_CLIENT_NAME image: "gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra-client:YOUR_APIGEE_HYBRID_VERSION" # For example, 1.10.5. imagePullPolicy: Always command: - sleep - "3600" env: - name: CASSANDRA_SEEDS value: apigee-cassandra-default.apigee.svc.cluster.local - name: APIGEE_DML_USER valueFrom: secretKeyRef: key: dml.user name: apigee-datastore-default-creds - name: APIGEE_DML_PASSWORD valueFrom: secretKeyRef: key: dml.password name: apigee-datastore-default-creds volumeMounts: - mountPath: /opt/apigee/ssl name: tls-volume readOnly: true volumes: - name: tls-volume secret: defaultMode: 420 secretName: YOUR_SECRET_NAME # For example: apigee-cassandra-user-setup-rg-hybrid-b7d3b9c-tls restartPolicy: Never
- Simpan file dengan ekstensi
.yaml
. Contoh:my-spec.yaml
. - Terapkan spesifikasi ke cluster Anda:
kubectl apply -f YOUR_SPEC_FILE.yaml -n apigee
- Login ke container:
kubectl exec -n apigee CASSANDRA_CLIENT_NAME -it -- bash
- Hubungkan ke antarmuka
cqlsh
Cassandra dengan perintah berikut. Masukkan perintah persis seperti yang ditunjukkan:cqlsh ${CASSANDRA_SEEDS} -u ${APIGEE_DML_USER} -p ${APIGEE_DML_PASSWORD} --ssl
Menghapus pod klien
Gunakan perintah ini untuk menghapus pod klien Cassandra:
kubectl delete pods -n apigee cassandra-client
Perluasan region yang salah dikonfigurasi: semua node Cassandra berada di satu pusat data
Situasi ini terjadi dalam perluasan multi-region di platform GKE dan GKE secara lokal (Anthos). Hindari mencoba membuat semua node Cassandra di pusat data yang sama.
Gejala
Node Cassandra gagal dibuat di pusat data untuk region kedua.
Pesan Error
failed to rebuild from dc-1: java.lang.RuntimeException : Error while rebuilding node: Stream failed
Resolusi
Perbaiki perluasan wilayah yang salah dikonfigurasi dengan langkah-langkah berikut:
- Perbarui
replicaCount
Cassandra menjadi1
dalam fileoverrides.yaml
untuk pusat data kedua. Contoh:cassandra: . . . replicaCount: 1
Terapkan setelan menggunakan Helm:
helm upgrade datastore apigee-datastore \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 2ND_DATACENTER_OVERRIDES_FILE \ --dry-run=server
Pastikan untuk menyertakan semua setelan yang ditampilkan, termasuk
--atomic
agar tindakan di-roll back jika gagal.Instal diagram:
helm upgrade datastore apigee-datastore \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 2ND_DATACENTER_OVERRIDES_FILE
- Gunakan
kubectl exec
untuk mengakses pod Cassandra yang tersisa dengan perintah berikut:kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
- Nonaktifkan pod Cassandra yang tersisa dengan perintah berikut:
nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD decommission
- Hapus pod Cassandra dari pusat data kedua menggunakan
Helm:
helm uninstall datastore -n APIGEE_NAMESPACE
- Ubah konteks Kubernetes Anda ke cluster untuk pusat data pertama Anda:
kubectl config use-context FIRST_DATACENTER_CLUSTER
- Pastikan tidak ada node Cassandra dalam status nonaktif di pusat data pertama.
nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD status
- Pastikan node Cassandra yang salah dikonfigurasi (ditujukan untuk pusat data kedua) telah
dihapus dari pusat data pertama. Pastikan alamat IP yang ditampilkan dalam output status nodetool hanya alamat IP untuk pod Cassandra yang ditujukan untuk pusat data pertama Anda. Misalnya, dalam output berikut, alamat IP
10.100.0.39
harus untuk pod di pusat data pertama Anda.kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD status
Datacenter: dc-1 ================ Status=U/D (Up/Down) | State=N/L/J/M (Normal/Leaving/Joining/Moving) -- Address Load Tokens Owns (effective) Host ID Rack UN 10.100.0.39 4.21 MiB 256 100.0% a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d ra-1 - Pastikan file
overrides.yaml
untuk pusat data kedua berisi setelan nama pusat data di bagian cassandra. Contoh:cassandra: datacenter: DATA_CENTER_2 rack: "RACK_NAME" # "ra-1" is the default value. . . .
- Perbarui setelan
cassandra:replicaCount
dalam fileoverrides.yaml
untuk pusat data kedua ke jumlah yang diinginkan. Contoh:cassandra: datacenter: DATA_CENTER_2 . . . replicaCount: 3
- Terapkan file
overrides.yaml
untuk pusat data kedua dengan argumendatastore
. Contoh:helm upgrade datastore apigee-datastore \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 2ND_DATACENTER_OVERRIDES_FILE \ --dry-run=server
Pastikan untuk menyertakan semua setelan yang ditampilkan, termasuk
--atomic
agar tindakan di-roll back jika gagal.Instal diagram:
helm upgrade datastore apigee-datastore \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 2ND_DATACENTER_OVERRIDES_FILE
- Gunakan
kubectl exec
untuk mengakses salah satu pod Cassandra baru di pusat data kedua dan verifikasi bahwa ada dua pusat data:"nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD status"
Solusi untuk Masalah Umum 388608440
Bagian ini menjelaskan cara memeriksa apakah penginstalan Anda terpengaruh oleh masalah umum 388608440 dan cara mengatasinya.
Diagnosis
Untuk memeriksa apakah Anda terpengaruh oleh masalah umum ini, jalankan perintah berikut:
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | \ xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- \ bash -c 'echo "{}: Found $(nodetool -u cassandra -pw $CASS_PASSWORD listsnapshots | grep -c compaction_history) leftover snapshots"'
Contoh:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: Found $(nodetool -u cassandra -pw $CASS_PASSWORD listsnapshots | grep -c compaction_history) leftover snapshots"'
pod/apigee-cassandra-default-0: Found 0 leftover snapshots pod/apigee-cassandra-default-1: Found 0 leftover snapshots pod/apigee-cassandra-default-2: Found 0 leftover snapshots
Jika jumlah snapshot yang tersisa lebih dari 0 untuk pod Cassandra Anda, berarti penginstalan Anda terpengaruh oleh masalah ini.
Resolusi
Untuk mengatasi masalah ini, ikuti langkah-langkah di bawah, pilih jenis cadangan yang Anda gunakan dan versi minor Apigee Hybrid Anda:
Pencadangan Cloud Storage
-
Pastikan Anda menggunakan konfigurasi yang benar untuk pencadangan Cloud Storage. Beberapa masalah umum
mencakup, tetapi tidak terbatas pada, hal berikut:
- Akun Layanan Google yang salah digunakan.
- Nama bucket Cloud Storage yang salah ditentukan di cassandra.backup.dbStorageBucket.
- Google API tidak dapat dijangkau melalui proxy (jika cassandra.backup.httpproxy digunakan).
Jika Anda menemukan masalah pada penyiapan, perbaiki masalah tersebut sebelum melanjutkan.
-
Hapus snapshot sisa secara manual menggunakan perintah berikut:
Apigee Hybrid 1.12
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot --all)"'
Contoh:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot --all)"'
Apigee Hybrid 1.11
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot)"'
Contoh:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot)"'
pod/apigee-cassandra-default-1: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots] pod/apigee-cassandra-default-2: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots] pod/apigee-cassandra-default-0: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots]
- Picu tugas pencadangan manual dan validasi bahwa tugas tersebut berhasil diselesaikan.
-
Validasi bahwa arsip cadangan yang dibuat oleh tugas pencadangan manual berhasil
diupload ke bucket Cloud Storage cassandra.backup.dbStorageBucket
yang Anda tentukan dalam file
overrides.yaml
. - Validasi bahwa jumlah snapshot yang tersisa adalah 0 untuk semua pod Cassandra menggunakan perintah yang dijelaskan sebelumnya di bagian Diagnosis.
Pencadangan Server Jarak Jauh
-
Pastikan server pencadangan jarak jauh berfungsi dengan baik dan dapat dijangkau dari pod Cassandra.
Periksa bagian pemecahan masalah
untuk mengetahui langkah-langkah memverifikasi konektivitas SSH. Beberapa masalah umum mencakup, tetapi tidak terbatas pada, hal berikut:
- Firewall jaringan memblokir koneksi.
- Kunci SSH tidak disiapkan dengan benar.
- Server pencadangan jarak jauh tidak dapat dijangkau.
- Server pencadangan jarak jauh kehabisan penyimpanan gratis.
Jika Anda menemukan masalah pada server pencadangan jarak jauh, perbaiki masalah tersebut sebelum melanjutkan.
-
Hapus snapshot sisa secara manual menggunakan perintah berikut:
Apigee Hybrid 1.12
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot --all)"'
Contoh:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot --all)"'
Apigee Hybrid 1.11
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot)"'
Contoh:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot)"'
pod/apigee-cassandra-default-1: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots] pod/apigee-cassandra-default-2: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots] pod/apigee-cassandra-default-0: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots]
- Picu tugas pencadangan manual dan validasi bahwa tugas tersebut berhasil diselesaikan.
- Validasi bahwa arsip cadangan yang dibuat oleh tugas pencadangan manual berhasil diupload ke server cadangan jarak jauh.
- Validasi bahwa jumlah snapshot yang tersisa adalah 0 untuk semua pod Cassandra menggunakan perintah yang dijelaskan sebelumnya di bagian Diagnosis.
Referensi lainnya
Lihat Pengantar playbook Apigee X dan Apigee Hybrid.