Bauveau et restauration des clusters Elasticsearch avec des instantanés

Bauveau et restauration des clusters Elasticsearch avec des instantanés
Elasticsearch est une question de données, et comme vous le savez probablement déjà, les données sont importantes pour vous et Elasticsearch. Cependant, dans la mesure où vous et Elasticsearch Love Data, des défaillances de données peuvent se produire, entraînant une perte de données.

Pour aider à sauvegarder contre la perte de données, Elasticsearch possède diverses fonctionnalités qui vous permettent d'assurer la disponibilité des données, même dans les cas d'échec des données.

Certaines des façons dont Elasticsearch utilise pour vous fournir la disponibilité des données comprennent:

  • Replications cross-cluster, une fonctionnalité qui vous permet de reproduire les données à un ensemble de clusters de suiveurs; Un cluster de suiveur est un cluster de secours utilisé en cas de défaillance du cluster maître.
  • Une autre méthode utilisée par Elasticsearch pour empêcher les données à l'aide de sauvegardes - également appelés instantanés de cluster. Si le besoin s'en fait sentir, vous pouvez utiliser ces instantanés pour restaurer les données sur un entièrement nouveau cluster.

Ce tutoriel vous montre comment créer des instantanés de cluster, ce qui vous aidera à être prêt si un événement irréversible de défaillance des données se produit.

Commençons.

Qu'est-ce qu'un instantané Elasticsearch?

Comme mentionné, un instantané élastique est une copie de sauvegarde d'un cluster Elasticsearch en cours d'exécution. Cet instantané peut être d'un cluster entier ou des indices et flux de données spécifiques dans un cluster particulier.

Comme vous l'apprennerez bientôt, un plugin de référentiel gère les instantanés Elasticsearch. Ces instantanés sont storables dans divers emplacements de stockage définis par le plugin. Il s'agit notamment de systèmes locaux et de systèmes distants tels que GCP Storage, Amazon EC2, Microsoft Azure et bien d'autres.

Comment créer un référentiel instantané Elasticsearch

Avant de plonger dans la création d'instantanés Elasticsearch, nous devons créer un référentiel instantané car de nombreux services d'Elasticsearch utilisent l'API Snapshot pour effectuer ces tâches.

Certaines des tâches manipulées par l'API instantané sont:

  • Mettre le référentiel instantané
  • Vérifiez le référentiel instantané
  • Obtenez le référentiel instantané
  • Supprimer le référentiel instantané
  • Nettoyer le référentiel instantané
  • Créer un instantané
  • Instantané clone
  • Obtenir un instantané
  • Obtenez le statut d'instantané
  • Restaurer un instantané
  • Supprimer l'instantané

Pour créer un référentiel instantané, nous utilisons le point de terminaison de l'API _snapshot suivi du nom que nous voulons attribuer au référentiel instantané. Considérez la demande ci-dessous qui crée un référentiel appelé backup_repo

Put / _snapshot / backup_repo

"Type": "FS",
"paramètres":
"Emplacement": "/ Home / Root / Backups",
"Compress": vrai

Voici une commande Curl pour la demande ci-dessus:

curl -xput "http: // localhost: 9200 / _snapshot / backup_repo" -h 'contenu-type: application / json' -d '"type": "fs", "paramètres": "emplacement": "/ Accueil / racine / sauvegardes "," compress ": true '

Pour passer le chemin du référentiel instantané, vous devez d'abord ajouter le chemin du système ou le répertoire parent sur le chemin.Répo Entrée dans Elasticsearch.YML

Le chemin.L'entrée de répension devrait ressembler à:

chemin.repo: [«/ home / root / backups»]

Vous pouvez trouver le fichier de configuration Elasticsearch situé dans / etc / elasticsearch / elasticsearch.YML

NOTE: Après avoir ajouté le chemin.Repo, vous devrez peut-être redémarrer les clusters Elasticsearch. De plus, les valeurs prises en charge pour le chemin.Repo peut varier follement en fonction de la plate-forme exécutant Elasticsearch.

Comment afficher le référentiel instantané

Pour confirmer la création réussie du référentiel instantané, utilisez la demande GET avec le point de terminaison _snapshot comme:

Get / _snapshot / backup_repo

Vous pouvez également utiliser la commande Curl suivante:

curl -xget "http: // localhost: 9200 / _snapshot / backup_repo"

Cela devrait afficher des informations sur le référentiel de sauvegarde, par exemple:


"backup_repo":
"Type": "FS",
"paramètres" :
"compresser": "vrai",
"Emplacement": "" "/ home / root / Backups" ""


