Cette section explique comment configurer la sauvegarde et la récupération de votre base de données Cassandra en utilisant ssh
et votre système de fichiers plutôt que Google Cloud. Voir également :
Présentation de la sauvegarde et de la récupération Cassandra sans services Cloud
La sauvegarde sans services Cloud permet de stocker les sauvegardes de votre base de données Cassandra dans des fichiers compressés dans le système de fichiers d'un serveur que vous spécifiez. Les sauvegardes sont effectuées suivant une programmation que vous spécifiez dans votre fichier de remplacement. La connexion au serveur s'effectue via une connexion SSH sécurisée.
Configuration des sauvegardes sans services Cloud
Les étapes suivantes incluent des exemples de tâches typiques, comme la création d'une paire de clés SSH. Utilisez les méthodes adaptées à votre installation.
La procédure comprend les éléments suivants :
- Configurer le serveur et SSH
- Planifier les sauvegardes et définir leur destination
- Configurer pour la récupération
Configurer le serveur et SSH
- Désignez un serveur Linux ou Unix pour vos sauvegardes. Ce serveur doit être accessible à l'aide de SSH à partir de votre plan d'exécution Apigee hybrid. Il doit disposer de suffisamment d'espace de stockage pour vos sauvegardes.
- Configurez un serveur SSH sur le serveur, ou vérifiez qu'un serveur SSH sécurisé est déjà configuré.
- Créez une paire de clés SSH et stockez le fichier de clé privée dans un emplacement accessible à partir de votre plan d'exécution hybride. Vous devez utiliser un mot de passe vide pour votre paire de clés, sinon la sauvegarde échouera. Exemple :
ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ssh_key Your public key has been saved in ssh_key.pub The key fingerprint is: SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com The key's randomart image is: +---[RSA 4096]----+ | +. ++X| | . . o.=.*+| | . o . . o==o | | . . . =oo+o...| | . S +E oo .| | . . .. . o .| | . . . . o.. | | . ...o ++. | | .. .. +o+. | +----[SHA256]-----+ - Créez un compte utilisateur nommé
apigee
sur le serveur de sauvegarde. Assurez-vous que le nouvel utilisateurapigee
possède un répertoire d'accueil sous/home
. - Sur le serveur de sauvegarde, créez un répertoire
ssh
dans le nouveau répertoire/home/apigee
. - Copiez la clé publique (
ssh_key.pub
dans l'exemple précédent) dans un fichier nomméauthorized_keys
dans le nouveau répertoire/home/apigee/ssh
. Exemple :cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- Sur votre serveur de sauvegarde, créez un répertoire de sauvegarde dans le répertoire
/home/apigee/
. Le répertoire de sauvegarde peut être n'importe quel répertoire tant que l'utilisateurapigee
y a accès. Exemple :cd /home/apigee
mkdir cassandra-backup
- Testez la connexion. Vous devez vous assurer que vos pods Cassandra peuvent se connecter à votre serveur de sauvegarde à l'aide de SSH :
- Connectez-vous à l'interface système de votre pod Cassandra. Exemple :
kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash
Où APIGEE_CASSANDRA_DEFAULT_0 est le nom d'un pod Cassandra. Remplacez ce nom par le nom du pod à partir duquel vous souhaitez vous connecter.
- Connectez-vous via SSH à votre serveur de sauvegarde en utilisant l'adresse IP du serveur :
ssh apigee@BACKUP_SERVER_IP
- Connectez-vous à l'interface système de votre pod Cassandra. Exemple :
Planifier les sauvegardes et définir leur destination
Vous devez définir le calendrier et la destination des sauvegardes dans le fichier overrides.yaml
.
- Ajoutez les paramètres suivants au fichier
overrides.yaml
:Paramètres
cassandra: backup: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) schedule: "SCHEDULE"
Exemple
cassandra: backup: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *"
Où :
Valeur Description backup:enabled
La sauvegarde est désactivée par défaut. Vous devez définir cette propriété sur true
.backup:keyFile
PATH_TO_PRIVATE_KEY_FILE
Chemin d'accès au fichier de clé privée SSH (nommé
ssh_key
à l'étape où vous avez créé la paire de clés SSH) dans votre système de fichiers local.backup:server
BACKUP_SERVER_IP
Adresse IP de votre serveur de sauvegarde.
backup:storageDirectory
BACKUP_DIRECTORY
Nom du répertoire de sauvegarde sur votre serveur de sauvegarde. Il doit s'agir d'un répertoire dans
home/apigee
(le répertoire de sauvegarde nommécassandra_backup
à l'étape de création du répertoire de sauvegarde).backup:cloudProvider
HYBRID
La propriété
cloudProvider: "HYBRID"
est obligatoire.backup:schedule
SCHEDULE
L'heure de début de la sauvegarde, spécifiée dans la syntaxe crontab standard. Par défaut :
0 2 * * *
- Utilisez la commande
apigeectl
pour appliquer la configuration de la sauvegarde au champ d'application de stockage de votre cluster :$APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE
Où YOUR_OVERRIDES_FILE est le chemin d'accès au fichier que vous venez de modifier.
- Vérifiez la tâche de sauvegarde. Exemple :
kubectl get cronjob -n apigee
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s
Configurer la restauration
La restauration extrait vos données de l'emplacement de sauvegarde et les restaure dans un nouveau cluster Cassandra présentant le même nombre de nœuds. Aucune donnée n'est extraite de l'ancien cluster Cassandra.
Les instructions de restauration ci-dessous concernent les déploiements dans une seule région qui n'utilisent pas Google Cloud Storage pour les sauvegardes. Pour les autres déploiements, consultez les articles suivants :
- Pour les déploiements dans une seule région qui utilisent Google Cloud Storage pour les sauvegardes, consultez la section Sauvegarde et récupération Cassandra.
- Pour les déploiements multirégionaux, consultez la section Déploiement multirégional sur GKE et GKE On-Prem.
Pour restaurer des sauvegardes Cassandra :
- Créez un espace de noms dans le cluster Kubernetes existant qui sera utilisé pour restaurer le déploiement de l'environnement d'exécution hybride. N'utilisez pas le nom d'espace de noms d'origine pour le nouvel espace de noms. N'utilisez pas l'ancien espace de noms pour la restauration.
-
Dans le répertoire racine d'installation hybride, créez un fichier
overrides-restore.yaml
. -
Copiez la configuration Cassandra complète à partir de votre fichier
overrides.yaml
d'origine dans le nouveau fichieroverrides-restore.yaml
. Exemple :cp ./overrides.yaml ./overrides-restore.yaml
- Ajoutez un élément d'espace de noms au nouveau fichier
overrides-restore.yaml
.Paramètres
namespace: YOUR_RESTORE_NAMESPACE cassandra: ... restore: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) snapshotTimestamp: "TIMESTAMP" ..
Exemple
namespace: cassandra-restore cassandra: restore: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" snapshotTimestamp: "20201001183903"
- Modifiez le libellé
app
sur n'importe quel nœud Cassandra de l'ancien espace de noms en exécutant la commande suivante :kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
- Créez un déploiement d'exécution hybride. Cela crée un cluster Cassandra et commence à restaurer les données de sauvegarde dans le cluster :
./apigeectl init -f ../overrides-restore.yaml
./apigeectl apply -f ../overrides-restore.yaml
-
Une fois la restauration terminée, le trafic doit être basculé pour utiliser le cluster Cassandra dans le nouvel espace de noms. Exécutez les commandes suivantes pour changer de trafic :
kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{"spec":{"replicas" : 0}}'
- Une fois le trafic basculé, vous pouvez reconfigurer les sauvegardes sur le cluster restauré en supprimant la configuration
restore
et en ajoutant la configurationbackup
au fichieroverrides-restore.yaml
. Remplacez YOUR_RESTORE_NAMESPACE par le nom de l'espace de noms créé à l'étape 1.namespace: YOUR_RESTORE_NAMESPACE cassandra: ... backup: enabled: true serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH schedule: BACKUP_SCHEDULE_CODE ...
Appliquez ensuite la configuration
backup
à l'aide de la commande suivante :./apigeectl apply -f ../overrides-restore.yaml
Où :
Valeur | Description |
---|---|
namespace |
YOUR_RESTORE_NAMESPACE Nom du nouvel espace de noms que vous avez créé à l'étape 1 pour le nouveau cluster Cassandra. N'utilisez pas le même espace de noms que celui utilisé pour votre cluster d'origine. |
restore:enabled |
La restauration est désactivée par défaut. Vous devez définir cette propriété sur true . |
restore:keyFile |
PATH_TO_PRIVATE_KEY_FILE Chemin d'accès au fichier de clé privée SSH (nommé |
restore:server |
BACKUP_SERVER_IP Adresse IP de votre serveur de sauvegarde. |
restore:storageDirectory |
BACKUP_DIRECTORY Nom du répertoire de sauvegarde sur votre serveur de sauvegarde.
Il doit s'agir d'un répertoire dans |
restore:cloudProvider |
La propriété |
restore:snapshotTimestamp |
TIMESTAMP
Horodatage de l'instantané de sauvegarde à restaurer. Pour vérifier quels horodatages peuvent être utilisés, accédez à
Où 20210203213003 correspond à la valeur |