Wie man ein Backup von einem Elasticsearch-Cluster erstellt

Der Mechanismus zum Erstellen von Backups in Elasticsearch heißt Snapshot. Ein Snapshot ist eine Sicherungskopie eines Elasticsearch-Clusters im laufenden Betrieb. Der Cluster muss nicht heruntergefahren werden, wodurch Wartungsfenster für die Anwendungen vermieden werden können. Ein Snapshot eines einzelnen Index oder des gesamten Clusters kann erstellt und in einem Repository auf einem gemeinsamen Dateisystem gespeichert werden.

Snapshots in Elasticsearch werden inkrementell erstellt. Das bedeutet, dass Elasticsearch beim Erstellen eines Snapshots eines Indexes keine Daten kopiert, die bereits als Teil eines früheren Snapshots desselben Indexes gespeichert sind. Daher kann es effizient sein, regelmäßig Snapshots des Clusters zu erstellen.

Genauso wie wir ein Backup des Clusters im laufenden Betrieb erstellen können, können wir auch einen Snapshot in einem laufenden Cluster wiederherstellen. Wenn wir einen Index wiederherstellen, können wir sogar den Namen des wiederhergestellten Indexes und einige seiner Einstellungen ändern.

Um Backups zu erstellen, müssen wir ein Snapshot-Repository registrieren, bevor wir die Snapshot- und Wiederherstellungsvorgänge durchführen können. Um das gemeinsame Dateisystem-Repository für den Cluster zu registrieren, muss auf allen Master- und Datenknoten das gleiche gemeinsame Dateisystem am gleichen Ort gemountet werden. Dieser Speicherort muss in der Konfigurationsdatei auf allen Master- und Datenknoten registriert werden.

In diesem Artikel werden wir das gemeinsame NFS-Repository überprüfen und die Schritte zur Erstellung eines Snapshots und dessen Wiederherstellung erläutern.

Vorraussetzungen

  1. NFS Shared Directory verfügbar und auf allen 3 Elasticsearch-Knoten am gleichen Ort gemountet
  2. Elasticsearch-Cluster mit 3 Knoten auf 3 Ubuntu-Servern.

Was wir tun werden

  1. Überprüfe die Einrichtung des NFS-Servers.
  2. Überprüfen der Elasticsearch-Cluster-Konfiguration
  3. Ein Repository registrieren, um Backups zu erstellen.
  4. Ein Backup erstellen und wiederherstellen.

Überprüfe die Einrichtung von NFS Server/Client.

In diesem Artikel werden wir nicht auf die NFS-Einrichtung eingehen, da sie nicht in den Rahmen dieses Artikels fällt. Aber um ein Backup von Elasticsearch zu erstellen, müssen wir die folgenden Einstellungen vornehmen.

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

Hier,

Der NFS-Server hat seinen „/home/ubuntu/shared/“ Verzeichnis mit den Elasticsearch-Knoten freigegeben.

Jeder Elasticsearch hat sein eigenes lokales Verzeichnis „/home/ubuntu/mounted“ in das gemeinsame NFS-Verzeichnis eingehängt „/home/ubuntu/shared/“. Wir müssen sicherstellen, dass der Eigentümer aller Verzeichnisse derselbe Benutzer ist, mit dem wir Elasticsearch starten würden.

Sobald wir diese Einrichtung vorgenommen haben, können wir fortfahren.

Überprüfe die Elasticsearch-Cluster-Konfiguration

Führe die folgenden Konfigurationen durch, um Elasticsearch für den Betrieb im Cluster-Modus einzurichten:

Wenn du einen Elasticsearch-Cluster eingerichtet hast, musst du die folgende Konfiguration beachten.

Die einzige Konfiguration, die wir vornehmen müssen, um das Elasticsearch Cluster Backup von der bestehenden Elasticsearch Cluster Konfiguration zu unterscheiden, ist „path.repo: [„/home/ubuntu/mounted“]:

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

Behalte dies auf jedem Knoten gleich.

Konfiguration auf 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"]

Konfiguration auf 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"]

Konfiguration auf 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"]

Elasticsearch-Cluster sichern

Sobald du diese Konfiguration eingerichtet hast, starte alle Elasticsearch-Knoten, wobei du zuerst den ersten Master startest.

Ein Repository für Backups registrieren

Überprüfe die vorhandenen Repositories mit dem folgenden Befehl.

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

Wenn wir eine leere Antwort erhalten, bedeutet das, dass wir noch keine Repositories eingerichtet haben

Um ein Repository einzurichten, führe den folgenden Befehl aus.

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

Im obigen Befehl ist „my_backup“ der Name des Repositorys.

Wir können die registrierten Repositories mit dem folgenden Befehl überprüfen

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

Sicherung und Wiederherstellung eines Elasticsearch-Clusters

Ein Backup erstellen

Sobald wir ein Repository erstellt haben, können wir ein Backup erstellen.

Verwende den folgenden Befehl, um ein Backup mit dem Namen „snapshot_name“ zu erstellen

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

Wiederherstellen eines Backups

Der Snapshot, den wir erstellt haben, kann mit dem folgenden Befehl wiederhergestellt werden.

Verwende den folgenden Befehl, um das Backup mit dem Namen „snapshot_name“ wiederherzustellen

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

Fazit

In diesem Artikel haben wir gesehen, wie man ein Repository registriert, ein Backup erstellt und es wiederherstellt.

Das könnte dich auch interessieren …