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
- Sélectionnez un serveur de sauvegarde : choisissez un serveur Linux ou Unix avec un espace de stockage adéquat pour vos sauvegardes et assurez-vous qu'il est accessible via SSH à partir de votre environnement d'exécution Apigee hybrid.
- Configurez le serveur SSH : installez un serveur SSH ou vérifiez qu'un serveur existant est sécurisé.
- Créer une paire de clés SSH : générez une paire de clés SSH sans phrase secrète. Par 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é.La commande génère deux fichiers de clé SSH : un fichier de clé privée (par exemple, "ssh_key.rsa") et un fichier de clé publique (par exemple, "ssh_key.pub").
Enregistrez la clé privée dans un emplacement accessible à votre environnement d'exécution.
- Ajoutez un compte utilisateur : sur le serveur de sauvegarde, créez un utilisateur nommé apigee avec un répertoire d'accueil sous
/home/apigee
. Assurez-vous que le nouvel utilisateurapigee
possède un répertoire d'accueil sous/home
. - Configurer le répertoire .ssh : sur le serveur de sauvegarde, créez un répertoire
.ssh
dans/home/apigee/.ssh
. Exemple :cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- Installez la clé publique : placez la clé publique dans le fichier
authorized_keys
du répertoire/home/apigee/
. Le répertoire de sauvegarde peut être n'importe quel répertoire tant que l'utilisateurapigee
y a accès. Collez le contenu du fichierssh public key
dans le fichier. - Vérifier l'accès SSH : testez la connexion à partir de votre ordinateur local ou d'un nœud de cluster :
ssh -i PATH_TO_PRIVATE_KEY_FILE apigee@BACKUP_SERVER_IP
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: "private.key" # path relative to apigee-datastore path server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *"
Où :
Propriété 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. Ce chemin d'accès doit être relatif au répertoire de graphiqueapigee-datastore
.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. Les heures sont indiquées dans le fuseau horaire local du cluster Kubernetes. Par défaut :
0 2 * * *
- Appliquez la configuration de la sauvegarde au champ d'application de stockage de votre cluster :
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
Où 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
Dépannage
- Testez la connexion à partir d'un pod Cassandra. 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 la clé SSH privée installée pour le pod Cassandra et l'adresse IP du serveur :
ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
- Connectez-vous à l'interface système de votre pod Cassandra. Exemple :
- Si vous rencontrez des difficultés pour accéder à votre serveur distant à partir du pod Cassandra, vérifiez à nouveau votre configuration SSH sur le serveur distant et assurez-vous que la mise à niveau du datastore a réussi.
- Vous pouvez vérifier si Cassandra utilise la clé privée appropriée en exécutant la commande suivante lorsque vous êtes connecté à votre pod Cassandra et en comparer le résultat avec la clé privée que vous avez créée :
cat /var/secrets/keys/key