Backup e ripristino Cassandra CSI

Puoi eseguire il backup e il ripristino dei dati ibridi utilizzando gli snapshot CSI (Container Storage Interface). Il backup CSI genera snapshot del disco e li archivia come dati criptati nello spazio di archiviazione sul cloud. Il backup CSI non richiede un bucket Google Cloud Storage o un server remoto per archiviare i dati di backup.

Il backup CSI è consigliato per le istanze ibride ospitate in Google Cloud, AWS o Azure.

In questa pagina vengono descritti i passaggi per utilizzare il backup e ripristino ibrido CSI. Per una panoramica del backup e ripristino ibridi in generale, consulta la panoramica del backup e ripristino di Cassandra.

Limitazioni di backup e ripristino

Tieni presente queste limitazioni quando utilizzi il backup e ripristino CSI:

  • Il driver CSI utilizzato dalla classe di archiviazione configurata deve supportare gli snapshot CSI. Consulta questo elenco di driver CSI per Kubernetes per informazioni sui driver.
  • Non tutte le piattaforme sono supportate. Sono supportate solo le piattaforme Google Cloud, AWS e Azure.
  • OpenShift Container Platform non è supportato a causa delle limitazioni degli snapshot del volume.
  • Sono supportate solo le piattaforme cloud. Le piattaforme on-prem non sono supportate.
  • I dati di backup CSI e i dati di backup ibridi non CSI non sono compatibili. I backup non CSI non possono essere utilizzati con il ripristino CSI, mentre i backup CSI non possono essere utilizzati con il ripristino non CSI.
  • L'installazione e la funzionalità del driver CSI sono a carico del fornitore del driver CSI.
  • Gli utenti sono responsabili di garantire che siano disponibili risorse cluster adeguate per il provisioning degli snapshot CSI.
  • Gli utenti sono responsabili della rimozione dei dati degli snapshot precedenti.

Configura i backup CSI

Per pianificare i backup ibridi utilizzando CSI, segui questi passaggi:

  1. Se non hai ancora configurato il backup ibrido:
    1. Esegui questo comando create-service-account per creare un account di servizio Google Cloud (SA) con il ruolo standard roles/storage.objectAdmin. Questo ruolo SA consente di scrivere dati di backup in Cloud Storage. Esegui questo comando nella directory appropriata per lo strumento di gestione:
      • Grafici Helm: $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/
      • apigeectl: HYBRID_BASE_DIRECTORY/hybrid-files/
      ./tools/create-service-account --env non-prod --dir ./service-accounts

      Questo comando crea un singolo account di servizio denominato apigee-non-prod da utilizzare in ambienti non di produzione e inserisce il file della chiave scaricato nella directory ./service-accounts.

      Per saperne di più sugli account di servizio Google Cloud, consulta Creazione e gestione degli account di servizio.

    2. Il comando create-service-account salva un file JSON contenente la chiave privata dell'account di servizio. Il file viene salvato nella stessa directory in cui viene eseguito il comando. Dovrai completare il percorso di questo file nei seguenti passaggi.
  2. Apri il file overrides.yaml. Imposta i seguenti parametri, come mostrato in Esempi di file di override.

    1. Imposta i parametri generali mostrati di seguito nel blocco backup. Se hai già impostato questi parametri per la soluzione di backup ibrida non CSI, puoi utilizzare gli stessi parametri per gli snapshot CSI. Consulta la tabella di riferimento delle proprietà di backup per ulteriori informazioni su ciascun valore.

      Per backup:

      • abilitato: impostalo su true per abilitare i backup pianificati.
      • pullPolicy nell'immagine: imposta su Always.
      • serviceAccountPath: il percorso dell'account di servizio.
      • schedule: fornisci una pianificazione delle espressioni cron.
    2. Imposta questi parametri per il backup specifico di CSI:
      • Valori del gruppo di archiviazione Cassandra: la classe di archiviazione Cassandra configurata deve supportare gli snapshot CSI affinché il backup e ripristino CSI funzioni. Per verificare se una classe di archiviazione supporta gli snapshot CSI, esegui questo comando per recuperare le classi di archiviazione disponibili:
        kubectl get sc
        Controlla l'output "Provisioner" per ogni classe di archiviazione. I provisioner che utilizzano CSI in genere hanno una parte ".csi." nel nome, ad esempio "pd.csi.storage.gke.io". Cerca il nome del provisioner in questo elenco di driver CSI per Kubernetes. Se la colonna "Altre funzionalità" del provisioner contiene la parola "SNAPSHOT", la classe di archiviazione che utilizza il provisioner supporta gli snapshot CSI.

        Aggiungi questi parametri al gruppo di archiviazione. Entrambi i valori sono obbligatori.

        • storageclass: il nome di una classe di archiviazione abilitata per gli snapshot CSI.
        • capacity: la capacità del disco.
      • Tipo di cloud provider:

        Una volta verificata la funzionalità degli snapshot CSI, modifica il file degli override per utilizzare il backup e il ripristino CSI:

        • cloudProvider: imposta cloudProvider in backup e restore su CSI.

