Spazio su disco insufficiente in Cassandra

Sintomo

Il processo di installazione di Apigee hybrid non riesce a causa dello spazio su disco insufficiente per il database Cassandra. Il processo di installazione non riesce e viene visualizzato il seguente messaggio di errore:

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

Inoltre, il log di Cassandra contiene un avviso simile al seguente:

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

Passaggi comuni di diagnostica

Utilizza lo script Apigee hybrid must-gather per raccogliere i log dai pod Cassandra per la revisione.

Possibile causa

Causa Descrizione
Spazio su disco esaurito Lo spazio sul disco disponibile per Cassandra è inferiore al 50%.

Causa 1: spazio su disco esaurito

Quando esegui l'upgrade di Apigee Hybrid, assicurati di avere più del 50% di spazio su disco disponibile per tutti i pod Cassandra.

Diagnosi

  1. Nello script Apigee hybrid must-gather, esamina l'output del seguente comando per controllare le dimensioni totali del volume associato a Cassandra:

    kubectl get pv -n APIGEE_NAMESPACE

    Esempio di 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. Controlla l'output dello stato di nodetool per visualizzare il disco utilizzato da ogni pod Cassandra. L'utilizzo dello spazio su disco per le attestazioni di volumi permanenti (PVC) assegnate ai pod Cassandra non deve superare il 50% della capacità di archiviazione disponibile. Fai riferimento al seguente comando:
    kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec apigee-cassandra-default-1 -- bash -c 'nodetool -u cassandra -pw $CASS_PASSWORD status'

    Dove CASS_PASSWORD è cassandra.auth.default.password come indicato in Riferimento per le proprietà di configurazione.

    Esempio di 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
    

    (Facoltativo) Utilizza kubectl per eseguire un comando all'interno del container Cassandra per controllare la percentuale di utilizzo del disco.

    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
    

    Esempio

    L'esempio seguente mostra dove l'utilizzo dello spazio su disco è superiore al 50%. Ciò causerebbe problemi per gli upgrade di 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

Risoluzione

Se l'utilizzo del disco è superiore al 50%, ridimensiona la capacità del disco Cassandra per assicurarti che sia inferiore al 50% prima di eseguire un upgrade di Apigee Hybrid.

Per espandere la capacità del disco, consulta Gestire le dimensioni dell'archiviazione permanente di Cassandra.

Deve raccogliere informazioni diagnostiche

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni diagnostiche e contatta l'assistenza clienti Google Cloud:
  • L'ID del tuo progetto Google Cloud.
  • La tua organizzazione Apigee hybrid.
  • I file overrides.yaml delle regioni di origine e di destinazione (ricorda di mascherare le informazioni sensibili).
  • Gli output dei comandi in Apigee hybrid must-gather.