Backup e ripristino di Cassandra CSI

Puoi eseguire il backup e il ripristino dei dati ibride utilizzando gli snapshot CSI (Container Storage Interface). Il backup CSI attiva gli snapshot dei dischi acquisiti dal sistema di archiviazione sottostante utilizzando il driver CSI fornito. 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.

Questa pagina descrive i passaggi per utilizzare il backup e il ripristino di CSI ibrida. Per una panoramica del backup e del ripristino ibridi in generale, consulta la panoramica del backup e del ripristino di Cassandra.

Limiti di backup e ripristino

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

  • Il driver CSI utilizzato dalla classe di archiviazione configurata deve supportare gli snapshot CSI. Consulta questo elenco di driver CSI 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 è supportata a causa di limitazioni degli snapshot dei volumi.
  • Sono supportate solo le piattaforme cloud. Le piattaforme on-premise non sono supportate.
  • I dati di backup CSI e i dati di backup ibrido non CSI sono incompatibili. I backup non CSI non possono essere utilizzati con il recupero CSI e i backup CSI non possono essere utilizzati con il recupero non CSI.
  • L'installazione e la funzionalità del driver CSI sono responsabilità del fornitore del driver CSI.
  • Gli utenti sono responsabili di garantire che siano disponibili risorse di cluster adeguate per il provisioning degli snapshot CSI.
  • È responsabilità degli utenti rimuovere i dati degli snapshot precedenti.

Configura i backup di CSI

Per pianificare i backup ibrida utilizzando CSI:

  1. Se non hai ancora configurato il backup ibrido:
    1. Esegui il seguente comando create-service-account per creare un account di servizio (SA) Google Cloud con il ruolo standard roles/storage.objectAdmin. Questo ruolo SA ti consente di scrivere i dati di backup in Cloud Storage. Esegui il seguente comando nella directory appropriata per il tuo 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 di non produzione e colloca il file della chiave scaricato nella directory ./service-accounts.

      Per ulteriori informazioni sugli account di servizio Google Cloud, consulta Creare e gestire gli 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. Ti servirà il percorso di questo file nei passaggi successivi.
  2. Apri il file overrides.yaml. Imposta i seguenti parametri, come mostrato in File di override di esempio.

    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. Per ulteriori informazioni su ciascun valore, consulta la tabella di riferimento delle proprietà di backup.

      Per backup:

    2. Imposta questi parametri per il backup specifico per CSI:
      • Valori del gruppo di archiviazione Cassandra: la classe di archiviazione Cassandra configurata deve supportare gli snapshot CSI per il funzionamento del backup e del ripristino CSI. Per verificare se una classe di archiviazione supporta gli snapshot CSI, esegui il seguente comando per ottenere le classi di archiviazione disponibili:
        kubectl get sc
        Esamina l'output di "Provisioner" per ogni classe di archiviazione. I provisioner che utilizzano CSI in genere hanno un nome con la parte ".csi.", ad esempio "pd.csi.storage.gke.io". Cerca il nome del provisioning in questo elenco di driver CSI Kubernetes. Se la colonna "Altre funzionalità" per il provisioning contiene la parola "SNAPSHOT", la classe di archiviazione che utilizza il provisioning supporta gli snapshot CSI.

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

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

        Una volta verificata la funzionalità di snapshot CSI, modifica il file delle sostituzioni per utilizzare il backup e il ripristino CSI:

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

Configurazione di backup di esempio

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
    cloudProvider: "CSI"
    schedule: "0 * * 11 *"

Avvia un backup manuale

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

Per avviare un backup manuale dei dati CSI, utilizza questo comando:

kubectl create job -n APIGEE_NAMESPACE --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 dei volumi sul cluster Kubernetes utilizzando questo comando:

kubectl get volumesnapshot -n APIGEE_NAMESPACE

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

Ripristina un backup

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

Per avviare un 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. Per ulteriori informazioni su ciascun valore, consulta la tabella di riferimento delle proprietà di backup e la configurazione di ripristino di esempio.

  • enabled: impostato su true per attivare il ripristino del backup a cui si fa riferimento con il timestamp snapshotTimestamp.
  • snapshotTimestamp: fornisci il timestamp di un backup CSI precedente.
  • pullPolicy in image: impostato su Always.

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

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

Configurazione di ripristino di esempio

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"
    cloudProvider: "CSI"
    image:
      pullPolicy: Always

Eseguire la migrazione al backup e al ripristino di CSI

Se non hai mai utilizzato il backup e il ripristino ibridi, puoi seguire le istruzioni riportate in Configurare i backup dei set di dati di inventario per creare un nuovo backup dei set di dati di inventario senza seguire i passaggi descritti in questa sezione. Questi passaggi descrivono la procedura di 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 le sostituzioni del backup CSI come mostrato nella configurazione di backup di esempio.
  3. Applica le modifiche nel file overrides.yaml:
    helm upgrade datastore apigee-datastore/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  4. Verifica il job di backup:
    kubectl get cronjob -n APIGEE_NAMESPACE
  5. Al termine di un 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_NAMESPACE