Einrichten Ihres ersten Elasticsearch-Clusters für die Entwicklung

Erlernen Sie die wesentlichen Schritte zur schnellen Bereitstellung und Konfiguration eines grundlegenden Single-Node- oder Multi-Node-Elasticsearch-Clusters für die lokale Entwicklung. Diese Anleitung behandelt das Herunterladen von Binärdateien, die Konfiguration von `elasticsearch.yml` zur Deaktivierung der Sicherheit für Tests, das Starten von Nodes und die Überprüfung des Cluster-Zustands mithilfe einfacher Befehlszeilen-Verifizierungstools.

43 Aufrufe

Einrichten Ihres ersten Elasticsearch-Clusters für die Entwicklung

Der Einstieg in Elasticsearch kann aufgrund seiner verteilten Natur entmutigend wirken, aber die Einrichtung eines Basisclusters für die lokale Entwicklung ist unkompliziert. Diese Anleitung führt Sie durch die wesentlichen Schritte, die erforderlich sind, um schnell einen funktionsfähigen Elasticsearch-Cluster bereitzustellen und zu konfigurieren, unabhängig davon, ob Sie sich für ein einfaches Einzelknoten-Setup oder eine repräsentativere Mehrknotenumgebung entscheiden. Das Verständnis dieser anfänglichen Konfiguration ist entscheidend für die nahtlose Indizierung, Abfrage und Erkundung Ihrer Daten mithilfe der leistungsstarken Such- und Analysefunktionen von Elasticsearch.

Wir konzentrieren uns auf die Kernkonfigurationsaspekte, die für eine Entwicklungsumgebung erforderlich sind, um sicherzustellen, dass Sie eine solide Grundlage haben, bevor Sie zu Produktionsüberlegungen übergehen.

Voraussetzungen

Stellen Sie vor Beginn sicher, dass die folgenden Voraussetzungen erfüllt sind:

  1. Java Development Kit (JDK): Elasticsearch erfordert ein kompatibles JDK, das auf Ihrem System installiert ist. Elasticsearch-Versionen 7.x und höher benötigen typischerweise JDK 11 oder höher.
  2. Elasticsearch herunterladen: Besorgen Sie sich die Binärdistribution Ihrer gewünschten Elasticsearch-Version von der offiziellen Elastic-Website.
  3. Systemressourcen: Für grundlegende Entwicklungstests sind im Allgemeinen 2 GB RAM ausreichend, obwohl für Mehrknotentests mehr empfohlen wird.

Schritt 1: Herunterladen und Extrahieren von Elasticsearch

Sobald der Download abgeschlossen ist (normalerweise als .zip- oder .tar.gz-Datei), extrahieren Sie das Archiv in ein Verzeichnis, in dem Sie Ihre Clusterdateien speichern möchten (z. B. ~/elasticsearch-8.12.0). Dieses Verzeichnis wird als Elasticsearch Home Directory bezeichnet.

Schritt 2: Konfigurieren eines Einzelknoten-Clusters (Standard für die Entwicklung)

Standardmäßig versucht Elasticsearch bei der ersten Ausführung, als Einzelknoten-Cluster zu starten. Moderne Versionen erfordern jedoch häufig eine explizite Konfiguration, insbesondere in Bezug auf Sicherheits- und Speichereinstellungen, selbst für die lokale Entwicklung.

Die Konfigurationsdateien befinden sich im Verzeichnis config/ innerhalb Ihres Elasticsearch Home.

Wesentliche Konfiguration (config/elasticsearch.yml)

Die Hauptkonfigurationsdatei ist elasticsearch.yml. Für ein lokales Einzelknoten-Setup müssen Sie mindestens den Clusternamen und den Knotennamen konfigurieren.

# Cluster-Konfiguration
cluster.name: dev-cluster

# Knotenkonfiguration
node.name: node-1

# Netzwerkeinstellungen (Für die Entwicklung 127.0.0.1 verwenden)
network.host: 127.0.0.1

# HTTP-Port (Standard ist 9200)
http.port: 9200

# Wichtig für die Entwicklung: Sicherheit zunächst deaktivieren (In der Produktion mit Vorsicht verwenden!)
xpack.security.enabled: false

Warnung zur Sicherheit: Das Deaktivieren von xpack.security.enabled ist bei der anfänglichen Einrichtung der Entwicklung üblich, um das Testen zu vereinfachen. Führen Sie diese Konfiguration niemals in einer öffentlich zugänglichen Umgebung aus. Für moderne Elasticsearch-Versionen (7.x+) müssen Sie häufig zuerst Setup-Befehle ausführen, um initiale Passwörter zu generieren, falls die Sicherheit aktiviert bleibt.

Starten des Einzelknotens

Navigieren Sie in das Stammverzeichnis Ihres extrahierten Ordners und führen Sie das entsprechende Startskript aus. Unter Linux/macOS:

./bin/elasticsearch

Unter Windows (mithilfe von PowerShell):

