Sauvegarde et restauration CSI Cassandra

Vous pouvez sauvegarder et restaurer vos données hybrides à l'aide d'instantanés CSI (Container Storage Interface). La sauvegarde CSI génère des instantanés de disque et les stocke en tant que données chiffrées dans le stockage cloud. La sauvegarde CSI ne nécessite pas de bucket Google Cloud Storage ni de serveur distant pour stocker les données de sauvegarde.

La sauvegarde CSI est recommandée pour les instances hybrides hébergées dans Google Cloud, AWS ou Azure.

Cette page décrit la procédure à suivre pour utiliser la sauvegarde et la restauration CSI hybride. Pour obtenir une présentation générale de la sauvegarde et de la restauration hybrides, consultez la page Présentation de la sauvegarde et de la restauration Cassandra.

Limites des sauvegardes et des restaurations

Tenez compte des limites suivantes lorsque vous utilisez la sauvegarde et la restauration CSI :

  • Le pilote CSI utilisé par la classe de stockage configurée doit être compatible avec les instantanés CSI. Consultez la liste des pilotes CSI Kubernetes pour obtenir des informations sur les pilotes.
  • Certaines plates-formes ne sont pas compatibles. Seules les plates-formes Google Cloud, AWS et Azure sont compatibles.
  • La plate-forme de conteneur OpenShift n'est pas compatible en raison de ses limitations de volume pour les instantanés.
  • Seules les plates-formes cloud sont compatibles. Les plates-formes sur site ne sont pas compatibles.
  • Les données de sauvegarde CSI et les données de sauvegarde hybride non-CSI sont incompatibles. Les sauvegardes non-CSI ne peuvent pas être utilisées avec une restauration CSI et les sauvegardes CSI ne peuvent pas être utilisées avec une restauration non-CSI.
  • L'installation et la fonctionnalité du pilote CSI relèvent de la responsabilité du fournisseur de pilote CSI.
  • Les utilisateurs sont tenus de s'assurer que les ressources de cluster disponibles sont suffisantes pour le provisionnement des instantanés CSI.
  • Les utilisateurs sont chargés de supprimer les anciennes données d'instantané.

Configurer des sauvegardes CSI

Pour planifier des sauvegardes hybrides à l'aide de CSI, procédez comme suit :

  1. Si vous n'avez pas encore configuré la sauvegarde hybride :
    1. Exécutez la commande create-service-account suivante pour créer un compte de service Google Cloud avec le rôle standard roles/storage.objectAdmin. Ce rôle de compte de service vous permet d'écrire les données de sauvegarde dans Cloud Storage. Exécutez la commande suivante dans le répertoire adapté à votre outil de gestion :
      • Graphiques Helm : $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/
      • apigeectl : HYBRID_BASE_DIRECTORY/hybrid-files/
      ./tools/create-service-account --env non-prod --dir ./service-accounts

      Cette commande crée un seul compte de service nommé apigee-non-prod pour l'utiliser dans des environnements hors production et place le fichier de clé téléchargé dans le répertoire ./service-accounts.

      Pour en savoir plus sur les comptes de service Google Cloud, consultez la page Créer et gérer des comptes de service.

    2. La commande create-service-account enregistre un fichier JSON contenant la clé privée du compte de service. Le fichier est enregistré dans le répertoire où est exécutée la commande. Vous aurez besoin du chemin d'accès à ce fichier lors des étapes suivantes.
  2. Ouvrez votre fichier overrides.yaml. Définissez les paramètres suivants, comme indiqué dans la section Exemples de fichiers de remplacement.

    1. Définissez les paramètres généraux indiqués ci-dessous dans le bloc backup. Si vous avez déjà défini ces paramètres pour la solution de sauvegarde hybride ne reposant pas sur la solution CSI, vous pouvez utiliser les mêmes paramètres pour vos instantanés CSI. Pour en savoir plus sur chaque valeur, consultez le tableau de référence des propriétés de sauvegarde.

      Pour backup :

      • enabled : défini sur true pour activer les sauvegardes planifiées.
      • pullPolicy de l'image : définie sur Always.
      • serviceAccountPath: : chemin d'accès au compte de service.
      • schedule : indique une programmation d'expression Cron.
    2. Définissez ces paramètres pour la sauvegarde spécifique à CSI :
      • Valeurs du groupe de stockage Cassandra : la classe de stockage Cassandra configurée doit être compatible avec les instantanés CSI pour que la sauvegarde et la restauration CSI fonctionnent. Pour vérifier si une classe de stockage est compatible avec les instantanés CSI, exécutez la commande suivante pour obtenir les classes de stockage disponibles :
        kubectl get sc
        Examinez la sortie "Approvisionneur" pour chaque classe de stockage. Les approvisionneurs utilisant CSI ont généralement une partie ".csi". à leur nom, par exemple "pd.csi.storage.gke.io". Recherchez le nom de l'approvisionneur dans cette liste de pilotes CSI Kubernetes. Si la colonne "Autres fonctionnalités" de l'approvisionneur contient le mot "SNAPSHOT", cela signifie que la classe de stockage utilisant l'approvisionneur est compatible avec les instantanés CSI.

        Ajoutez ces paramètres au groupe de stockage. Les deux valeurs sont obligatoires.

        • storageclass : nom d'une classe de stockage compatible avec les instantanés CSI.
        • capacity : capacité du disque.
      • Type de fournisseur cloud :

        Une fois la fonctionnalité d'instantané CSI validée, modifiez le fichier de remplacement pour utiliser la sauvegarde et la restauration CSI :

        • cloudProvider: : définissez cloudProvider dans backup et restore sur CSI.