Si vous avez plus d'un référentiel d'instantanés et que vous ne vous souvenez pas du nom, vous pouvez omettre le nom du référentiel et appeler le point de terminaison _snapshot pour répertorier tous les référentiels existants.

Get / _snapshot ou curl curl -xget http: // localhost: 9200 / _snapshot

Comment créer un instantané Elasticsearch

La création d'un instantané ElasticSearch pour un référentiel d'instantanage spécifique est géré par l'API Créer un instantané. L'API nécessite le nom du référentiel instantané et le nom de l'instantané.

NOTE: Un seul référentiel instantané peut avoir plus d'un instantané des mêmes clusters tant qu'ils ont des identités / noms uniques.

Considérez la demande suivante pour ajouter un instantané appelé snapshot_2021 au référentiel Backup_Repo.

Put / _snapshot / backup_repo / snapshot_2021

Pour utiliser Curl, utilisez la commande:

curl -xput «http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021»

La commande doit renvoyer une réponse d'Elasticsearch avec 200 ok et accepté: vrai


"accepté": vrai

Puisqu'il ne spécifie pas les flux de données et les indices que vous souhaitez sauvegarder, appelant la demande ci-dessus sauvegarde toutes les données et l'état de cluster. Pour spécifier les flux de données et les indices à sauvegarder, ajoutez-le au corps de la demande.

Considérez la demande suivante qui sauvegarde le .Index Kibana (un index du système) et spécifie quel utilisateur a autorisé l'instantané et la raison.

Put / _snapshot / backup_repo / snapshot_2

"Indices": ".kibana ",
"ignore_unavailable": vrai,
"include_global_state": vrai,
"métadonnées":
"Taken_By": "ElasticAdmin",
«Taken_because»: «Sauvegarde quotidienne»

La commande curl pour cela est:

curl -xput "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2" -h 'contenu-type: application / json' -d '"Indices": ".Kibana "," ignore_unavailable ": true," include_global_state ": true," métadonnées ": " Taken_By ":" ElasticAdmin "," Taken_because ":" Daily Backup " '

Le ignore_unavailable définit un état booléen qui renvoie une erreur si des flux de données ou des indices spécifiés dans l'instantané sont manquants ou fermés.

Le paramètre include_global_state enregistre l'état actuel du cluster si vrai. Certaines des informations enregistrées sur les cluster comprennent:

  • Paramètres de cluster persistants
  • Modèles d'index
  • Modèles d'index hérité
  • Ingérer des pipelines
  • Politiques du cycle de vie ILM

NOTE: Vous pouvez spécifier plus d'un indices séparés par des virgules.

Un argument commun utilisé avec le point de terminaison _snapshot est Wait_For_Completion, une valeur booléenne définissant si (true) ou non (faux) la demande doit revenir immédiatement après l'initialisation de l'instant.

Par exemple:

Put / _snapshot / backup_repo / snapshot_3?wait_for_completion = true

"Indices": ".kibana ",
"ignore_unavailable": vrai,
"include_global_state": faux,
"métadonnées":
"Taken_By": "ElasticAdmin",
«Taken_because»: «Sauvegarde hebdomadaire»

La commande curl est:

curl -xput "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3?wait_for_completion = true "-h 'contenu-type: application / json' -d '" Indices ":".Kibana "," ignore_unavailable ": true," include_global_state ": false," métadonnées ": " Taken_By ":" ElasticAdmin "," Taken_because ":" Sauvegarde hebdomadaire " '

Lorsque le paramètre Wait_For_Completion est défini sur true, vous donnerez une sortie similaire à celle ci-dessous:


"instantané":
"instantané": "snapshot_3",
"uuid": "tquhyofirngmmtw0agbacq",
"Version_ID": 7100299,
"Version": "7.dix.2 ",
"Indices": [
".kibana_1 "
]],
"data_streams": [],
"include_global_state": faux,
"métadonnées":
"Taken_By": "ElasticAdmin",
«Taken_because»: «Sauvegarde hebdomadaire»
,
"État": "succès",
"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,
"durée_in_millis": 818,
"les échecs" : [ ],
"fragments" :
"Total": 1,
"Échec": 0,
"réussi": 1


Comment afficher les instantanés

L'API GET SNOPSHOT gère la fonctionnalité des instantanés de vue.

Tout ce dont vous avez besoin pour passer dans la demande est le référentiel instantané et le nom de l'instantané que vous souhaitez afficher les détails.

L'instantané doit répondre avec des détails sur un instantané spécifié. Ces détails comprennent:

  • Valeurs de démarrage et de fin
  • La version d'Elasticsearch qui a créé l'instantané
  • Liste des indices inclus
  • L'état actuel de l'instantané
  • Liste des échecs qui se sont produits pendant l'instantané

