Expande volúmenes persistentes de Cassandra

Este proceso te permite expandir los volúmenes persistentes que usa la base de datos híbrida de Cassandra de Apigee a fin de satisfacer necesidades de almacenamiento mayores sin necesidad de crear nodos nuevos solo para proporcionar más almacenamiento.

Descripción general

El componente híbrido de Apigee cassandra 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 agregue al clúster utilizará el mismo tamaño de volumen persistente.

Es posible aumentar el tamaño del volumen persistente existente si se realizan los cambios directamente en la reclamación de volumen persistente, pero los nodos nuevos seguirán usando el tamaño de volumen persistente inicial más pequeño.

Si tu base de datos híbrida de Cassandra está cerca de su capacidad de almacenamiento, puedes usar este procedimiento para expandir los volúmenes persistentes existentes y permitir que los nodos nuevos también expandan sus volúmenes persistentes.

Expande volúmenes persistentes de Cassandra

  1. Actualiza el tamaño de volumen al tamaño deseado:
    kubectl -n apigee edit pvc
  2. Verifica la capacidad de volumen actualizada:
     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   100Gi      RWO            standard       21m
    cassandra-data-apigee-cassandra-default-1   Bound    pvc-6be911fc-91f7-465d-a02e-933428ee10b2   100Gi      RWO            standard       20m
    cassandra-data-apigee-cassandra-default-2   Bound    pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404   100Gi      RWO            standard       19m
  3. Configura réplicas en 0 para implementaciones apigee-controller-manager en el espacio de nombres apigee-system:
    1. kubectl get deployments -n apigee-system
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           28m
    2. kubectl edit deployments -n apigee-system apigee-controller-manager
    3. kubectl get deployments -n apigee-system
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   0/0     0            0           30m
  4. Crea copias de seguridad, borra y vuelve a crear el StatefulSet con el nuevo tamaño de almacenamiento. Con las siguientes instrucciones, se crea un archivo de configuración apigee-cassandra-default.yaml que puedes usar para capturar la configuración actual de Cassandra. A continuación, 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=false apigee-cassandra-default
    3. Comprueba que la operación delete esté completa:
      kubectl get sts -n apigee

      Deberías obtener un resultado similar al siguiente:

      No resources found in apigee namespace.
    4. Actualiza el tamaño de almacenamiento en el archivo apigee-cassandra-default.yaml con el tamaño de almacenamiento nuevo. Este debe coincidir con el tamaño que pretendes aplicar en tu overrides.yaml. Por ejemplo:
           resources:
              requests:
                storage: 100Gi
    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 estado con estado se haya creado correctamente:
      kubectl get sts -n apigee

      Deberías obtener un resultado similar al siguiente:

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  5. Actualice el archivo de anulación con el tamaño de volumen nuevo que especificó cuando editó el archivo pvc:
    cassandra:
      storage:
        capacity: 100Gi
  6. Aplica la configuración al clúster:
    ../apigeectl apply --datastore -f overrides/overrides.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
  7. Actualiza las réplicas de implementación del controlador a su estado anterior (`1`):
    kubectl edit deployments -n apigee-system apigee-controller-manager
  8. Comprueba si los sts recién creados tienen el tamaño de almacenamiento actualizado:
    kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
    storage: 100Gi
  9. Verifica si el volumen de datos de los pods de C* se actualizó al tamaño nuevo:

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