Backup e ripristino dei cluster Elasticsearch con istantanee

Backup e ripristino dei cluster Elasticsearch con istantanee
Elasticsearch è incentrata sui dati e, come probabilmente già sai, i dati sono importanti per te ed ElaSticSearch. Tuttavia, in quanto tu sia tu ed elasticsearch, possono verificarsi guasti ai dati, portando alla perdita di dati.

Per aiutare a salvaguardare dalla perdita di dati, Elasticsearch ha varie funzionalità che consentono di garantire la disponibilità dei dati, anche nelle istanze di errore dei dati.

Alcuni dei modi in cui Elasticsearch utilizza per fornire la disponibilità dei dati includono:

  • Replicazioni cross-cluster, una funzione che consente di replicare i dati in un set di cluster di follower; Un cluster follower è un cluster di standby utilizzato in caso di errore dal cluster principale.
  • Un altro metodo che Elasticsearch utilizza per evitare i dati utilizzando backup, anche chiamati cluster. Se si presenta la necessità, è possibile utilizzare queste istantanee per ripristinare i dati su un cluster completamente nuovo.

Questo tutorial mostra come creare snapshot del cluster, che ti aiuterà a essere pronto in caso di evento irreversibile di errore dei dati.

Iniziamo.

Cos'è un'istantanea di Elasticsearch?

Come accennato, un'istantanea elastica è una copia di backup di un cluster in esecuzione ElaSticSearch. Questa istantanea può essere di un intero cluster o indici e flussi di dati specifici all'interno di un particolare cluster.

Come presto imparerai, un plug -in repository gestisce le snapshot di ElasticSearch. Queste istantanee sono memorizzabili in varie posizioni di archiviazione definite dal plug -in. Questi includono sistemi locali e sistemi remoti come l'archiviazione GCP, Amazon EC2, Microsoft Azure e molti altri.

Come creare un repository di Elasticsearch Snapshot

Prima di immergerci nella creazione di istantanee di ElaSticSearch, dobbiamo creare un repository di istantanee perché molti dei servizi di ElasticSearch utilizzano l'API Snapshot per eseguire queste attività.

Alcune delle attività gestite dall'API snapshot sono:

  • Metti il ​​repository snapshot
  • Verifica il repository snapshot
  • Ottieni un repository snapshot
  • Elimina il repository snapshot
  • Pulisci repository dell'istantanea
  • Crea istantanee
  • Clone istantanee
  • Ottieni istantanea
  • Ottieni lo stato dell'istantanea
  • Ripristina l'istantanea
  • Elimina l'istantanea

Per creare un repository snapshot, utilizziamo l'endpoint API _SnapShot seguito dal nome che vogliamo assegnare al repository snapshot. Considera la richiesta di seguito che crea un repository chiamato backup_repo

Put /_snapshot /backup_repo

"Tipo": "FS",
"impostazioni":
"Posizione": "/home/root/backups",
"Compress": vero

Ecco un comando Curl per la richiesta sopra:

curl -xput "http: // localhost: 9200/_snapshot/backup_repo" -h 'content -type: applicazione/json' -d '"type": "fs", "impostazioni": "posizione": "/ Home/Root/Backups "," Compress ": True '

Per passare il percorso del repository snapshot, è necessario prima aggiungere il percorso del sistema o la directory genitore al percorso.Entrata Repo in Elasticsearch.YML

Il sentiero.La voce Repo dovrebbe apparire simile a:

sentiero.Repo: [“/home/root/backups”]

È possibile trovare il file di configurazione di ElasticSearch situato in/etc/elasticsearch/elasticsearch.YML

NOTA: Dopo aver aggiunto il percorso.Repo, potrebbe essere necessario riavviare i cluster di ElasticSearch. Inoltre, i valori supportati per il percorso.Il repository può variare selvaggiamente a seconda della piattaforma che esegue Elasticsearch.

Come visualizzare il repository di Snapshot

Per confermare la creazione riuscita del repository snapshot, utilizzare la richiesta GET con l'endpoint _snapshot come:

Get /_snapshot /backup_repo

Puoi anche utilizzare il seguente comando Curl:

Curl -Xget "http: // localhost: 9200/_snapshot/backup_repo"

Questo dovrebbe visualizzare informazioni sul repository di backup, ad esempio:


"Backup_repo":
"Tipo": "FS",
"impostazioni" :
"Compress": "Vero",
"Posizione": "" "/home/root/backups" ""


Se hai più di un repository di istantanee e non ricordi il nome, puoi omettere il nome Repo e chiamare l'endpoint _snapshot per elencare tutti i repository esistenti.

Get/_snapshot o arricciaio curl -xget http: // localhost: 9200/_snapshot

Come creare un'istantanea di Elasticsearch