Par exemple, pour afficher les détails sur le snapshot_3 créé ci-dessus, utilisez la demande ci-dessous:

Get / _snapshot / backup_repo / snapshot_3
Pour utiliser Curl, utilisez la commande ci-dessous:
[cc lang = "text" width = "100%" height = "100%" échappé = "true" theme = "Blackboard" Nowrap = "0"]
curl -xget "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3"

La demande doit renvoyer une réponse avec les détails de l'instantané comme:


"instantanés": [

"instantané": "snapshot_3",
"uuid": "tquhyofirngmmtw0agbacq",
"Version_ID": 7100299,
"Version": "7.dix.2 ",
"Indices": [
".kibana_1 "
]],
"data_streams": [],
"include_global_state": faux,
"métadonnées":
"Taken_By": "ElasticAdmin",
«Taken_because»: «Sauvegarde hebdomadaire»
,
"État": "succès",
"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,
"durée_in_millis": 818,
"les échecs" : [ ],
"fragments" :
"Total": 1,
"Échec": 0,
"réussi": 1


]]

Vous pouvez également personnaliser le corps de la demande pour obtenir des détails spécifiques sur un instantané. Cependant, nous ne examinerons pas cela pour l'instant.

Disons que vous souhaitez afficher des informations sur tous les instantanés dans un référentiel instantané spécifique; Dans ce cas, vous pouvez passer un joker Asterisk dans la demande comme:

Get / _snapshot / backup_repo / *

La commande curl pour cela est:

curl -xget “http: // localhost: 9200 / _snapshot / backup_repo / *”

La réponse est un vidage détaillé de tous les instantanés de ce référentiel comme:


"instantanés": [

"instantané": "snapshot_2021",
"UUID": "7cfighzvrtyzw07c60d2iw",
"Version_ID": 7100299,
"Version": "7.dix.2 ",
"Indices": [
"my_index",
"single_index_with_body",
"my_index_2",
"single_index",
".kibana_1 ",
"test"
]],
"data_streams": [],
"include_global_state": vrai,
"État": "succès",
"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,
"durée_in_millis": 2659,
"les échecs" : [ ],
"fragments" :
"Total": 7,
"Échec": 0,
"réussi": 7

,

"instantané": "snapshot_2",
"UUID": "W58iryMORAUB8VC7CG04WG",
"Version_ID": 7100299,
"Version": "7.dix.2 ",
"Indices": [
".kibana_1 "
]],
"data_streams": [],
"include_global_state": faux,
"métadonnées":
"Taken_By": "ElasticAdmin",
"Taken_because": "Sauvegarde quotidienne"
,
"État": "succès",
"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,
"durée_in_millis": 1439,
"les échecs" : [ ],
"fragments" :
"Total": 1,
"Échec": 0,
"réussi": 1

,

"instantané": "snapshot_3",
"uuid": "tquhyofirngmmtw0agbacq",
"Version_ID": 7100299,
"Version": "7.dix.2 ",
"Indices": [
".kibana_1 "
]],
"data_streams": [],
"include_global_state": faux,
"métadonnées":
"Taken_By": "ElasticAdmin",
«Taken_because»: «Sauvegarde hebdomadaire»
,
"État": "succès",
"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,
"durée_in_millis": 818,
"les échecs" : [ ],
"fragments" :
"Total": 1,
"Échec": 0,
"réussi": 1


]]

Les caractères génériques sont très utiles pour filtrer des informations spécifiques sur les instantanés.

Comment supprimer un instantané

La suppression d'un instantané est très simple: tout ce que vous avez à faire est d'utiliser la demande de suppression comme:

Delete / _snapshot / backup_repo / snapshot_2021 /

La commande curl est:

curl -xdelete "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /"

La réponse doit être reconnue: vrai


«Reconnu»: vrai

Si l'instantané n'existe pas, vous obtiendrez un code d'état 404 et une erreur manquante pour:


"erreur" :
"cause première" : [

"type": "snapshot_missing_exception",
"Raison": "[Backup_Repo: Snapshot_2021] est manquant"

]],
"type": "snapshot_missing_exception",
"Raison": "[Backup_Repo: Snapshot_2021] est manquant"
,
"Statut": 404

Conclusion

Dans ce guide, nous avons discuté de la façon de créer des instantanés Elasticsearch à l'aide de l'API Snapshot. Ce que vous avez appris devrait être suffisant pour vous permettre de créer un référentiel instantané, afficher les référentiels d'instantané, créer, afficher et supprimer des instantanés. Bien qu'il y ait des personnalisations que vous pouvez faire avec l'API, les connaissances de ce guide devraient être suffisantes pour vous aider à démarrer.

Merci pour la lecture.