Questa sezione descrive come configurare il backup e il ripristino del database Cassandra
utilizzando ssh e il file system anziché Google Cloud. Vedi anche:
Che cos'è il backup e il ripristino di Cassandra con spazio di archiviazione personalizzato?
Il backup con archiviazione personalizzata memorizza i backup del database Cassandra in file compressi nel file system di un server specificato. I backup vengono eseguiti in base a una pianificazione specificata nel file di override. La connessione al server avviene tramite SSH sicuro.
Configurazione dei backup senza Cloud Services
I passaggi seguenti includono esempi comuni per completare attività specifiche, come la creazione di una coppia di chiavi SSH. Utilizza i metodi appropriati per la tua installazione.
La procedura è suddivisa nelle seguenti parti:
- Configura il server e SSH
- Impostare la pianificazione e la destinazione del backup
- Configurazione per il recupero
Configurare il server e SSH
- Designa un server Linux o Unix per i backup. Questo server deve essere raggiungibile tramite SSH dal piano di runtime Apigee Hybrid. Deve avere spazio di archiviazione sufficiente per i backup.
- Configura un server SSH sul server o assicurati che ne sia configurato uno sicuro.
- 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.comEnter 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]-----+ - Crea un account utente sul server di backup con il nome
apigee. Assicurati che il nuovo utenteapigeeabbia una home directory in/home. - Sul server di backup, crea una directory
sshnella nuova directory/home/apigee. - Copia la chiave pubblica (
ssh_key.pubnell'esempio precedente) in un file denominatoauthorized_keysnella nuova directory/home/apigee/ssh. Ad esempio:cd /home/apigee
mkdir .sshcd .sshvi 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'utenteapigeeabbia accesso alla directory. Ad esempio:cd /home/apigee
mkdir cassandra-backup - Testa la connessione. Devi assicurarti che i pod Cassandra possano connettersi al server di backup tramite SSH:
- Accedi alla shell del 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. Modifica questo valore con il nome del pod da cui vuoi connetterti.
- Connettiti tramite SSH al server di backup utilizzando l'indirizzo IP del server:
ssh apigee@BACKUP_SERVER_IP
- Accedi alla shell del pod Cassandra. Ad esempio:
Impostare la pianificazione e la destinazione del backup
Imposti 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:enabledIl backup è disattivato per impostazione predefinita. Devi impostare questa proprietà su true.backup:keyFilePATH_TO_PRIVATE_KEY_FILE
Il percorso nel file system locale del file della chiave privata SSH (denominato
ssh_keynel passaggio in cui hai creato la coppia di chiavi SSH).backup:serverBACKUP_SERVER_IP
L'indirizzo IP del server di backup.
backup:storageDirectoryBACKUP_DIRECTORY
Il nome della directory di backup sul server di backup. Deve essere una directory all'interno di
home/apigee(la directory di backup è denominatacassandra_backupnel passaggio in cui hai creato la directory di backup).backup:cloudProviderHYBRIDLa proprietà
cloudProvider: "HYBRID"è obbligatoria.backup:scheduleSCHEDULE
L'ora di inizio del backup, specificata nella sintassi standard di crontab. Valore predefinito:
0 2 * * * - Utilizza
apigeectlper 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 di override che hai appena modificato.
Configura ripristino
Il ripristino prende i dati dalla posizione di backup e li ripristina in un nuovo cluster Cassandra con lo stesso numero di nodi. Non vengono prelevati dati dal vecchio cluster Cassandra.
Le istruzioni di ripristino riportate di seguito sono per le implementazioni in una singola regione che non utilizzano Google Cloud Storage per i backup. Per altri deployment, consulta quanto segue:
- Per le implementazioni in una singola regione che utilizzano Google Cloud Storage per i backup, consulta Backup e ripristino di Cassandra.
- Per i deployment in più regioni, consulta Deployment in più regioni 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 runtime. Non utilizzare il nome dello spazio dei nomi originale per il nuovo spazio dei nomi. Non utilizzare il vecchio spazio dei nomi per il ripristino.
-
Nella directory di installazione ibrida principale, crea un nuovo file
overrides-restore.yaml. -
Copia la configurazione completa di Cassandra dal file
overrides.yamloriginale nel nuovo fileoverrides-restore.yaml. Ad esempio:cp ./overrides.yaml ./overrides-restore.yaml
- Aggiungi un elemento 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
appsu tutti i nodi Cassandra nel vecchio spazio dei nomi eseguendo il seguente comando:kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
- Crea un nuovo deployment del 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 spostato per utilizzare il cluster Cassandra nel nuovo spazio dei nomi. Esegui questi comandi per spostare 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 trasferimento del traffico, puoi riconfigurare i backup sul cluster ripristinato rimuovendo la configurazione
restoree aggiungendo la configurazionebackupal 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
backupcon 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 che hai 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 nel file system locale del 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 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). |