Ruang disk tidak cukup di Cassandra

Gejala

Proses penginstalan Apigee hybrid Anda gagal karena ruang disk tidak cukup untuk database Cassandra. Proses penginstalan gagal dengan pesan error berikut:

Error: UPGRADE FAILED: cannot patch "default" with kind ApigeeDatastore:
Internal error occurred

Selain itu, log Cassandra berisi peringatan yang mirip dengan berikut ini:

WARN  [main] 2024-06-18 12:34:55,583 DatabaseDescriptor.java:579 - Only
62.440GiB free across all data volumes. Consider adding more capacity to your
cluster or removing obsolete snapshots

Langkah-langkah diagnosis umum

Gunakan skrip Apigee hybrid must-gather untuk mengumpulkan log dari pod Cassandra untuk ditinjau.

Kemungkinan penyebab

Penyebab Deskripsi
Kehabisan ruang penyimpanan disk Ruang disk yang tersedia untuk Cassandra kurang dari 50%.

Penyebab 1: Ruang disk habis

Saat mengupgrade Apigee hybrid, pastikan Anda memiliki ruang disk lebih dari 50% yang tersedia untuk semua pod Cassandra.

Diagnosis

  1. Dari skrip Apigee hybrid must-gather, periksa output perintah berikut untuk memeriksa total ukuran volume yang terkait dengan Cassandra:

    kubectl get pv -n APIGEE_NAMESPACE

    Contoh Output

    NAME                                     CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM                                            STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON    AGE
    pvc-0b6b2daa-d512-4780-9021-fc97293a8154 10Gi     RWO          Delete         Bound  apigee/cassandra-data-apigee-cassandra-default-1 standard-rwo    <unset>                 -        20d
    pvc-2263fc7c-e057-406a-ad60-38573733c92d 10Gi     RWO          Delete         Bound  apigee/cassandra-data-apigee-cassandra-default-2 standard-rwo    <unset>                 -        20d
    pvc-8c854fe9-adaa-440f-90d9-d15497e7f530 10Gi     RWO          Delete         Bound  apigee/cassandra-data-apigee-cassandra-default-0 standard-rwo    <unset>                 -        20d
    
  2. Periksa output status nodetool untuk melihat disk yang digunakan oleh setiap pod Cassandra. Penggunaan ruang disk untuk Klaim Volume Persisten (PVC) yang ditetapkan ke pod Cassandra tidak boleh melebihi 50% dari kapasitas penyimpanan yang tersedia. Lihat perintah berikut:
    kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec apigee-cassandra-default-1 -- bash -c 'nodetool -u cassandra -pw $CASS_PASSWORD status'

    Dengan CASS_PASSWORD adalah cassandra.auth.default.password seperti yang disebutkan dalam Referensi properti konfigurasi.

    Contoh Output

    Datacenter: us-west3
    ========================
    Status=Up/Down
    |/ State=Normal/Leaving/Joining/Moving
    --  Address      Load        Tokens  Owns (effective)  Host ID                               Rack
    UN  10.10.10.1   6.69 GiB   256     100.0%            2a184030-444-4155-8375-156e87539711      a
    UN  10.10.10.2   7.42 GiB   256     53.1%             f22b66c7-4444-4000-b9c0-5a71ee6315a8     c
    UJ  10.10.10.3   7.39 GiB   256     ?                 78fb2737-4444-4468-a786-e473ead115b5     b
    UN  10.10.10.4   7.81 GiB   256     47.0%             779fcdf1-4444-4186-bcbb-2844e59629c2     b
    UN  10.10.10.5   6.91 GiB   256     53.0%             55ca07b2-4444-4967-b321-6477d50f9846     b
    UN  10.10.10.6   7.41 GiB   256     46.9%             0cf33585-444-46ce-811f-9c6376ed58ac      c
    

    (Opsional) Gunakan kubectl untuk menjalankan perintah di dalam container Cassandra guna memeriksa persentase penggunaan disk.

    kubectl exec -it apigee-cassandra-default-0 -n apigee – df -h /opt/apigee/data
    kubectl exec -it apigee-cassandra-default-1 -n apigee – df -h /opt/apigee/data
    kubectl exec -it apigee-cassandra-default-2 -n apigee – df -h /opt/apigee/data
    

    Contoh

    Contoh berikut menunjukkan penggunaan ruang disk lebih dari 50%. Hal ini akan menyebabkan masalah pada upgrade Apigee Hybrid.

    kubectl exec -it apigee-cassandra-default-0 -n apigee -- df -h /opt/apigee/data
    

    Defaulted container "apigee-cassandra" out of: apigee-cassandra, apigee-cassandra-ulimit-init (init) Filesystem Size Used Avail Use% Mounted on /dev/sdb 10G 6G 4G 60% /opt/apigee/data

    kubectl exec -it apigee-cassandra-default-1 -n apigee -- df -h /opt/apigee/data

    Defaulted container "apigee-cassandra" out of: apigee-cassandra, apigee-cassandra-ulimit-init (init) Filesystem Size Used Avail Use% Mounted on /dev/sdb 10G 5.9G 4.1G 59% /opt/apigee/data

    kubectl exec -it apigee-cassandra-default-2 -n apigee -- df -h /opt/apigee/data

    Defaulted container "apigee-cassandra" out of: apigee-cassandra, apigee-cassandra-ulimit-init (init) Filesystem Size Used Avail Use% Mounted on /dev/sdb 10G 5.6G 4.4G 56% /opt/apigee/data

Resolusi

Jika Anda menemukan pemanfaatan disk di atas 50%, skalakan kapasitas disk Cassandra untuk memastikan kapasitasnya di bawah 50% sebelum melakukan upgrade hybrid Apigee.

Untuk memperluas kapasitas disk, lihat Mengelola ukuran penyimpanan persisten Cassandra.

Harus mengumpulkan informasi diagnostik

Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Layanan Pelanggan Google Cloud:
  • ID Project Google Cloud Anda.
  • Organisasi Apigee Hybrid Anda.
  • File overrides.yaml dari wilayah sumber dan wilayah baru (ingatlah untuk menyamarkan informasi sensitif).
  • Output dari perintah di Pengumpulan data penting Apigee Hybrid.