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 del 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 del 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 riportati di seguito 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 è composta dalle seguenti parti:
Configura il server e SSH
- Seleziona un server di backup:scegli un server Linux o Unix con spazio di archiviazione adeguato per i backup e assicurati che sia possibile accedervi tramite SSH dal piano di runtime ibrido Apigee.
- Configura il server SSH:installa un server SSH o verifica che uno esistente sia sicuro.
- Crea una coppia di chiavi SSH:genera una coppia di chiavi SSH senza una passphrase: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]-----+Dove: exampleuser@example.com è una stringa. Qualsiasi stringa che segue
-C
nel comandossh-keygen
diventa un commento incluso nella chiavessh
appena creata. La stringa di input può essere qualsiasi stringa. Quando utilizzi un nome account sotto forma di exampleuser@example.com, puoi identificare rapidamente quale account corrisponde alla chiave.Il comando genererà due file di chiavi SSH, un file della chiave privata (ad esempio "ssh_key.rsa") e un file della chiave pubblica (ad esempio "ssh_key.pub").
Salva la chiave privata in una posizione a cui può accedere il tuo piano di runtime.
- Aggiungi un account utente:sul server di backup, crea un utente denominato apigee con una home directory in
/home/apigee
. Assicurati che il nuovo utenteapigee
abbia una home directory in/home
. - Configura la directory .ssh:sul server di backup, crea una directory
.ssh
in/home/apigee/.ssh
. Ad esempio:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- Installa la chiave pubblica:inserisci la chiave pubblica nel file
authorized_keys
all'interno della directory/home/apigee/
. La directory di backup può essere qualsiasi directory, purché l'utenteapigee
abbia accesso.Incolla i contenuti del filessh public key
nel file. - Verifica l'accesso SSH:testa la connessione dalla tua macchina locale o da un nodo del cluster:
ssh -i PATH_TO_PRIVATE_KEY_FILE apigee@BACKUP_SERVER_IP
Imposta 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: "private.key" # path relative to apigee-datastore path 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 nel file system locale del file della chiave privata SSH (chiamato
ssh_key
nel passaggio in cui hai creato la coppia di chiavi SSH). Questo percorso deve essere relativo alla directory dei graficiapigee-datastore
.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 è denominatacassandra_backup
nel passaggio in cui hai creato la directory di backup).backup:cloudProvider
GCP/HYBRID
Per un backup di Cloud Storage, imposta la proprietà su
GCP
. Ad esempio,cloudProvider: "GCP"
.Per un backup del server remoto, imposta la proprietà su
HYBRID
. Ad esempio,cloudProvider: "HYBRID"
.backup:schedule
SCHEDULE
L'ora di inizio del backup, specificata in sintassi crontab standard. Gli orari sono nel fuso orario locale del cluster Kubernetes. Valore predefinito:
0 2 * * *
- Applica la configurazione di backup all'ambito di archiviazione del tuo
cluster:
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
dove OVERRIDES_FILE è il percorso del file delle sostituzioni 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
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 APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash
Dove APIGEE_CASSANDRA_DEFAULT_0 è il nome di un pod Cassandra. Modificalo 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 di accesso 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 il risultato con la chiave privata che hai creato:
cat /var/secrets/keys/key