Sauvegarde et récupération sans Google Cloud

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

  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

    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 * * *

  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

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 restaurer des sauvegardes Cassandra :

  1. 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.
  2. Dans le répertoire racine d'installation hybride, créez un fichier overrides-restore.yaml.
  3. Copiez la configuration Cassandra complète à partir de votre fichier overrides.yaml d'origine dans le nouveau fichier overrides-restore.yaml. Exemple :
    cp ./overrides.yaml ./overrides-restore.yaml
    
  4. 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"
    
  5. 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é ssh_key à l'étape où vous avez créé la paire de clés SSH) dans votre système de fichiers local.

    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 home/apigee (le répertoire de sauvegarde nommé cassandra_backup à l'étape de création du répertoire de sauvegarde).

    restore:cloudProvider

    HYBRID

    La propriété cloudProvider: "HYBRID" est obligatoire.

    restore:snapshotTimestamp

    TIMESTAMP

    Horodatage de l'instantané de sauvegarde à restaurer. Pour vérifier quels horodatages peuvent être utilisés, accédez à dbStorageBucket et examinez les fichiers présents dans le bucket. Chaque nom de fichier contient une valeur d'horodatage telle que la suivante :

    backup_20210203213003_apigee-cassandra-default-0.tgz

    20210203213003 correspond à la valeur snapshotTimestamp que vous utiliseriez si vous souhaitiez restaurer les sauvegardes créées à ce moment-là.

  6. 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
    
  7. 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
    
  8. 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}}'
    
  9. Une fois le trafic basculé, vous pouvez reconfigurer les sauvegardes sur le cluster restauré en supprimant la configuration restore et en ajoutant la configuration backup au fichier overrides-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