La creazione di un'istantanea di ElasticSearch per un repository Snapshot specifico è gestita dall'API Crea Snapshot. L'API richiede il nome del repository snapshot e il nome dell'istantanea.

NOTA: Un singolo repository di istantanee può avere più di un'istantanea degli stessi cluster purché abbiano identità/nomi univoci.

Considera la seguente richiesta per aggiungere un'istantanea chiamata Snapshot_2021 al repository Backup_Repo.

Put/_snapshot/backup_repo/snapshot_2021

Per usare Curl, usa il comando:

Curl -xput “http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021"

Il comando dovrebbe restituire una risposta da Elasticsearch con 200 OK e accettato: True


"accettato": vero

Poiché non specifica quali flussi di dati e indici che si desidera eseguire il backup, chiamando i backup della richiesta sopra tutti i dati e lo stato del cluster. Per specificare quali flussi di dati e indici eseguiti il ​​backup, aggiungilo all'organismo di richiesta.

Considera la seguente richiesta che backup il .Kibana Index (un indice di sistema) e specifica quale utente ha autorizzato l'istantanea e il motivo.

Put/_snapshot/backup_repo/snapshot_2

"Indici": ".kibana ",
"Ignore_unavailable": vero,
"include_global_state": true,
"Metadati":
"Take_by": "ElasticAdmin",
"Take_because": "Backup quotidiano"

Il comando Curl per questo è:

Curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_2" -h 'content -type: applicazione/json' -d '"indici": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metadata ": " take_by ":" elasticadmin "," take_because ":" backup quotidiano " '

Ignore_unavailable imposta uno stato booleano che restituisce un errore se i flussi di dati o gli indici specificati nell'istantanea sono mancanti o chiusi.

Il parametro include_global_state salva lo stato corrente del cluster se vero. Alcune delle informazioni del cluster salvate includono:

  • Impostazioni del cluster persistenti
  • Modelli di indice
  • Modelli di indice legacy
  • Ingerire condutture
  • Politiche del ciclo di vita ILM

NOTA: È possibile specificare più di un indici separati dalle virgole.

Un argomento comune usato con l'endpoint _snapshot è wait_for_completion, un valore booleano che definisce (true) o meno (falso) la richiesta deve restituire immediatamente dopo l'inizializzazione snapshot (impostazione predefinita).

Per esempio:

Put/_snapshot/backup_repo/snapshot_3?wait_for_completion = true

"Indici": ".kibana ",
"Ignore_unavailable": vero,
"include_global_state": false,
"Metadati":
"Take_by": "ElasticAdmin",
"Take_because": "Backup settimanale"

Il comando Curl è:

Curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_3?wait_for_completion = true "-h 'contenuti -type: applicazione/json' -d '" indici ":".Kibana "," Ignore_unavailable ": true," include_global_state ": false," metadata ": " take_by ":" elasticadmin "," take_because ":" backup settimanale " '

Quando hai il parametro wait_for_completion impostato su True, fornirai un output simile a quello mostrato di seguito:


