Espacio en disco insuficiente en Cassandra

Síntoma

El proceso de instalación de Apigee Hybrid falla debido a que no hay suficiente espacio en el disco para la base de datos de Cassandra. El proceso de instalación falla con 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 comunes de diagnóstico

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

Causa posible

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

Causa 1: No hay espacio en el disco

Cuando actualices Apigee Hybrid, asegúrate de tener más del 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 verificar el tamaño total del volumen asociado con Cassandra:

    kubectl get pv -n APIGEE_NAMESPACE

    Resultado de muestra

    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. Verifica el resultado del estado de nodetool para ver el disco que utiliza cada pod de Cassandra. La utilización del espacio en disco para las reclamaciones de volúmenes persistentes (PVC) 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'

    Aquí, CASS_PASSWORD es el cassandra.auth.default.password como se menciona en la referencia de la propiedad de configuración.

    Resultado de muestra

    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 verificar 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 el uso del espacio en disco supera el 50%. Esto causaría problemas con 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

Solución

Si observas que la utilización del disco supera el 50%, ajusta la capacidad del disco de Cassandra para asegurarte de que esté por debajo del 50% antes de realizar una actualización de Apigee hybrid.

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

Se debe recopilar información de diagnóstico

Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y, luego, comunícate con Atención al cliente de Google Cloud:
  • El ID del proyecto de Google Cloud.
  • Tu organización de Apigee hybrid.
  • Los archivos overrides.yaml de las regiones nuevas y de origen (recuerda enmascarar cualquier información sensible).
  • Los resultados de los comandos en Apigee hybrid must-gather.