Espace disque insuffisant dans Cassandra

Problème constaté

Le processus d'installation d'Apigee hybrid échoue en raison d'un espace disque insuffisant pour la base de données Cassandra. Le processus d'installation échoue avec le message d'erreur suivant :

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

De plus, le journal Cassandra contient un avertissement semblable à ce qui suit :

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

Étapes de diagnostic courantes

Utilisez le script Apigee hybrid must-gather pour collecter les journaux des pods Cassandra à examiner.

Cause possible

Cause Description
Espace disque insuffisant L'espace disque disponible pour Cassandra est inférieur à 50 %.

Cause 1 : Espace disque insuffisant

Lorsque vous mettez à niveau Apigee hybrid, assurez-vous que plus de 50 % d'espace disque est disponible pour tous les pods Cassandra.

Diagnostic

  1. À partir du script Apigee Hybrid must-gather, examinez le résultat de la commande suivante pour vérifier la taille totale du volume associé à Cassandra :

    kubectl get pv -n APIGEE_NAMESPACE

    Exemple de résultat

    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. Vérifiez l'état de nodetool pour connaître le disque utilisé par chaque pod Cassandra. L'utilisation de l'espace disque pour les demandes de volume persistant (PVC) attribuées aux pods Cassandra ne doit pas dépasser 50 % de la capacité de stockage disponible. Reportez-vous à la commande suivante :
    kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec apigee-cassandra-default-1 -- bash -c 'nodetool -u cassandra -pw $CASS_PASSWORD status'

    CASS_PASSWORD est le cassandra.auth.default.password mentionné dans la documentation de référence sur les propriétés de configuration.

    Exemple de résultat

    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
    

    (Facultatif) Utilisez kubectl pour exécuter une commande dans le conteneur Cassandra afin de vérifier le pourcentage d'utilisation du disque.

    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
    

    Exemple

    L'exemple suivant montre une utilisation de l'espace disque supérieure à 50 %. Cela entraînerait des problèmes lors des mises à niveau d'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

Solution

Si vous constatez que l'utilisation du disque est supérieure à 50 %, augmentez la capacité du disque Cassandra pour qu'elle soit inférieure à 50 % avant d'effectuer une mise à niveau d'Apigee hybrid.

Pour augmenter la capacité du disque, consultez Gérer la taille du stockage persistant Cassandra.

Vous devez collecter des informations de diagnostic

Si le problème persiste, même après avoir suivi les instructions ci-dessus, rassemblez les informations de diagnostic suivantes, puis contactez Google Cloud Customer Care :
  • L'ID de votre projet Google Cloud.
  • Votre organisation Apigee hybrid.
  • Les fichiers overrides.yaml des régions sources et nouvelles (n'oubliez pas de masquer les informations sensibles).
  • Les résultats des commandes dans Apigee hybrid must-gather.