.in\elasticsearch.bat

Warten Sie, bis die Protokolle anzeigen, dass der Knoten erfolgreich gestartet wurde, normalerweise mit einer Meldung wie „started“.

Schritt 3: Überprüfen des Cluster-Status

Sobald der Prozess läuft, können Sie den Cluster-Status mithilfe von curl gegen den Standard-HTTP-Port (9200) überprüfen.

Überprüfung der Cluster-Integrität

Dieser Befehl überprüft die allgemeine Integrität des Clusters:

curl -X GET "http://localhost:9200/_cat/health?v"

Erwarteter Ausgabeausschnitt:

epoch      timestamp cluster     status node.total node.data shards prio initialized
1678886400 10:00:00  dev-cluster green    1          1        0   0           1

Das Feld status sollte green sein, was auf einen gesunden Einzelknoten-Cluster hindeutet.

Überprüfen der Knoteninformationen

Sie können auch die Knoteninformationen überprüfen:

curl -X GET "http://localhost:9200/_cat/nodes?v"

Schritt 4: Einrichten eines Mehrknoten-Clusters (Für realistische Tests)

Für realistischere Entwicklungs- oder Testzwecke der Shard-Zuweisung benötigen Sie mindestens zwei Knoten. Dies erfordert die Ausführung mehrerer separater Elasticsearch-Instanzen mit jeweils unterschiedlichen Konfigurationen.

Verzeichnisstruktur

Erstellen Sie separate Verzeichnisse für jeden Knoten in Ihrem Hauptarbeitsbereich (z. B. es_data/node1, es_data/node2). Kopieren Sie die Basis-Elasticsearch-Distribution in jedes dieser Verzeichnisse oder verknüpfen Sie sie mit der Hauptinstallation.

Unterschiede in der Knotenausführung

Erstellen Sie für jeden Knoten eine eindeutige Datei config/elasticsearch.yml:

Knoten 1 Konfiguration (es_data/node1/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
path.data: node1_data  # Eindeutiger Datenpfad
xpack.security.enabled: false
# Diese Zeile teilt Knoten 1 mit, wie andere Mitglieder gefunden werden
cluster.initial_master_nodes: ["node-1", "node-2"]

Knoten 2 Konfiguration (es_data/node2/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-2
network.host: 127.0.0.1
http.port: 9201  # Muss einen anderen HTTP-Port verwenden
path.data: node2_data  # Eindeutiger Datenpfad
xpack.security.enabled: false
# Diese Zeile teilt Knoten 2 mit, wie andere Mitglieder gefunden werden
cluster.initial_master_nodes: ["node-1", "node-2"]

Starten des Mehrknoten-Clusters

  1. Knoten 1 starten: Navigieren Sie zu es_data/node1 und führen Sie ./bin/elasticsearch aus.
  2. Knoten 2 starten: Navigieren Sie zu es_data/node2 und führen Sie ./bin/elasticsearch aus.

Überprüfen des Mehrknoten-Clusters

Überprüfen Sie die Knotenanzahl mithilfe der API gegen einen beliebigen laufenden HTTP-Port (z. B. 9200):

curl -X GET "http://localhost:9200/_cat/nodes?v"

Erwarteter Ausgabeausschnitt:

ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1    15           50       0   0.01    0.02    0.01    mdi        *      node-1
127.0.0.1    16           51       0   0.00    0.01    0.01    mdi        -      node-2

Wenn Sie zwei Einträge unter name sehen, ist Ihr Mehrknoten-Cluster korrekt eingerichtet.

Best Practices für Entwicklungsumgebungen

  • Dedizierte Datenpfade verwenden: Konfigurieren Sie path.data immer explizit für jeden Knoten, insbesondere bei Mehrknoten-Setups, um eine versehentliche Datenkontamination zwischen Instanzen zu verhindern.
  • Ephemere Ports: Verwenden Sie eindeutige HTTP-Ports (http.port) für jeden Knoten, damit diese sich bei der lokalen Ausführung nicht gegenseitig stören.
  • Speicherzuordnung (Memory Locking): Stellen Sie für die Entwicklung sicher, dass Sie nicht an die Heap-Größenbeschränkungen stoßen. Wenn Startfehler im Zusammenhang mit dem Speicher auftreten, müssen Sie möglicherweise die JVM-Heap-Größe in der Datei jvm.options anpassen (obwohl die Standardwerte für einfache Tests normalerweise ausreichen).

Nächste Schritte: Indizierung von Daten

Nachdem Ihr Cluster läuft, ist der nächste logische Schritt die Erstellung eines Index und der Mapping-Einstellungen. Um beispielsweise einen einfachen Index namens products zu erstellen:

curl -X PUT "http://localhost:9200/products?pretty"

Dieses grundlegende Setup ermöglicht es Ihnen, mit der Interaktion mit Elasticsearch mithilfe von Clientbibliotheken oder Kibana zu beginnen.