Cette page explique comment planifier des sauvegardes pour Cassandra sans Cloud Storage. Dans cette méthode, les sauvegardes sont stockées sur un serveur distant que vous avez spécifié au lieu d'un bucket Cloud Storage. Apigee utilise SSH pour communiquer avec le serveur distant.
Vous devez planifier les sauvegardes en tant que tâches cron
. Une fois que la planification d'une sauvegarde a été appliquée à votre cluster hybride, une tâche de sauvegarde Kubernetes est exécutée régulièrement en fonction de la planification dans le plan d'exécution. La tâche déclenche un script de sauvegarde sur chaque nœud Cassandra de votre cluster hybride. Ce script collecte toutes les données du nœud, crée un fichier d'archive (compressé) des données et envoie l'archive au serveur spécifié dans votre fichier overrides.yaml
.
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
- 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]-----+Où exampleuser@example.com est une chaîne. Toute chaîne qui suit
-C
dans la commandessh-keygen
devient un commentaire inclus dans la cléssh
qui vient d'être créée. La chaîne d'entrée peut être n'importe quelle chaîne. Lorsque vous utilisez un nom de compte au format exampleuser@example.com, vous pouvez rapidement identifier le compte associé à la clé. - 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
GCP/HYBRID
Pour effectuer une sauvegarde Cloud Storage, définissez la propriété sur
GCP
. Exemple :cloudProvider: "GCP"
.Pour effectuer une sauvegarde sur un serveur distant, définissez la propriété sur
HYBRID
. Exemple :cloudProvider: "HYBRID"
.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 apply --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