Esempio di configurazione del backup

Questa sezione mostra le parti relative al backup di un file overrides.yaml di esempio.
cassandra:
  hostNetwork: false
  replicaCount: 3
  storage:
    storageclass: standard-rwo
    capacity: 100Gi
  image:
    pullPolicy: Always

  backup:
    enabled: true
    image:
      pullPolicy: Always
    serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json"
    cloudProvider: "CSI"
    schedule: "0 * * 11 *"

Avviare un backup manuale

I backup CSI vengono generati automaticamente in base alla pianificazione cron impostata nel file overrides.yaml.

Per avviare un backup CSI manuale, utilizza questo comando:

kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup backup-pod-name
dove backup-pod-name è il nome del pod di backup che verrà creato.

Verifica i backup

Un modo per verificare che un backup sia stato creato correttamente è controllare gli snapshot del volume nel cluster Kubernetes utilizzando questo comando:

kubectl get volumesnapshot -n apigee

L'output mostra l'elenco attuale di snapshot sul cluster. Il processo di backup di CSI crea uno snapshot di ogni disco Cassandra. Il numero di snapshot generati deve corrispondere al numero totale di pod Cassandra nel cluster.

Ripristino di un backup

Utilizza questa procedura per ripristinare un backup CSI generato in precedenza. Per informazioni generali sul ripristino dei backup e per una panoramica del processo, consulta la pagina di riepilogo del ripristino.

Per avviare il ripristino di un backup CSI, segui le istruzioni per il ripristino di una singola regione ibrida non CSI, ma utilizza questi valori nel blocco restore in overrides.yaml. Consulta la tabella di riferimento delle proprietà di backup per ulteriori informazioni su ciascun valore e la configurazione del ripristino di esempio per un esempio.

  • enabled:imposta su true per abilitare il ripristino per il backup a cui viene fatto riferimento con il timestamp snapshotTimestamp.
  • snapshotTimestamp: fornisce il timestamp di un backup CSI precedente.
  • serviceAccountPath: il percorso dell'account di servizio.
  • pullPolicy nell'immagine: imposta su Always.

Per trovare il valore snapshotTimestamp da ripristinare, esegui questo comando per recuperare l'elenco degli snapshot disponibili:

kubectl get volumesnapshot -n apigee
Nell'elenco restituito, i nomi degli snapshot contengono il timestamp:
pvc-us-west2-b-20220803004907-47beff0e306d8861
In questo esempio il timestamp è 20220803004907.

Esempio di configurazione di ripristino

Questa sezione mostra le parti relative al ripristino di un file overrides.yaml di esempio.
cassandra:
  hostNetwork: false
  replicaCount: 3
  storage:
    storageclass: standard-rwo
    capacity: 100Gi
  image:
    pullPolicy: Always

  restore:
    enabled: true
    snapshotTimestamp: "20220908222130"
    serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json"
    cloudProvider: "CSI"
    image:
      pullPolicy: Always

Esegui la migrazione a Backup e ripristino di CSI

Se non hai già utilizzato il backup e il ripristino ibridi, puoi seguire le istruzioni in Configurare i backup CSI per creare un nuovo backup CSI senza i passaggi di questa sezione. Questi passaggi ti guidano nella migrazione dalla soluzione di backup e ripristino non CSI ai backup CSI.

  1. Genera un nuovo backup utilizzando il metodo di backup non CSI attualmente configurato.
  2. Modifica la configurazione del backup nel file overrides.yaml ibrido per utilizzare gli override del backup CSI come mostrato nell'esempio di configurazione del backup.
  3. Applica le modifiche nel file overrides.yaml:

    Helm

    helm upgrade datastore apigee-datastore/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    apigeectl

    $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml
  4. Verifica il job di backup:
    kubectl get cronjob -n apigee
  5. Al termine del job di backup, verifica che siano stati creati gli snapshot. Il numero di snapshot generati deve essere equivalente al numero di nodi Cassandra nell'istanza ibrida.
    kubectl get volumesnapshot -n apigee