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. 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.
  2. Configurez un serveur SSH sur le serveur, ou vérifiez qu'un serveur SSH sécurisé est déjà configuré.
  3. 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]-----+
  4. Créez un compte utilisateur nommé apigee sur le serveur de sauvegarde. Assurez-vous que le nouvel utilisateur apigee possède un répertoire d'accueil sous /home.
  5. Sur le serveur de sauvegarde, créez un répertoire ssh dans le nouveau répertoire /home/apigee.
  6. 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
  7. 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'utilisateur apigee y a accès. Exemple :
    cd /home/apigee
    mkdir cassandra-backup
  8. Testez la connexion. 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 l'adresse IP du serveur :
      ssh 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: "/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 * * *

  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

    YOUR_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