Vous pouvez sauvegarder et restaurer vos données hybrides à l'aide d'instantanés CSI (Container Storage Interface). La sauvegarde CSI déclenche des instantanés de disque effectués par le système de stockage sous-jacent à l'aide du pilote CSI fourni. 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 :
- Si vous n'avez pas encore configuré la sauvegarde hybride :
- Exécutez la commande
create-service-account
suivante pour créer un compte de service Google Cloud avec le rôle standardroles/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.
- Graphiques Helm :
- 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.
- Exécutez la commande
- Ouvrez votre fichier
overrides.yaml
. Définissez les paramètres suivants, comme indiqué dans la section Exemples de fichiers de remplacement.- 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
. - schedule : indique une programmation d'expression Cron.
- enabled : défini sur
- 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 :
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.kubectl get sc
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
dansbackup
etrestore
surCSI
.
- cloudProvider : définissez
- 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 :
- Définissez les paramètres généraux indiqués ci-dessous dans le bloc
Exemple de configuration de sauvegarde
Cette section affiche les parties liées à la sauvegarde d'un exemple de fichieroverrides.yaml
.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always backup: enabled: true image: pullPolicy: Always 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 temporelsnapshotTimestamp
. - snapshotTimestamp : indique le code temporel d'une sauvegarde CSI précédente.
- 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
pvc-us-west2-b-20220803004907-47beff0e306d8861
20220803004907
.
Exemple de configuration de restauration
Cette section affiche les parties liées à la restauration d'un exemple de fichieroverrides.yaml
.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always restore: enabled: true snapshotTimestamp: "20220908222130" 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.
- Générez une sauvegarde à l'aide de la méthode de sauvegarde non-CSI actuellement configurée.
- Modifiez la configuration de sauvegarde dans le fichier hybride
overrides.yaml
pour utiliser les remplacements de sauvegarde CSI, comme indiqué dans l'exemple de configuration de sauvegarde . - Appliquez les modifications dans le fichier
overrides.yaml
:helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
- Vérifiez le job de sauvegarde :
kubectl get cronjob -n APIGEE_NAMESPACE
- 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