Wie man einen Elasticsearch-Cluster mit 3 Knoten unter Ubuntu einrichtet

Elasticsearch ist eine No-Sql-Datenbank. Sie ist die verteilte Such- und Analysemaschine, die Echtzeitsuche und -analyse für alle Arten von Daten ermöglicht. Elasticsearch kann jede Art von Daten effizient speichern, sei es strukturierter oder unstrukturierter Text oder numerische Daten, und sie so indizieren, dass eine schnelle Suche möglich ist. Elasticsearch bietet eine einfache REST-API für die Verwaltung des Clusters und das Indizieren/Schreiben und Durchsuchen der Daten.

Elasticsearch wurde mit Java entwickelt und enthält eine gebündelte Version von OpenJDK.

Um Elasticsearch im Detail zu verstehen, lies die offizielle Dokumentation.

In diesem Artikel konzentrieren wir uns darauf, wie man einen Cluster mit 3 Knoten einrichtet.

Vorraussetzungen

  1. Ubuntu 18.04 LTS

Was wir tun werden

  1. Elasticsearch herunterladen
  2. Java 1.8 installieren
  3. Elasticsearch installieren und konfigurieren
  4. Den Cluster testen

Elasticsearch herunterladen

Für Linux kann die aktuelle Version 7.4.2 von Elasticsearch mit folgendem Befehl auf deinen Linux-Systemen heruntergeladen werden.

Download auf jedem Knotenpunkt (Der Ordnername kann abweichen)

mkdir elastic1
cd elastic1/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz

Wenn du auf der Suche nach einer bestimmten Version bist, kannst du jederzeit die Archive durchsuchen auf der Elasticsearch-Website durchsuchen. Es ist immer gut, die neueste Version zu verwenden, da sie alle Fehlerbehebungen der Vorgängerversionen enthält.

Java installieren

Für Elasticsearch muss Java auf dem System verfügbar sein.

Um OpenJDK 8 zu installieren, verwende die folgenden Befehle auf deinem Ubuntu 18.04 Server

Auf jedem Knotenpunkt

sudo apt update
sudo apt install openjdk-8-jdk
java --version

Elasticsearch installieren und konfigurieren

Nun ist es an der Zeit, Elasticsearch aus dem Archiv zu installieren.

Entpacke das Paket, das wir im vorherigen Schritt heruntergeladen haben, mit dem folgenden Befehl.

Installiere Elasticsearch auf jedem Knotenpunkt

tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz

Elasticsearch konfigurieren

Bevor der Dienst gestartet wird, muss Elasticsearch so konfiguriert werden, dass es im Cluster-Modus arbeitet.

Hier haben wir 3 Server

es-node-1: 10.11.10.62 (ursprünglicher Master)
es-node-2: 10.11.14.248
es-node-3: 10.11.13.158

Öffne die Datei config/elasticsearch.yml und füge das Folgende hinzu. (Überprüfe deine IPs)

vim config/elasticsearch.yml

Füge auf dem Master es-node-1 inconfig/elasticsearch.ymlhinzu

#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.62
http.port: 9200

#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: [„10.11.10.62“, „10.11.14.248“,“10.11.13.158″]

cluster.initial_master_nodes:
– 10.11.10.62

 

Add On es-node-2 in config/elasticsearch.yml (Dieser Knoten enthält nicht: cluster.initial_master_nodes)

#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 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.14.248
http.port: 9200

#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: [„10.11.10.62“, „10.11.14.248“,“10.11.13.158″]


Hinzufügen von es-node-3 in config/elasticsearch.yml (Dieser Knoten enthält nicht: cluster.initial_master_nodes)

#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 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.13.158
http.port: 9200

#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: [„10.11.10.62“, „10.11.14.248“,“10.11.13.158″]

Starten und Testen des Clusters

Starte den Cluster

Auf jedem Knoten (Starte zuerst den Master es-node1)

Verwende den folgenden Befehl, um Elasticsearch im Vordergrund zu starten

bin/elasticsearch

Beachte:

Elasticsearch verwendet eine mmapfs Verzeichnis, um seine Indizes zu speichern. Die Standardgrenzen des Betriebssystems für die Anzahl der mmap-Verzeichnisse sind wahrscheinlich zu niedrig, was zu den folgenden Ausnahmen führen kann, wenn der Speicher voll ist.

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

Unter Ubuntu 18.04 können wir können wir die Grenzen erhöhen, indem wir den folgenden Befehl als root/sudo:

sudo sysctl -w vm.max_map_count=262144

Füge -d zu start hinzu, um Elasticsearch im Hintergrund zu starten

bin/elasticsearch -d

Sobald der Cluster startet, kannst du die folgenden Logs auf es-node-1 sehen. Beachte, wie die Knoten zu es-node-1 hinzugefügt werden, wenn sie gestartet werden.

[2019-11-30T08:43:05,766][INFO ][o.e.c.s.ClusterApplierService] [es-node-1] added {{es-node-2}{V9-rBKeJRe2S8UPW96_XzA}{65Bu-WtmTj-Hce_lFAK-ng}{10.11.14.248}{10.11.14.248:9300}{dilm}{ml.machine_memory=4135120896, ml.max_open_jobs=20, xpack.installed=true},}, term: 1, version: 18, reason: Publication{term=1, version=18}
[2019-11-30T08:43:30,317][INFO ][o.e.c.s.MasterService    ] [es-node-1] node-join[{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true} join existing leader], term: 1, version: 19, reason: added {{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true},}
[2019-11-30T08:43:30,820][INFO ][o.e.c.s.ClusterApplierService] [es-node-1] added {{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true},}, term: 1, version: 19, reason: Publication{term=1, version=19

Teste den Cluster

Öffne ein neues Terminal, von dem aus der Cluster erreichbar ist, und probiere die folgenden Befehle aus

curl http://10.11.10.62:9200/_cluster/stats?pretty

curl http://10.11.10.62:9200/_nodes/process?pretty

curl http://10.11.10.62:9200/_cluster/stats?pretty

Fazit

In diesem Artikel haben wir gesehen, wie man die neueste Version von Elasticsearch herunterlädt, Java 8 installiert, Elasticsearch konfiguriert und den Cluster startet und testet.

Das könnte dich auch interessieren …