"Snapshot":
"Snapshot": "Snapshot_3",
"UUID": "Tquhyofirngmmtw0agbacq",
"versione_id": 7100299,
"Versione": "7.10.2 ",
"Indici": [
".kibana_1 "
",
"data_streams": [],
"include_global_state": false,
"Metadati":
"Take_by": "ElasticAdmin",
"Take_because": "Backup settimanale"
,
"Stato": "successo",
"start_time": "2021-01-19t13: 36: 59.615Z ",
"Start_time_in_millis": 1611063419615,
"end_time": "2021-01-19t13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"Failure": [],
"frammenti":
"totale": 1,
"fallito": 0,
"successo": 1


Come visualizzare le istantanee

L'API GET Snapshot gestisce la funzionalità di visualizzazione.

Tutto ciò che devi passare nella richiesta è il repository snapshot e il nome dell'istantanea che si desidera visualizzare i dettagli.

L'istantanea dovrebbe rispondere con i dettagli su un'istantanea specificata. Questi dettagli includono:

  • Valori di inizio e fine
  • La versione di Elasticsearch che ha creato l'istantanea
  • Elenco degli indici inclusi
  • Lo stato attuale dell'istantanea
  • Elenco di guasti verificatisi durante l'istantanea

Ad esempio, per visualizzare i dettagli su Snapshot_3 creati sopra, utilizzare la richiesta mostrata di seguito:

Get/_snapshot/backup_repo/snapshot_3
Per usare Curl, usa il comando di seguito:
[cc lang = "text" width = "100%" height = "100%" sfuggito = "vero" tema = "blackboard" nowRap = "0"]
Curl -Xget “http: // localhost: 9200/_snapshot/backup_repo/snapshot_3"

La richiesta deve restituire una risposta con i dettagli dell'istantanea come:


"Snapshots": [

"Snapshot": "Snapshot_3",
"UUID": "Tquhyofirngmmtw0agbacq",
"versione_id": 7100299,
"Versione": "7.10.2 ",
"Indici": [
".kibana_1 "
",
"data_streams": [],
"include_global_state": false,
"Metadati":
"Take_by": "ElasticAdmin",
"Take_because": "Backup settimanale"
,
"Stato": "successo",
"start_time": "2021-01-19t13: 36: 59.615Z ",
"Start_time_in_millis": 1611063419615,
"end_time": "2021-01-19t13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"Failure": [],
"frammenti":
"totale": 1,
"fallito": 0,
"successo": 1


"

Puoi anche personalizzare l'organismo di richiesta per ottenere dettagli specifici su un'istantanea. Tuttavia, non lo esamineremo per ora.

Diciamo che desideri visualizzare informazioni su tutte le istantanee in un repository di istantanee specifico; In tal caso, puoi passare un jolly asterisco nella richiesta come:

Get/_snapshot/backup_repo/*

Il comando Curl per questo è:

Curl -Xget “http: // localhost: 9200/_snapshot/backup_repo/*"

La risposta è un dump dettagliato di tutte le istantanee in quel repository come:


"Snapshots": [

"Snapshot": "Snapshot_2021",
"Uuid": "7cfighzvrtyzw07c60d2iw",
"versione_id": 7100299,
"Versione": "7.10.2 ",
"Indici": [
"my_index",
"single_index_with_body",
"my_index_2",
"single_index",
".kibana_1 ",
"test"
",
"data_streams": [],
"include_global_state": true,
"Stato": "successo",
"Start_time": "2021-01-19T13: 28: 48.172Z ",
"Start_time_in_millis": 1611062928172,
"end_time": "2021-01-19t13: 28: 50.831Z ",
"end_time_in_millis": 1611062930831,
"duration_in_millis": 2659,
"Failure": [],
"frammenti":
"totale": 7,
"fallito": 0,
"successo": 7

,

"Snapshot": "Snapshot_2",
"UUID": "W58iMOUB8VC7CG04WG",
"versione_id": 7100299,
"Versione": "7.10.2 ",
"Indici": [
".kibana_1 "
",
"data_streams": [],
"include_global_state": false,
"Metadati":
"Take_by": "ElasticAdmin",
"Take_because": "Backup quotidiano"
,
"Stato": "successo",
"Start_time": "2021-01-19T13: 33: 34.482Z ",
"Start_time_in_millis": 1611063214482,
"end_time": "2021-01-19t13: 33: 35.921Z ",
"end_time_in_millis": 1611063215921,
"Duration_in_millis": 1439,
"Failure": [],
"frammenti":
"totale": 1,
"fallito": 0,
"successo": 1

,

"Snapshot": "Snapshot_3",
"UUID": "Tquhyofirngmmtw0agbacq",
"versione_id": 7100299,
"Versione": "7.10.2 ",
"Indici": [
".kibana_1 "
",
"data_streams": [],
"include_global_state": false,
"Metadati":
"Take_by": "ElasticAdmin",
"Take_because": "Backup settimanale"
,
"Stato": "successo",
"start_time": "2021-01-19t13: 36: 59.615Z ",
"Start_time_in_millis": 1611063419615,
"end_time": "2021-01-19t13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"Failure": [],
"frammenti":
"totale": 1,
"fallito": 0,
"successo": 1


"

I caratteri jolly sono molto utili per filtrare informazioni specifiche sulle istantanee.

Come eliminare un'istantanea

Eliminare un'istantanea è molto semplice: tutto ciò che devi fare è usare la richiesta di eliminazione come:

Delete/_snapshot/backup_repo/snapshot_2021/

Il comando Curl è:

Curl -xdelete “http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021/"

La risposta dovrebbe essere riconosciuta: vera


"Riconosciuto": vero

Se l'istantanea non esiste, otterrai un codice di stato 404 e un errore mancante di istantanea come:


"Errore":
"causa ultima" : [

"Tipo": "Snapshot_Missing_Exception",
"Motivo": "[Backup_repo: snapshot_2021] manca"

",
"Tipo": "Snapshot_Missing_Exception",
"Motivo": "[Backup_repo: snapshot_2021] manca"
,
"Stato": 404

Conclusione

In questa guida, abbiamo discusso di come creare istantanee di ElasticSearch usando l'API Snapshot. Quello che hai imparato dovrebbe essere sufficiente per consentirti di creare un repository snapshot, visualizzare i repository di istantanee, creare, visualizzare ed eliminare le istantanee. Sebbene ci siano personalizzazioni che puoi effettuare con l'API, le conoscenze in questa guida dovrebbero essere sufficienti per iniziare.

Grazie per aver letto.