Développer des volumes persistants Cassandra

Ce processus vous permet de développer les volumes persistants utilisés par la base de données Apigee hybrid Cassandra pour répondre aux besoins de stockage plus importants sans avoir à créer de nœuds supplémentaires pour fournir davantage d'espace de stockage.

Aperçu

Le composant Apigee hybride cassandra utilise des volumes persistants pour stocker des données. La taille du volume persistant est définie lors de l'installation et de la configuration initiale. Cette taille de stockage initiale est une valeur immuable et ne peut pas être modifiée. Par conséquent, tout nouveau nœud ajouté au cluster utilisera la même taille de volume persistant.

Il est possible d'augmenter la taille du volume persistant existant en apportant les modifications directement dans la revendication de volume persistant. Toutefois, les nouveaux nœuds continueront d'utiliser la taille de volume persistant initiale plus petite.

Si votre base de données hybride Cassandra approche de sa limite de stockage, vous pouvez utiliser cette procédure pour développer les volumes persistants existants et autoriser les nouveaux nœuds à développer également leurs volumes persistants.

Développer des volumes persistants Cassandra

  1. Modifiez la taille du volume pour obtenir la taille souhaitée :
    kubectl -n apigee edit pvc
  2. Vérifiez la capacité du volume mis à jour :
     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. Définissez des instances dupliquées sur 0 pour les déploiements apigee-controller-manager dans l'espace de noms 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. Sauvegardez, supprimez et recréez l'ensemble avec état avec la nouvelle taille de stockage. Les commandes suivantes créent un fichier de configuration apigee-cassandra-default.yaml que vous pouvez utiliser pour capturer la configuration Cassandra actuelle. Vous modifiez et appliquez ensuite cette configuration :
    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. Vérifiez que l'opération delete est terminée :
      kubectl get sts -n apigee

      Vous devriez obtenir le résultat suivant :

      No resources found in apigee namespace.
    4. Mettez à jour le fichier apigee-cassandra-default.yaml avec la nouvelle taille de l'espace de stockage. Celle-ci doit correspondre à la taille que vous souhaitez appliquer dans votre overrides.yaml. Exemple :
           resources:
              requests:
                storage: 100Gi
    5. Appliquez à nouveau la configuration avec état avec la taille de stockage mise à jour :
      kubectl apply -f apigee-cassandra-default.yaml
    6. Vérifiez que le statefulset a été recréé correctement :
      kubectl get sts -n apigee

      Le résultat doit se présenter sous la forme suivante :

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  5. Mettez à jour le fichier de remplacement avec la nouvelle taille de volume spécifiée lors de la modification du pvc :
    cassandra:
      storage:
        capacity: 100Gi
  6. Appliquez la configuration mise à jour au cluster :
    ../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. Mettez à jour les instances dupliquées de déploiement du contrôleur pour revenir à leur état antérieur (`1`) :
    kubectl edit deployments -n apigee-system apigee-controller-manager
  8. Vérifiez si la sts nouvellement créée dispose de la taille de stockage mise à jour :
    kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
    storage: 100Gi
  9. Vérifiez si le volume de données des pods C* a été mis à jour avec une nouvelle taille :

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