Comment faire une sauvegarde d’un Cluster Elasticsearch

Le mécanisme de prise de sauvegarde dans Elasticsearch s’appelle Snapshot. Un instantané est une sauvegarde prise à partir d’un cluster Elasticsearch qui est en cours d’exécution. Il n’est pas nécessaire d’arrêter le cluster, ce qui permet d’éviter les fenêtres de maintenance des applications. Un instantané d’un index individuel ou du cluster entier peut être pris et stocké dans un référentiel sur un système de fichiers partagé.

Les instantanés dans Elasticsearch sont pris de manière incrémentielle. Cela signifie que lorsqu’il crée un instantané d’un index, Elasticsearch évite de copier les données qui sont déjà stockées dans le cadre d’un instantané antérieur du même index. Il peut donc être efficace de prendre régulièrement des instantanés du cluster.

De la même façon que nous pouvons faire une sauvegarde du cluster en cours d’exécution, nous pouvons aussi restaurer un instantané dans un cluster en cours d’exécution. Lorsque nous restaurons un index, nous pouvons même modifier le nom de l’index restauré ainsi que certains de ses paramètres.

Pour faire des sauvegardes, nous devons enregistrer un référentiel d’instantanés avant de pouvoir effectuer les opérations d’instantanés et de restauration. Pour enregistrer le référentiel de système de fichiers partagé pour le cluster, il est nécessaire de monter le même système de fichiers partagé au même emplacement sur tous les nœuds maîtres et de données. Cet emplacement doit être enregistré dans le fichier de configuration sur tous les nœuds maîtres et de données.

Dans cet article, nous allons vérifier le référentiel partagé NFS, et voir les étapes pour prendre un instantané et le restaurer.

Pré-requis

  1. Répertoire partagé NFS disponible et monté sur les 3 nœuds d’Elasticsearch au même endroit
  2. Cluster Elasticsearch de 3 Nœuds sur 3 serveurs Ubuntu.

Ce que nous allons faire

  1. Vérifier la configuration du serveur NFS.
  2. Vérifier la configuration du Cluster Elasticsearch
  3. Enregistrer un Référentiel pour prendre des sauvegardes.
  4. Effectue une sauvegarde et une restauration.

Vérifier la configuration du serveur/client NFS.

Dans cet article, nous ne parlerons pas de la configuration NFS car elle n’entre pas dans le cadre de cet article. Mais pour faire une sauvegarde d’Elasticsearch, il faut que la configuration suivante soit en place.

es-node-1(10.11.10.61)  : NFS Client
es-node-2(10.11.10.62) : NFS Client
es-node-3(10.11.10.63) : NFS Client
NFS Server(10.11.10.64) : NFS Server

Ici,

Le serveur NFS a partagé son « /home/ubuntu/shared/ ». avec les nœuds Elasticsearch.

Chaque Elasticsearch a son répertoire local  » /home/ubuntu/monté «  monté sur le répertoire partagé de NFS « /home/ubuntu/shared/ ».. Nous devons nous assurer que la propriété de tous les répertoires appartient au même utilisateur avec lequel nous démarrons Elasticsearch.

Une fois cette configuration en place, nous pouvons poursuivre.

Vérifier la configuration du cluster Elasticsearch

Fais les configurations suivantes pour configurer Elasticsearch afin qu’il fonctionne en mode Cluster :

Ici, si tu as mis en place un cluster Elasticsearch, tu dois connaître la configuration suivante.

La seule configuration que nous devons effectuer pour prendre Elasticsearch Cluster Backup à part de la configuration existante d’Elasticsearch Cluster est « path.repo : [« /home/ubuntu/mounted »]« :

vim config/elasticsearch.yml
path.repo: ["/home/ubuntu/mounted"] 

Garde cette configuration identique sur chaque nœud.

Configuration sur Node1

#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-1"
#define node 1 as master-eligible:
node.master: true
#define nodes 2 and 3 as data nodes:
node.data: true
#enter the private IP and port of your node:
network.host: 10.11.10.61
http.port: 9200
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.61", "10.11.10.62", "10.11.10.63"]
cluster.initial_master_nodes:
- 10.11.10.61
path.repo: ["/home/ubuntu/mounted"]

Configuration sur Node2

#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-2"
#define node 2 as master-eligible:
node.master: false
#define nodes 2 and 3 as data nodes:
node.data: true 
#enter the private IP and port of your node:
network.host: 10.11.10.62
http.port: 9200 
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.61", "10.11.10.62", "10.11.10.63"
path.repo: ["/home/ubuntu/mounted"]

Configuration sur Node3

#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-3"
#define node 3 as master-eligible:
node.master: false
#define nodes 2 and 3 as data nodes:
node.data: true
#enter the private IP and port of your node:
network.host: 10.11.10.63
http.port: 9200
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.61","10.11.10.62","10.11.10.63""]
path.repo: ["/home/ubuntu/mounted"]

Sauvegarde du cluster Elasticsearch

Une fois que tu as mis en place toute cette configuration, démarre tous les nœuds Elasticsearch, en commençant par le maître initial.

Enregistre un référentiel pour faire des sauvegardes

Vérifie les référentiels existants à l’aide de la commande suivante.

curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'

Si nous obtenons une réponse vide, cela indique que nous n’avons pas encore configuré de référentiel.

Pour configurer un référentiel, exécute la commande suivante.

curl -XPUT 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup' -d {
"type": "fs",
"settings": {
"location": "/home/ubuntu/mounted",
"compress": true
}
}'

Ici, « mon_sauvegarde » dans la commande ci-dessus est le nom du référentiel.

Nous pouvons vérifier les référentiels enregistrés à l’aide de la commande suivante

curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'

Sauvegarde et restauration d’un cluster Elasticsearch

Fais une sauvegarde

Une fois que nous avons créé un repo, nous sommes prêts à faire une sauvegarde.

Utilise la commande suivante pour faire une sauvegarde nommée « snapshot_name ».

curl -XPUT "https://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name?wait_for_completion=true"

Restaurer une sauvegarde

Le snapshot que nous avons pris peut être restauré à l’aide de la commande suivante.

Utilise la commande suivante pour restaurer la sauvegarde nommée « nom_splash ».

curl -XPOST "http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name/_restore?wait_for_completion=true"

Conclusion

Dans cet article, nous avons vu les étapes pour enregistrer un référentiel, prendre une sauvegarde et la restaurer.

Vous aimerez aussi...