Backup e ripristino senza Google Cloud

Questa sezione illustra come configurare il backup e il recupero del tuo database Cassandra utilizzando ssh e il tuo file system anziché utilizzare Google Cloud. Vedi anche:

Che cos'è il backup e il ripristino di Cassandra senza i servizi cloud

Il backup senza servizi cloud archivia i backup del tuo database Cassandra in file compressi nel file system di un server da te specificato. I backup vengono eseguiti in base a una pianificazione specificata nel file degli override. La connessione al server avviene tramite SSH.

Configurazione dei backup senza servizi cloud

I passaggi seguenti includono esempi comuni per il completamento di attività specifiche, come la creazione di una coppia di chiavi SSH. Utilizza i metodi appropriati alla tua installazione.

La procedura comprende le seguenti parti:

Configura il server e SSH

  1. Specifica un server Linux o Unix per i backup. Questo server deve essere raggiungibile tramite SSH dal piano di runtime ibrido Apigee. Deve avere spazio di archiviazione sufficiente per i backup.
  2. Configura un server SSH sul server o assicurati che sia configurato un server SSH sicuro.
  3. Crea una coppia di chiavi SSH e archivia il file della chiave privata in un percorso accessibile dal piano di runtime ibrido. Devi utilizzare una password vuota per la coppia di chiavi, altrimenti il backup non andrà a buon fine. Ad esempio:
    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. Crea un account utente sul server di backup con il nome apigee. Assicurati che il nuovo utente apigee abbia una home directory in /home.
  5. Sul server di backup, crea una directory ssh nella nuova directory /home/apigee.
  6. Copia la chiave pubblica (ssh_key.pub nell'esempio precedente) in un file denominato authorized_keys nella nuova directory /home/apigee/ssh. Ad esempio:
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. Sul server di backup, crea una directory di backup all'interno della directory /home/apigee/. La directory di backup può essere qualsiasi directory, purché l'utente apigee vi abbia accesso. Ad esempio:
    cd /home/apigee
    mkdir cassandra-backup
  8. Testa la connessione. Devi assicurarti che i pod Cassandra possano connettersi al server di backup tramite SSH:
    1. Accedi alla shell del tuo pod Cassandra. Ad esempio:
      kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash

      Dove APIGEE_CASSANDRA_DEFAULT_0 è il nome di un pod Cassandra. Modificalo inserendo il nome del pod da cui vuoi connetterti.

    2. Connettiti tramite SSH al server di backup utilizzando l'indirizzo IP del server:
      ssh apigee@BACKUP_SERVER_IP

Imposta la pianificazione e la destinazione per il backup

Sei tu a impostare la pianificazione e la destinazione dei backup nel file overrides.yaml.

  1. Aggiungi i seguenti parametri al file overrides.yaml:

    Parametri

    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"
    

    Esempio

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

    Dove:

    Proprietà Descrizione
    backup:enabled Il backup è disattivato per impostazione predefinita. Devi impostare questa proprietà su true.
    backup:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    Il percorso sul file system locale al file della chiave privata SSH (denominato ssh_key nel passaggio in cui hai creato la coppia di chiavi SSH).

    backup:server

    BACKUP_SERVER_IP

    L'indirizzo IP del server di backup.

    backup:storageDirectory

    BACKUP_DIRECTORY

    Il nome della directory di backup sul server di backup. Deve essere una directory all'interno di home/apigee (la directory di backup è denominata cassandra_backup nel passaggio in cui hai creato la directory di backup).

    backup:cloudProvider

    HYBRID

    La proprietà cloudProvider: "HYBRID" è obbligatoria.

    backup:schedule

    SCHEDULE

    L'ora in cui viene avviato il backup, specificata nella sintassi standard di crontab. Predefinita: 0 2 * * *

  2. Utilizza apigeectl per applicare la configurazione del backup all'ambito di archiviazione del tuo cluster:
    $APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE

    Dove YOUR_OVERRIDES_FILE è il percorso del file degli override che hai appena modificato.

Configura ripristino

Il ripristino prende i dati dalla località di backup e li ripristina in un nuovo cluster Cassandra con lo stesso numero di nodi. Nessun dato viene preso dal cluster Cassandra precedente.

Le istruzioni di ripristino riportate di seguito si riferiscono ai deployment in una singola regione che non utilizzano Google Cloud Storage per i backup. Per altri deployment, consulta quanto segue:

Per ripristinare i backup di Cassandra:

  1. Crea un nuovo spazio dei nomi all'interno del cluster Kubernetes esistente che verrà utilizzato per ripristinare il deployment huntime ibrido. Non utilizzare il nome originale dello spazio dei nomi per il nuovo spazio dei nomi. Non utilizzare il vecchio spazio dei nomi per il ripristino.
  2. Nella directory di installazione ibrida radice, crea un nuovo file overrides-restore.yaml.
  3. Copia la configurazione completa di Cassandra dal file overrides.yaml originale nel nuovo file overrides-restore.yaml. Ad esempio:
    cp ./overrides.yaml ./overrides-restore.yaml
    
  4. Aggiungi un elemento dello spazio dei nomi al nuovo file overrides-restore.yaml.

    Parametri

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

    Esempio

    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. Dove:

    Proprietà Descrizione
    namespace

    YOUR_RESTORE_NAMESPACE

    Il nome del nuovo spazio dei nomi creato nel passaggio 1 per il nuovo cluster Cassandra. Non utilizzare lo stesso spazio dei nomi utilizzato per il cluster originale.

    restore:enabled Il ripristino è disattivato per impostazione predefinita. Devi impostare questa proprietà su true.
    restore:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    Il percorso sul file system locale del file della chiave privata SSH (denominato ssh_key nel passaggio in cui hai creato la coppia di chiavi SSH).

    restore:server

    BACKUP_SERVER_IP

    L'indirizzo IP del server di backup.

    restore:storageDirectory

    BACKUP_DIRECTORY

    Il nome della directory di backup sul server di backup. Deve essere una directory all'interno di home/apigee (la directory di backup è denominata cassandra_backup nel passaggio in cui hai creato la directory di backup).

    restore:cloudProvider

    HYBRID

    La proprietà cloudProvider: "HYBRID" è obbligatoria.

    restore:snapshotTimestamp

    TIMESTAMP

    Timestamp dello snapshot di backup da ripristinare. Per verificare quali timestamp possono essere utilizzati, vai a dbStorageBucket e osserva i file presenti nel bucket. Ogni nome di file contiene un valore timestamp come il seguente:

    backup_20210203213003_apigee-cassandra-default-0.tgz

    Dove 20210203213003 è il valore snapshotTimestamp da utilizzare per ripristinare i backup creati in quel momento.

  6. Modifica l'etichetta app su qualsiasi nodo Cassandra nel vecchio spazio dei nomi eseguendo questo comando:
    kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
    
  7. Creare un nuovo deployment di runtime ibrido. Verrà creato un nuovo cluster Cassandra e verrà avviato il ripristino dei dati di backup nel cluster:
    ./apigeectl init  -f ../overrides-restore.yaml
    
    ./apigeectl apply  -f ../overrides-restore.yaml
    
  8. Una volta completato il ripristino, il traffico deve essere cambiato in modo da utilizzare il cluster Cassandra nel nuovo spazio dei nomi. Esegui questi comandi per modificare il traffico:

    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. Una volta completato il passaggio del traffico, puoi riconfigurare i backup sul cluster ripristinato rimuovendo la configurazione restore e aggiungendo la configurazione backup al file overrides-restore.yaml. Sostituisci YOUR_RESTORE_NAMESPACE con il nuovo nome dello spazio dei nomi creato nel passaggio 1.
    namespace: YOUR_RESTORE_NAMESPACE
    cassandra:
      ...
      backup:
        enabled: true
        serviceAccountPath: SA_JSON_FILE_PATH
        dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH
        schedule: BACKUP_SCHEDULE_CODE
      ...
    

    Quindi applica la configurazione backup con il seguente comando:

    ./apigeectl apply  -f ../overrides-restore.yaml