Nicht genügend Speicherplatz in Cassandra

Symptom

Die Installation von Apigee Hybrid schlägt fehl, weil nicht genügend Speicherplatz für die Cassandra-Datenbank vorhanden ist. Die Installation schlägt mit der folgenden Fehlermeldung fehl:

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

Außerdem enthält das Cassandra-Log eine Warnung ähnlich der folgenden:

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

Allgemeine Diagnoseschritte

Verwenden Sie das Apigee Hybrid Must-Gather-Skript, um die Logs aus den Cassandra-Pods zur Überprüfung zu erfassen.

Mögliche Ursache

Ursache Beschreibung
Kein Speicherplatz mehr verfügbar Der verfügbare Speicherplatz für Cassandra beträgt weniger als 50%.

Ursache 1: Kein Speicherplatz mehr verfügbar

Achten Sie beim Upgrade von Apigee Hybrid darauf, dass für alle Cassandra-Pods mehr als 50% Speicherplatz verfügbar sind.

Diagnose

  1. Sehen Sie sich im Apigee Hybrid Must-Gather-Script die Ausgabe des folgenden Befehls an, um die Gesamtgröße des mit Cassandra verknüpften Volumes zu prüfen:

    kubectl get pv -n APIGEE_NAMESPACE

    Beispielausgabe

    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. Prüfen Sie die nodetool-Statusausgabe, um die von jedem Cassandra-Pod verwendete Festplatte zu sehen. Die Speicherplatznutzung für nichtflüchtige Volume-Anforderungen (Persistent Volume Claims, PVCs), die Cassandra-Pods zugewiesen sind, sollte 50% der verfügbaren Speicherkapazität nicht überschreiten. Verwenden Sie den folgenden Befehl:
    kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec apigee-cassandra-default-1 -- bash -c 'nodetool -u cassandra -pw $CASS_PASSWORD status'

    Dabei ist CASS_PASSWORD das cassandra.auth.default.password, das in der Referenz zu Konfigurationsattributen erwähnt wird.

    Beispielausgabe

    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
    

    Optional: Verwenden Sie kubectl, um einen Befehl im Cassandra-Container auszuführen und den Prozentsatz der Festplattennutzung zu prüfen.

    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
    

    Beispiel

    Im folgenden Beispiel ist die Festplattenspeicherauslastung über 50%. Dies würde Probleme bei Apigee Hybrid-Upgrades verursachen.

    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

Lösung

Wenn die Laufwerksauslastung über 50 % liegt, skalieren Sie die Cassandra-Laufwerkskapazität, damit sie unter 50% liegt, bevor Sie ein Apigee Hybrid-Upgrade durchführen.

Informationen zum Erweitern der Festplattenkapazität finden Sie unter Größe des nichtflüchtigen Cassandra-Speichers verwalten.

Erfassen von Diagnoseinformationen erforderlich

Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an den Google Cloud Customer Care:
  • Ihre Google Cloud-Projekt-ID.
  • Ihre Apigee Hybrid-Organisation.
  • Die overrides.yaml-Dateien aus den Quellregionen und den neuen Regionen (vertrauliche Informationen müssen maskiert werden).
  • Die Ausgaben der Befehle in Apigee Hybrid Must-Gather.