Questa pagina descrive come pianificare i backup per Cassandra senza Cloud Storage. In questo metodo, i backup vengono archiviati su un server remoto specificato da te anziché in un bucket Cloud Storage. Apigee utilizza SSH per comunicare con il server remoto.
Devi pianificare i backup come job cron. Una volta applicata una pianificazione di backup al cluster ibrido, un job di backup Kubernetes viene eseguito periodicamente in base alla pianificazione nel piano di runtime. Il job attiva uno script di backup su ogni nodo Cassandra nel cluster ibrido che raccoglie tutti i dati sul nodo, crea un file di archivio (compresso) dei dati e invia l'archivio al server specificato nel file overrides.yaml.
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:
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]-----+Dove: exampleuser@example.com è una stringa. Qualsiasi stringa che segue
-Cnel comandossh-keygendiventa un commento incluso nella chiavesshappena creata. La stringa di input può essere qualsiasi stringa. Quando utilizzi un nome account nel formato exampleuser@example.com, puoi identificare rapidamente a quale account è associata la chiave. - 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_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash
Dove APIGEE_CASSANDRA_POD è 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 la chiave SSH privata montata sul pod Cassandra e l'indirizzo IP del server:
ssh -i /var/secrets/keys/key 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 di Helm
cassandra: backup: enabled: true keyFile: "private.key"# path relative to apigee-datastore path server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *"
Esempio
apigeectlcassandra: backup: enabled: true keyFile: "home/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:cloudProviderHYBRIDPer un backup del server remoto, imposta la proprietà su
HYBRID.backup:scheduleSCHEDULE
L'ora di inizio del backup, specificata nella sintassi standard di crontab. Gli orari sono espressi nel fuso orario locale del cluster Kubernetes. Valore predefinito:
0 2 * * * - Applica la configurazione di backup all'ambito di archiviazione del tuo
cluster:
Helm
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
apigeectl$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore
Dove OVERRIDES_FILE è il percorso del file di override che hai appena modificato.
- Verifica il job di backup. Ad esempio:
kubectl get cronjob -n apigee
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s
Avviare un backup manuale
I job di backup vengono attivati automaticamente in base alla pianificazione cron impostata in
cassandra.backup.schedule nel file
overrides.yaml. Tuttavia, se necessario, puoi avviare manualmente un job di backup
utilizzando il seguente comando:
kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup MANUAL_BACKUP_JOB_NAME
Dove MANUAL_BACKUP_JOB_NAME è il nome di un job di backup manuale da creare.
Risoluzione dei problemi
-
Testa la connessione da un pod Cassandra. Devi assicurarti che i pod Cassandra possano
connettersi al server di backup utilizzando SSH:
-
Accedi alla shell del pod Cassandra. Ad esempio:
kubectl exec -it -n APIGEE_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash
Dove APIGEE_CASSANDRA_POD è 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 la chiave SSH privata montata sul pod Cassandra
e l'indirizzo IP del server:
ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
-
Accedi alla shell del pod Cassandra. Ad esempio:
- Se hai problemi ad accedere al server remoto dal pod Cassandra, controlla di nuovo la configurazione ssh sul server remoto e assicurati anche che l'upgrade del datastore sia andato a buon fine.
-
Puoi verificare se Cassandra utilizza la chiave privata corretta eseguendo il seguente comando dopo aver eseguito l'accesso al pod Cassandra e confrontando l'output con la chiave privata che hai creato:
cat /var/secrets/keys/key