Ampliar volúmenes persistentes de Cassandra

Este proceso le permite ampliar los volúmenes persistentes que usa la base de datos de Cassandra de Apigee hybrid para satisfacer mayores necesidades de almacenamiento sin tener que crear nodos nuevos solo para proporcionar más almacenamiento.

Información general

El componente cassandra de Apigee hybrid usa volúmenes persistentes para almacenar datos. El tamaño del volumen persistente se define durante la instalación y la configuración inicial. Este tamaño de almacenamiento inicial es un valor inmutable y no se puede cambiar. Por lo tanto, cualquier nodo nuevo que se añada al clúster usará el mismo tamaño de volumen persistente.

Es posible aumentar el tamaño del volumen persistente haciendo los cambios directamente en la reclamación de volumen persistente. Los nodos nuevos seguirán usando el tamaño inicial más pequeño del volumen persistente.

Si tu base de datos híbrida de Cassandra se acerca a su capacidad de almacenamiento, puedes usar este procedimiento para ampliar los volúmenes persistentes y permitir que los nuevos nodos también amplíen sus volúmenes persistentes.

Ampliar volúmenes persistentes de Cassandra

  1. Actualiza el tamaño del volumen al tamaño que quieras:
    kubectl -n apigee edit pvc
  2. Comprueba la capacidad de volumen actualizada:
     kubectl get pvc -n apigee
     kubectl get pvc -n apigee
    NAME                                       STATUS  VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         AGE
    cassandra-data-apigee-cassandra-default-0  Bound   pvc-92234ba7-941b-4dab-82c6-8a5288a2c8d4   500Gi      RWO            standard       21m
    cassandra-data-apigee-cassandra-default-1  Bound   pvc-6be911fc-91f7-465d-a02e-933428ee10b2   500Gi      RWO            standard       20m
    cassandra-data-apigee-cassandra-default-2  Bound   pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404   500Gi      RWO            standard       19m
    
  3. Crea una copia de seguridad, elimina y vuelve a crear el conjunto con estado con el nuevo tamaño de almacenamiento. Los siguientes comandos crean un archivo de configuración apigee-cassandra-default.yaml que puedes usar para capturar la configuración actual de Cassandra. Después, modifica y aplica esta configuración:
    1. kubectl -n apigee get sts apigee-cassandra-default -o yaml > apigee-cassandra-default.yaml
    2. kubectl -n apigee delete sts --cascade=orphan apigee-cassandra-default
    3. Comprueba que la operación delete se haya completado:
      kubectl get sts -n apigee

      La salida debería tener este aspecto:

      No resources found in apigee namespace.
    4. Actualiza el tamaño del almacenamiento en el archivo apigee-cassandra-default.yaml con el nuevo tamaño de almacenamiento. Debe coincidir con el tamaño que quiera aplicar en su overrides.yaml. Por ejemplo:
           resources:
              requests:
                storage: 500Gi
    5. Vuelve a aplicar la configuración de StatefulSet con el tamaño de almacenamiento actualizado:
      kubectl apply -f apigee-cassandra-default.yaml
    6. Verifica que el conjunto con estado se haya vuelto a crear correctamente:
      kubectl get sts -n apigee

      La salida debería tener un aspecto similar a este:

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  4. Actualiza el archivo de anulaciones con el nuevo tamaño de volumen que especificaste al editar el PVC:

    Helm

    cassandra:
      storage:
        storageSize: 500Gi
      

    Consulta cassandra.storage.storageSize para obtener más información.

    apigeectl

    cassandra:
      storage:
        capacity: 500Gi
       

    Consulta cassandra.storage.capacity para obtener más información.

  5. Aplica la configuración actualizada al clúster:

    Helm

    helm upgrade datastore apigee-datastore/ \
    --namespace apigee \
    --atomic \
    -f OVERRIDES_FILE.yaml
    

    apigeectl

    $APIGEECTL_HOME/apigeectl apply datastore -f OVERRIDES_FILE.yaml
    Parsing file: config/values.yaml
    Parsing file: overrides/overrides.yaml
    cleansing older AD's (v1alpha1) istio resources...
    
    Invoking "kubectl apply" with YAML config...
    
    apigeedatastore.apigee.cloud.google.com/apigee-cassandra unchanged
  6. Comprueba si el STS recién creado tiene el tamaño de almacenamiento actualizado:
    kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
    storage: 500Gi
  7. Comprueba si el volumen de datos de los pods de C* se ha actualizado con el nuevo tamaño:

    kubectl exec -n apigee -it apigee-cassandra-default-0 -- df -h|grep "/opt/apigee/data"
    /dev/sdb         99G   69M   99G   1% /opt/apigee/data