Questo documento spiega come gestire un deployment di Spanner Omni. La manutenzione di un deployment di Spanner Omni include controlli di integrità di routine, ritiro degli elementi non integri e sostituzione dei nodi server o dei dischi difettosi per garantire la stabilità e la coerenza del cluster. La gestione dello stato del database protegge i tuoi database da interruzioni non pianificate e mantiene la ridondanza del gruppo di consenso Paxos sottostante.
L'esecuzione della manutenzione ti aiuta a:
Garantire l'alta affidabilità: esegui il provisioning di nuovo delle macchine virtuali (VM) o dei pod non integri per mantenere la ridondanza del server di database. In questo modo, le tue applicazioni continueranno a funzionare in caso di guasto hardware.
Proteggi la sicurezza e l'integrità dei dati: dismetti i nodi con dischi difettosi per impedire che gli errori di archiviazione si diffondano ad altre parti del database. In questo modo, i server disconnessi non registrano aggiornamenti in conflitto.
Prima di iniziare
Prima di eseguire la manutenzione del deployment Kubernetes, devi fare quanto segue:
Crea un deployment Spanner Omni. Per saperne di più, consulta Crea un deployment su Kubernetes o Crea un deployment su VM.
Scarica e installa Spanner Omni CLI.
Per i deployment su Kubernetes, installa Helm e crea una configurazione del grafico Helm.
Sostituire un server
Potrebbe essere necessario sostituire un server nel deployment per risolvere problemi di sistema o di archiviazione.
Sostituire un server radice
Per sostituire un server radice, seleziona la scheda relativa al tuo ambiente:
Kubernetes
Per sostituire un server radice in un deployment Kubernetes, segui questi passaggi. Sebbene l'aggiunta di più server radice a un deployment Kubernetes esistente non sia supportata, puoi sostituire i server radice esistenti per risolvere eventuali errori irrecuperabili che si verificano.
Elimina il server che vuoi sostituire:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONESostituisci quanto segue:
SERVER_ENDPOINT: l'endpoint del pod del server da eliminare, nel formatoSERVER.pod.NAMESPACE:PORT, ad esempiospanner-a-1.pod.spanner-ns:15000. Per trovare gli endpoint del server nel deployment, elenca i server di deployment eseguendospanner deployment servers list --zone=ZONE.ZONE: la zona contenente il server, ad esempious-central1-a.
Questo passaggio potrebbe richiedere alcuni minuti, a seconda del volume di dati sul server. Spanner Omni sposta i dati da questo server ad altri server nel deployment. Assicurati che l'eliminazione del server sia completata prima di procedere al passaggio successivo.
Per monitorare l'avanzamento dell'eliminazione, controlla lo stato del server:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEAttendi che il comando restituisca un errore
NOT_FOUNDo indichi che il server non è più registrato.Elimina la richiesta di volume permanente (PVC) per il pod che ospita il server:
kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACESostituisci quanto segue:
DATA_VOLUME_NAME: il nome del volume di dati, ad esempiodata-volume-spanner-a-1. Per trovare il nome del volume di dati, elenca i PVC nel tuo spazio dei nomi eseguendokubectl get pvc -n NAMESPACE.NAMESPACE: lo spazio dei nomi del deployment, ad esempiospanner-ns.
Elimina il pod:
kubectl delete pod POD_NAME -n NAMESPACESostituisci
POD_NAMEcon il nome del pod server da eliminare, ad esempiospanner-a-1.Kubernetes avvia automaticamente un nuovo server in un pod di sostituzione e collega un nuovo PVC.
Aggiungi il nuovo server al deployment:
spanner deployment servers create SERVER_ENDPOINT --zone=ZONEVerifica che gli argomenti corrispondano al nuovo endpoint pod e alla nuova zona, ad esempio utilizzando
spanner-a-1.pod.spanner-ns:15000come endpoint eus-central1-acome zona.
VM
Per sostituire un server radice in un deployment VM, segui questi passaggi:
Elimina il server che vuoi sostituire:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONESostituisci quanto segue:
SERVER_ENDPOINT: l'indirizzo IP o il nome host e la porta del server, ad esempiospanner-vm-1.example.com:15000. Per trovare gli endpoint del server, elenca i server di deployment eseguendospanner deployment servers list --zone=ZONE.ZONE: la zona contenente il server, ad esempious-central1-a.
Questo passaggio potrebbe richiedere alcuni minuti, a seconda del volume di dati sul server. Spanner Omni sposta i dati da questo server ad altri server nel deployment. Assicurati che l'eliminazione del server sia completata prima di procedere al passaggio successivo.
Per monitorare l'avanzamento dell'eliminazione, controlla lo stato del server:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEAttendi che il comando restituisca un errore
NOT_FOUNDo indichi che il server non è più registrato.Esegui il provisioning del server con spazio di archiviazione pulito come spiegato in Crea un deployment per Spanner Omni sulle VM:
spanner start \ --root \ --server-address=HOSTNAME \ --zone=ZONE \ --base-dir=BASE_DIRSostituisci quanto segue:
HOSTNAME: l'FQDN o il nome host risolvibile della nuova VM, ad esempiospanner-vm-1.example.com.ZONE: la zona di destinazione, ad esempious-central1-a.BASE_DIR: il percorso in cui sono archiviati i dati, ad esempio./span-dir.
Aggiungi il nuovo server al deployment:
spanner deployment servers create SERVER_ENDPOINT --zone=ZONEVerifica che gli argomenti corrispondano ai parametri del nuovo server, ad esempio utilizzando
spanner-vm-1.example.com:15000come endpoint eus-central1-acome zona.
Sostituire un server non root
Per sostituire un server non root, seleziona la scheda relativa al tuo ambiente:
Kubernetes
Per sostituire un server non root in un deployment Kubernetes, segui questi passaggi:
Elimina il server che vuoi sostituire:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONESostituisci quanto segue:
SERVER_ENDPOINT: l'endpoint del pod del server da eliminare, nel formatoSERVER.pod.NAMESPACE:PORT, ad esempiospanner-a-4.pod.spanner-ns:15000. Per trovare gli endpoint del server nel deployment, elenca i server di deployment eseguendospanner deployment servers list --zone=ZONE.ZONE: la zona contenente il server, ad esempious-central1-a.
Questo passaggio potrebbe richiedere alcuni minuti, a seconda del volume di dati sul server. Spanner Omni sposta i dati da questo server ad altri server nel deployment. Assicurati che l'eliminazione del server sia completata prima di procedere al passaggio successivo.
Per monitorare l'avanzamento dell'eliminazione, controlla lo stato del server:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEAttendi che il comando restituisca un errore
NOT_FOUNDo indichi che il server non è più registrato.Elimina la richiesta di volume permanente (PVC) per il pod che ospita il server:
kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACESostituisci quanto segue:
DATA_VOLUME_NAME: il nome del volume di dati, ad esempiodata-volume-spanner-a-4. Per trovare il nome del volume di dati, elenca i PVC nel tuo spazio dei nomi eseguendokubectl get pvc -n NAMESPACE.NAMESPACE: lo spazio dei nomi del deployment, ad esempiospanner-ns.
Elimina il pod:
kubectl delete pod POD_NAME -n NAMESPACESostituisci
POD_NAMEcon il nome del pod server da eliminare, ad esempiospanner-a-4.Kubernetes avvia automaticamente un nuovo server in un pod di sostituzione e collega un nuovo PVC. Spanner Omni registra automaticamente il nuovo server non root nel deployment.
VM
Per sostituire un server non root in un deployment di VM, segui questi passaggi:
Elimina il server che vuoi sostituire:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONESostituisci quanto segue:
SERVER_ENDPOINT: l'indirizzo IP o il nome host e la porta del server, ad esempiospanner-vm-4.example.com:15000. Per trovare gli endpoint del server, elenca i server di deployment eseguendospanner deployment servers list --zone=ZONE.ZONE: la zona contenente il server, ad esempious-central1-a.
Questo passaggio potrebbe richiedere alcuni minuti, a seconda del volume di dati sul server. Spanner Omni sposta i dati da questo server ad altri server nel deployment. Assicurati che l'eliminazione del server sia completata prima di procedere al passaggio successivo.
Per monitorare l'avanzamento dell'eliminazione, controlla lo stato del server:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEAttendi che il comando restituisca un errore
NOT_FOUNDo indichi che il server non è più registrato.Esegui il riprovisioning del server non root con spazio di archiviazione pulito come spiegato in Aggiungere server non root. Il server viene aggiunto automaticamente al deployment.