Questa sezione illustra come configurare backup e ripristino del tuo database Cassandra
utilizzando ssh
e il tuo file system anziché utilizzare Google Cloud. Vedi anche:
Che cos'è Backup e ripristino di Cassandra con spazio di archiviazione personalizzato?
Il backup con spazio di archiviazione personalizzato archivia i backup del tuo database Cassandra in file compressi nel file system di un server specificato. I backup vengono eseguiti in base a una pianificazione specificata nel file delle sostituzioni. La connessione al server è mediante SSH sicuro.
Configurazione dei backup senza servizi Cloud
I passaggi riportati di seguito includono esempi comuni per il completamento di attività specifiche, come la creazione di una coppia di chiavi SSH. Utilizza i metodi appropriati per l'installazione.
La procedura è composta dalle seguenti parti:
- Configura il server e SSH
- Impostare la pianificazione e la destinazione del backup
- Configurare il recupero
Configura il server e SSH
- Designa un server Linux o Unix per i tuoi backup. Questo server deve essere raggiungibile tramite SSH dal piano di runtime ibrido Apigee. Deve avere spazio di archiviazione sufficiente per i tuoi backup.
- Imposta un server SSH sul server oppure assicurati che sia configurato un server SSH sicuro.
- Crea una coppia di chiavi SSH e archivia il file della chiave privata in un percorso accessibile dal tuo piano di runtime ibrido. Devi utilizzare una password vuota per la coppia di chiavi, altrimenti il backup non va a buon fine. Ad esempio:
ssh-keygen -t rsa -b 4096 -C [email protected]
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 [email protected] The key's randomart image is: +---[RSA 4096]----+ | +. ++X| | . . o.=.*+| | . o . . o==o | | . . . =oo+o...| | . S +E oo .| | . . .. . o .| | . . . . o.. | | . ...o ++. | | .. .. +o+. | +----[SHA256]-----+ - Crea un account utente sul server di backup con il nome
apigee
. Assicurati che il nuovo utenteapigee
abbia una home directory in/home
. - Sul server di backup, crea una directory
ssh
nella nuova directory/home/apigee
. - Copia la chiave pubblica (
ssh_key.pub
nell'esempio precedente) in un file denominatoauthorized_keys
nella nuova directory/home/apigee/ssh
. Ad esempio:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- 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'utenteapigee
vi abbia accesso. Ad esempio:cd /home/apigee
mkdir cassandra-backup
- Verifica la connessione. Devi assicurarti che i pod di Cassandra possano connettersi al server di backup tramite SSH:
- 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. Sostituisci con il nome del pod da cui vuoi connetterti.
- Connettiti al server di backup mediante SSH, utilizzando l'indirizzo IP del server:
ssh apigee@BACKUP_SERVER_IP
- Accedi alla shell del tuo pod Cassandra. Ad esempio:
Imposta la pianificazione e la destinazione per il backup
Imposta la pianificazione e la destinazione dei backup nel file overrides.yaml
.
- 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 del 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 tuo server di backup. Deve essere una directory all'interno di
home/apigee
(la directory di backup è denominatacassandra_backup
nel passaggio in cui è stata creata la directory di backup).backup:cloudProvider
HYBRID
La proprietà
cloudProvider: "HYBRID"
è obbligatoria.backup:schedule
SCHEDULE
L'ora di inizio del backup, specificata nella sintassi crontab standard. Valore predefinito:
0 2 * * *
- Utilizza
apigeectl
per applicare la configurazione di backup all'ambito di archiviazione del cluster:$APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE
Dove YOUR_OVERRIDES_FILE è il percorso del file delle sostituzioni appena modificato.
Configura ripristino
Il ripristino recupera i dati dalla località di backup e li ripristina in un nuovo cluster Cassandra con lo stesso numero di nodi. Nessun dato viene estratto dal vecchio cluster Cassandra.
Le istruzioni di ripristino riportate di seguito si riferiscono ai deployment per singole aree geografiche che non utilizzano Google Cloud Storage per i backup. Per gli altri deployment, vedi:
- Per i deployment a singola area geografica che utilizzano Google Cloud Storage per i backup, vedi Backup e ripristino di Cassandra.
- Per i deployment a più aree geografiche, consulta Deployment su più aree geografiche su GKE e GKE On-Prem.
Per ripristinare i backup di Cassandra:
- Crea un nuovo spazio dei nomi all'interno del cluster Kubernetes esistente che verrà utilizzato per ripristinare il deployment ibrido di caccia. 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.
-
Crea un nuovo file
overrides-restore.yaml
nella directory di installazione ibrida di root. -
Copia la configurazione Cassandra completa dal file
overrides.yaml
originale nel nuovo fileoverrides-restore.yaml
. Ad esempio:cp ./overrides.yaml ./overrides-restore.yaml
- 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: "BACKUP_TO_RESTORE" ...
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"
- Modifica l'etichetta
app
in tutti i nodi Cassandra nel vecchio spazio dei nomi eseguendo il comando seguente:kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
- Crea un nuovo deployment di runtime ibrido. Verrà creato un nuovo cluster Cassandra e inizierà
il ripristino dei dati di backup nel cluster:
./apigeectl init -f ../overrides-restore.yaml
./apigeectl apply -f ../overrides-restore.yaml
-
Una volta completato il ripristino, il traffico deve essere trasferito per utilizzare il cluster Cassandra nel nuovo spazio dei nomi. Esegui i seguenti comandi per cambiare 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}}'
- Una volta completato il passaggio al traffico, puoi riconfigurare i backup sul cluster ripristinato rimuovendo la configurazione
restore
e aggiungendo la configurazionebackup
al fileoverrides-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
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 del file system locale verso il file della chiave privata SSH (denominato |
restore:server |
BACKUP_SERVER_IP L'indirizzo IP del server di backup. |
restore:storageDirectory |
BACKUP_DIRECTORY Il nome della directory di backup sul tuo server di backup.
Deve essere una directory all'interno di |
restore:cloudProvider |
La proprietà |
restore:snapshotTimestamp |
BACKUP_TO_RESTORE Il backup specifico che vuoi ripristinare, specificato nella sintassi crontab standard (non sono consentiti caratteri jolly). |