No hay suficiente espacio en disco en Cassandra

Síntoma

El proceso de instalación de Apigee hybrid falla porque no hay suficiente espacio en disco para la base de datos de Cassandra. El proceso de instalación falla y aparece el siguiente mensaje de error:

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

Además, el registro de Cassandra contiene una advertencia similar a la siguiente:

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

Pasos de diagnóstico habituales

Usa la secuencia de comandos must-gather de Apigee hybrid para recoger los registros de los pods de Cassandra y revisarlos.

Causa posible

Causa Descripción
No hay espacio en el disco El espacio de disco disponible para Cassandra es inferior al 50%.

Causa 1: No hay espacio en el disco

Al actualizar Apigee hybrid, asegúrate de que haya más de un 50% de espacio en disco disponible para todos los pods de Cassandra.

Diagnóstico

  1. En la secuencia de comandos Apigee hybrid must-gather, examina el resultado del siguiente comando para comprobar el tamaño total del volumen asociado a Cassandra:

    kubectl get pv -n APIGEE_NAMESPACE

    Resultado de ejemplo

    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. Consulta el resultado del estado de nodetool para ver el disco utilizado por cada pod de Cassandra. El uso del espacio en disco de las reclamaciones de volumen persistente (PVCs) asignadas a los pods de Cassandra no debe superar el 50% de la capacidad de almacenamiento disponible. Consulta el siguiente comando:
    kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec apigee-cassandra-default-1 -- bash -c 'nodetool -u cassandra -pw $CASS_PASSWORD status'

    Donde CASS_PASSWORD es el cassandra.auth.default.password, tal como se indica en la referencia de la propiedad de configuración.

    Resultado de ejemplo

    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
    

    (Opcional) Usa kubectl para ejecutar un comando dentro del contenedor de Cassandra y comprobar el porcentaje de uso 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
    

    Ejemplo

    En el siguiente ejemplo se muestra dónde la utilización del espacio en disco supera el 50%. Esto causaría problemas en las actualizaciones de 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

Resolución

Si la utilización del disco supera el 50%, aumenta la capacidad del disco de Cassandra para que sea inferior al 50% antes de realizar una actualización de Apigee hybrid.

Para ampliar la capacidad del disco, consulta Gestionar el tamaño del almacenamiento persistente de Cassandra.

Debe recoger información de diagnóstico

Si el problema persiste incluso después de seguir las instrucciones anteriores, reúne la siguiente información de diagnóstico y ponte en contacto con el equipo de Asistencia de Google Cloud:
  • Tu ID de proyecto de Google Cloud.
  • Tu organización de Apigee Hybrid.
  • Los archivos overrides.yaml de las regiones de origen y de destino (recuerda enmascarar la información sensible).
  • Los resultados de los comandos de must-gather de Apigee hybrid.