Ripristino in più regioni

Questa pagina descrive come recuperare o ripristinare Cassandra in più regioni.

In un deployment multiregionale, Apigee Hybrid viene eseguito il deployment in più località geografiche in diversi data center. Se una o più regioni hanno esito negativo, ma rimangono regioni integre, puoi utilizzare una regione integra per recuperare le regioni Cassandra non riuscite con i dati più recenti.

In caso di errore catastrofico di tutte le regioni ibride, Cassandra può essere ripristinato. È importante notare che, se nel deployment sono presenti più organizzazioni Apigee, il processo di ripristino ripristina i dati di tutte le organizzazioni. In una configurazione multi-organizzazione, il ripristino di una sola organizzazione specifica non è supportato.

Questo argomento descrive entrambi gli approcci per il recupero delle regioni non riuscite:

Recuperare le regioni non riuscite

Per recuperare le regioni non riuscite da una regione integra, segui questi passaggi:

  1. Reindirizza il traffico API dalle regioni interessate alla regione funzionante. Pianifica la capacità di conseguenza per supportare il traffico dirottato dalle regioni non riuscite.
  2. Ritira la regione interessata. Per ogni regione interessata, segui i passaggi descritti in Dismissione di una regione ibrida. Attendi il completamento del ritiro prima di procedere con il passaggio successivo.

  3. Ripristina la regione interessata. Per eseguire il ripristino, crea una nuova regione, come descritto in Deployment in più regioni su GKE, GKE On-Prem e AKS.

Ripristino da un backup

Il backup di Cassandra può risiedere su Cloud Storage o su un server remoto in base alla tua configurazione. Per ripristinare Cassandra da un backup, segui questi passaggi:

  1. Apri il file di override per la regione che vuoi ripristinare.
  2. Imposta cassandra:hostNetwork su false.
  3. Applica il file di override:
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    
  4. Prima di continuare, verifica che hostNetwork sia impostato su false:
    kubectl -n APIGEE_NAMESPACE get apigeeds -o=jsonpath='{.items[].spec.components.cassandra.hostNetwork}'
  5. Elimina l'ibrido dalla regione che stai ripristinando:
    helm delete DATASTORE_RELEASE_NAME \
      --namespace APIGEE_NAMESPACE
    

    Dove DATASTORE_RELEASE_NAME è il nome della release del datastore in cui hai installato Cassandra nella regione, ad esempio datastore-region1.

  6. Ripristina la regione desiderata da un backup. Per ulteriori informazioni, vedi Ripristinare una regione da un backup.

  7. Rimuovi i nodi non funzionanti dalle regioni eliminate:
    1. Utilizzando il comando nodetool status, identifica tutti i nodi con stato DN nelle regioni eliminate:
      kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE  -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status

      dove:

      • APIGEE_JMX_USER è il nome utente per l'utente delle operazioni JMX di Cassandra. Utilizzato per autenticare e comunicare con l'interfaccia JMX di Cassandra. Vedi cassandra:auth:jmx:username.
      • APIGEE_JMX_PASSWORD è la password per l'utente delle operazioni JMX di Cassandra. Vedi cassandra:auth:jmx:password.
    2. Rimuovi ogni nodo con lo stato DN nelle regioni eliminate:
      kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE  -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD removenode NODE_HOST_ID

      Sostituisci NODE_HOST_ID con l'ID host di ogni nodo identificato nel passaggio precedente. Ad esempio:

      kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u my-jmx-id -pw my-jmx-pwd removenode abcdef-f202-438a-8a77-40636317b7c9
    3. Esegui di nuovo il comando nodetool status e verifica che i nodi con stato DN nelle regioni eliminate non siano più presenti.

      kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE  -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
  8. Rimuovi i riferimenti alle regioni eliminate e aggiungi i riferimenti alle regioni ripristinate nei metadati KeySpaces.
    1. Recupera il nome del data center Cassandra utilizzando l'opzione nodetool status.
      kubectl exec -n APIGEE_NAMESPACE -it apigee-cassandra-default-0 -- bash
            nodetool  -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status |grep -i Datacenter

      dove:

      • APIGEE_JMX_USER è il nome utente per l'utente delle operazioni JMX di Cassandra. Utilizzato per autenticare e comunicare con l'interfaccia JMX di Cassandra. Vedi cassandra:auth:jmx:username.
      • APIGEE_JMX_PASSWORD è la password per l'utente delle operazioni JMX di Cassandra. Vedi cassandra:auth:jmx:password.
    2. Aggiorna la replica di KeySpaces.
      1. Crea un contenitore client e connettiti al cluster Cassandra tramite l'interfaccia CQL.
      2. Recupera l'elenco degli spazi chiave utente dall'interfaccia CQL:
        cqlsh CASSANDRA_SEED_HOST -u APIGEE_DDL_USER -p APIGEE_DDL_PASSWORD
              --ssl -e "select keyspace_name from system_schema.keyspaces;"|grep -v system

        dove:

        • CASSANDRA_SEED_HOST è l'host seed multiregionale di Cassandra. Per la maggior parte delle installazioni multiregionali, utilizza l'indirizzo IP di un host nella prima regione. Consulta Configurare Apigee hybrid per più regioni e cassandra:externalSeedHost.
        • APIGEE_DDL_USER e APIGEE_DDL_PASSWORD sono il nome utente e la password dell'amministratore per l'utente DDL (Data Definition Language) di Cassandra. I valori predefiniti sono "ddl_user" e "iloveapis123".

          Consulta cassandra.auth.ddl.password nella documentazione di riferimento per le proprietà di configurazione e Opzioni della riga di comando nella documentazione di cqlsh di Apache Cassandra.

      3. Per ogni spazio delle chiavi, esegui il seguente comando dall'interfaccia CQL per aggiornare le impostazioni di replica:
        ALTER KEYSPACE KEYSPACE_NAME WITH replication = {'class': 'NetworkTopologyStrategy', 'DATACENTER_NAME':3};

        dove:

        • KEYSPACE_NAME è il nome dello spazio delle chiavi elencato nell'output del passaggio precedente.
        • DATACENTER_NAME è il nome del data center Cassandra che hai ottenuto con l'opzione nodetool status nel passaggio 8.