Exemple de configuration de sauvegarde

Cette section affiche les parties liées à la sauvegarde d'un exemple de fichier overrides.yaml.
cassandra:
  hostNetwork: false
  replicaCount: 3
  storage:
    storageclass: standard-rwo
    capacity: 100Gi
  image:
    pullPolicy: Always

  backup:
    enabled: true
    image:
      pullPolicy: Always
    serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json"
    cloudProvider: "CSI"
    schedule: "0 * * 11 *"

Lancer une sauvegarde manuelle

Les sauvegardes CSI sont générées automatiquement selon la planification Cron définie dans le fichier overrides.yaml.

Pour lancer une sauvegarde CSI manuelle, utilisez la commande suivante :

kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup BACKUP_POD_NAME
BACKUP_POD_NAME est le nom du pod de sauvegarde qui sera créé.

Vérifier les sauvegardes

Pour vérifier qu'une sauvegarde a bien été créée, vous pouvez par exemple vérifier les instantanés de volume sur le cluster Kubernetes à l'aide de la commande suivante :

kubectl get volumesnapshot -n APIGEE_NAMESPACE

Le résultat affiche la liste actuelle des instantanés sur le cluster. Le processus de sauvegarde CSI crée un instantané de chaque disque Cassandra. Le nombre d'instantanés générés doit correspondre au nombre total de pods Cassandra dans le cluster.

Restaurer une sauvegarde

Utilisez ce processus pour restaurer une sauvegarde CSI générée précédemment. Pour obtenir des informations générales sur la restauration de sauvegardes et une présentation du processus, consultez la page Présentation de la restauration.

Pour lancer une restauration d'une sauvegarde CSI, suivez les instructions pour la restauration de sauvegarde hybride non-CSI dans une seule région, mais utilisez ces valeurs dans le bloc restore de votre fichier overrides.yaml. Pour en savoir plus sur chaque valeur et l'exemple de configuration de restauration, consultez le tableau de référence des propriétés de sauvegarde.

  • enabled : défini sur true pour activer la restauration pour la sauvegarde référencée avec le code temporel snapshotTimestamp.
  • snapshotTimestamp: : indique le code temporel d'une sauvegarde CSI précédente.
  • serviceAccountPath: : chemin d'accès au compte de service.
  • pullPolicy de l'image : définie sur Always.

Pour trouver la valeur snapshotTimestamp à restaurer, exécutez la commande suivante pour obtenir la liste des instantanés disponibles :

kubectl get volumesnapshot -n APIGEE_NAMESPACE
Dans la liste renvoyée, les noms des instantanés contiennent le code temporel :
pvc-us-west2-b-20220803004907-47beff0e306d8861
Dans cet exemple, le code temporel est 20220803004907.

Exemple de configuration de restauration

Cette section affiche les parties liées à la restauration d'un exemple de fichier overrides.yaml.
cassandra:
  hostNetwork: false
  replicaCount: 3
  storage:
    storageclass: standard-rwo
    capacity: 100Gi
  image:
    pullPolicy: Always

  restore:
    enabled: true
    snapshotTimestamp: "20220908222130"
    serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json"
    cloudProvider: "CSI"
    image:
      pullPolicy: Always

Migrer vers la Sauvegarde et restauration CSI

Si vous n'avez pas encore utilisé de sauvegarde et de restauration hybrides, vous pouvez suivre les instructions de la section Configurer des sauvegardes CSI pour créer des sauvegardes CSI sans les étapes de cette section. Ces étapes vous guident dans la migration d'une solution de sauvegarde et de restauration non-CSI vers des sauvegardes CSI.

  1. Générez une sauvegarde à l'aide de la méthode de sauvegarde non-CSI actuellement configurée.
  2. .
  3. Appliquez les modifications dans le fichier overrides.yaml :
    helm upgrade datastore apigee-datastore/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  4. Vérifiez le job de sauvegarde :
    kubectl get cronjob -n APIGEE_NAMESPACE
  5. Une fois la tâche de sauvegarde terminée, vérifiez que les instantanés ont été créés. Le nombre d'instantanés générés doit être équivalent au nombre de nœuds Cassandra dans l'instance Hybrid.
    kubectl get volumesnapshot -n APIGEE_NAMESPACE