Recherche élastique

Sauvegarder et restaurer des clusters Elasticsearch avec des instantanés

Sauvegarder et restaurer des clusters Elasticsearch avec des instantanés
Elasticsearch est tout au sujet des 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 aimez les données, des défaillances de données peuvent se produire, entraînant une perte de données.

Pour vous aider à vous protéger contre la perte de données, Elasticsearch dispose de diverses fonctionnalités qui vous permettent de garantir la disponibilité des données, même en cas de défaillance de données.

Voici quelques-uns des moyens utilisés par Elasticsearch pour vous fournir la disponibilité des données :

Ce didacticiel vous montre comment créer des instantanés de cluster, ce qui vous aidera à être prêt en cas de défaillance irréversible des données.

Commençons.

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

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

Comme vous allez bientôt l'apprendre, un plugin de référentiel gère les snapshots Elasticsearch. Ces instantanés sont stockables dans divers emplacements de stockage définis par le plugin. Ceux-ci incluent des systèmes locaux et des systèmes distants tels que GCP Storage, Amazon EC2, Microsoft Azure et bien d'autres.

Comment créer un référentiel d'instantanés Elasticsearch

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

Certaines des tâches gérées par l'API Snapshot sont :

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

METTRE /_snapshot/backup_repo

"type": "fs",
"Les paramètres":
"location": "/home/root/backups",
"compresser": vrai

Voici une commande cURL pour la requête ci-dessus :

curl -XPUT "http://localhost:9200/_snapshot/backup_repo" -H 'Content-Type: application/json' -d'  "type": "fs",  "settings":     "location": "/ home/root/backups",    "compress": true  '

Pour transmettre le chemin du référentiel d'instantanés, vous devez d'abord ajouter le chemin du système ou le répertoire parent au chemin.entrée de dépôt dans elasticsearch.yml

Le chemin.l'entrée du référentiel doit ressembler à :

chemin.dépôt : [“/home/root/backups”]

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

REMARQUE: 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 énormément en fonction de la plate-forme exécutant Elasticsearch.

Comment afficher le référentiel d'instantanés

Pour confirmer la création réussie du référentiel d'instantanés, utilisez la requête 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",
"Les paramètres" :
"compresser" : "vrai",
"location" : """/home/root/backups"""


Si vous avez plusieurs référentiels 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'instantanés spécifique est gérée par l'API de création d'instantané. L'API requiert le nom du référentiel d'instantanés et le nom de l'instantané.

REMARQUE: Un seul référentiel d'instantanés peut avoir plusieurs instantanés 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.

METTRE /_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ée : true


"accepté" : vrai

Comme il ne spécifie pas les flux de données et les index que vous souhaitez sauvegarder, l'appel de la requête ci-dessus sauvegarde toutes les données et l'état du cluster. Pour spécifier les flux de données et les index à sauvegarder, ajoutez-les au corps de la requête.

Considérez la requête suivante qui sauvegarde le .index kibana (un index système) et spécifie quel utilisateur a autorisé l'instantané et la raison.

METTRE /_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 'Content-Type: application/json' -d'  "indices": ".kibana",  "ignore_unavailable": true,  "include_global_state": true,  "metadata":     "taken_by": "elasticadmin",    "taken_because": "Sauvegarde quotidienne"  '

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 de cluster enregistrées incluent :

REMARQUE: Vous pouvez spécifier plusieurs indices séparés par des virgules.

Un argument courant utilisé avec le point de terminaison _snapshot est wait_for_completion, une valeur booléenne définissant si (true) ou non (false) la demande doit être renvoyée immédiatement après l'initialisation de l'instantané (par défaut) ou attendre la fin de l'instantané.

Par example:

METTRE /_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 'Type de contenu : application/json' -d'  "indices": ".kibana",  "ignore_unavailable": true,  "include_global_state": false,  "metadata":     "taken_by": "elasticadmin",    "taken_because": "Sauvegarde hebdomadaire"  '

Lorsque le paramètre wait_for_completion est défini sur true, vous obtiendrez une sortie similaire à celle illustrée ci-dessous :


"instantané" :
"instantané" : "instantané_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,
"fin_heure" : "2021-01-19T13:37:00.433Z",
"fin_time_in_millis" : 1611063420433,
"duration_en_millis" : 818,
"les échecs" : [ ],
"fragments" :
"total" : 1,
"échec" : 0,
"réussi" : 1


Comment afficher des instantanés

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

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

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

Par exemple, pour afficher les détails du snapshot_3 créé ci-dessus, utilisez la requête ci-dessous :

GET /_snapshot/backup_repo/snapshot_3
Pour utiliser cURL, utilisez la commande ci-dessous :
[cc lang="text" width="100%" height="100%" escaped="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é :


"instantanés" : [

"instantané" : "instantané_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,
"fin_time" : "2021-01-19T13:37:00.433Z",
"fin_time_in_millis" : 1611063420433,
"duration_en_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 nous pencherons pas là-dessus pour le moment.

Supposons que vous souhaitiez afficher des informations sur tous les instantanés dans un référentiel d'instantanés spécifique ; dans ce cas, vous pouvez passer un caractère générique astérisque dans la requête 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 sous la forme :


"instantanés" : [

"instantané" : "instantané_2021",
"uuid" : "7CFigHzvRtyZW07c60d2iw",
"version_id" : 7100299,
"version" : "7.dix.2",
"indices" : [
"mon_index",
"single_index_with_body",
"mon_index_2",
"index_single",
".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,
"fin_time" : "2021-01-19T13:28:50.831Z",
"fin_time_in_millis" : 1611062930831,
"duration_en_millis" : 2659,
"les échecs" : [ ],
"fragments" :
"total" : 7,
"échec" : 0,
"réussi" : 7

,

"instantané" : "instantané_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,
"fin_time" : "2021-01-19T13:33:35.921Z",
"fin_time_in_millis" : 1611063215921,
"duration_en_millis" : 1439,
"les échecs" : [ ],
"fragments" :
"total" : 1,
"échec" : 0,
"réussi" : 1

,

"instantané" : "instantané_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,
"fin_time" : "2021-01-19T13:37:00.433Z",
"fin_time_in_millis" : 1611063420433,
"duration_en_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é

Supprimer un snapshot est très simple : il suffit d'utiliser la requête DELETE comme :

SUPPRIMER /_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 d'instantané manquant comme :


"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 expliqué comment 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 d'instantanés, d'afficher les référentiels d'instantanés, de créer, d'afficher et de supprimer des instantanés. Bien qu'il existe 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.

Meilleurs émulateurs de console de jeu pour Linux
Cet article répertorie les logiciels d'émulation de console de jeu populaires disponibles pour Linux. L'émulation est une couche de compatibilité logi...
Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...
Comment capturer et diffuser votre session de jeu sur Linux
Dans le passé, jouer à des jeux n'était considéré qu'un passe-temps, mais avec le temps, l'industrie du jeu a connu une croissance énorme en termes de...