Espandere i volumi permanenti Cassandra

Questa procedura ti consente di espandere i volumi permanenti utilizzati dal database Cassandra ibrido di Apigee per soddisfare esigenze di archiviazione maggiori senza dover creare nuovi nodi solo per fornire più spazio di archiviazione.

Panoramica

Il componente cassandra ibrido Apigee utilizza volumi permanenti per archiviare i dati. Le dimensioni del volume persistente vengono definite durante l'installazione e la configurazione iniziale. Questa dimensione iniziale dello spazio di archiviazione è un valore immutabile e non può essere modificata. Pertanto, qualsiasi nuovo nodo aggiunto al cluster utilizzerà le stesse dimensioni del volume permanente.

È possibile aumentare le dimensioni del volume permanente esistente apportando le modifiche direttamente alla richiesta di volume permanente. I nuovi nodi continueranno a utilizzare le dimensioni iniziali più piccole del volume permanente.

Se il tuo database Cassandra ibrido sta per raggiungere la sua capacità di archiviazione, puoi utilizzare questa procedura per espandere i volumi permanenti esistenti e consentire ai nuovi nodi di espandere i propri volumi permanenti.

Espandere i volumi permanenti Cassandra

  1. Aggiorna le dimensioni del volume in base alle dimensioni desiderate:
    kubectl -n apigee edit pvc
  2. Controlla la capacità del volume aggiornata:
     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. Esegui il backup, elimina e ricrea lo statefulset con le nuove dimensioni dello spazio di archiviazione. I comandi seguenti creano un file di configurazione apigee-cassandra-default.yaml che puoi utilizzare per acquisire la configurazione attuale di Cassandra. Poi modifica e applica questa configurazione:
    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. Verifica che l'operazione delete sia completata:
      kubectl get sts -n apigee

      L'output dovrebbe essere simile al seguente:

      No resources found in apigee namespace.
    4. Aggiorna le dimensioni dello spazio di archiviazione nel file apigee-cassandra-default.yaml con le nuove dimensioni dello spazio di archiviazione. Deve corrispondere alle dimensioni che intendi applicare in overrides.yaml. Ad esempio:
           resources:
              requests:
                storage: 100Gi
    5. Applica di nuovo la configurazione di statefulset con le dimensioni dello spazio di archiviazione aggiornate:
      kubectl apply -f apigee-cassandra-default.yaml
    6. Verifica che lo stato sia stato ricreato correttamente:
      kubectl get sts -n apigee

      L'output dovrebbe avere il seguente aspetto:

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  4. Aggiorna il file delle sostituzioni con le nuove dimensioni del volume specificate quando hai modificato il file pvc:
    cassandra:
      storage:
        capacity: 100Gi
  5. Applica la configurazione aggiornata al cluster:

    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. Controlla se l'elemento sts appena creato ha lo spazio di archiviazione aggiornato:
    kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
    storage: 100Gi
  7. Controlla se il volume dei dati dei pod C* è stato aggiornato con le nuove dimensioni:

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