Planifier des sauvegardes sur un serveur distant

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

  1. 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.
  2. Configurez le serveur SSH : installez un serveur SSH ou vérifiez qu'un serveur existant est sécurisé.
  3. 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]-----+

    exampleuser@example.com est une chaîne. Toute chaîne qui suit -C dans la commande ssh-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.

  4. 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 utilisateur apigee possède un répertoire d'accueil sous /home.
  5. 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
  6. 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'utilisateur apigee y a accès. Collez le contenu du fichier ssh public key dans le fichier.
  7. Vérifier l'accès SSH : testez la connexion à partir de votre ordinateur local ou d'un nœud de cluster :
  8. 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.

  1. 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 graphique apigee-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 * * *

  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
    

    OVERRIDES_FILE est le chemin d'accès au fichier que vous venez de modifier.

  3. 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

  1. 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 :
    1. Connectez-vous à l'interface système de votre pod Cassandra. Exemple :
      kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash

      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.

    2. 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
  2. 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.
  3. 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