So richten Sie Ihren ersten Elasticsearch-Cluster für die Entwicklung ein

Richten Sie einen lokalen Elasticsearch-Entwicklungscluster ein, überprüfen Sie die Gesundheit und vermeiden Sie häufige Konfigurationsfehler bei Einzel- und Mehrknoten-Setups.

So richten Sie Ihren ersten Elasticsearch-Cluster für die Entwicklung ein

Die Einrichtung Ihres ersten Elasticsearch-Clusters besteht hauptsächlich darin, eine sichere Entwicklungskonfiguration zu wählen und zu überprüfen, ob der Knoten tatsächlich dem erwarteten Cluster beigetreten ist. Ein Einzelknoten-Setup reicht für grundlegende Indexierungs- und Suchtests aus; ein lokales Mehrknoten-Setup hilft Ihnen, Discovery und Shard-Zuweisung zu erlernen.

Der Fokus liegt hier auf der lokalen Entwicklung. Verwenden Sie diese gelockerten Einstellungen nicht für einen öffentlichen oder Produktionscluster wieder.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:

  1. Java-Laufzeitumgebung: Aktuelle Elasticsearch-Distributionen enthalten ein gebündeltes JDK. Wenn Sie ein Paket oder eine Distribution verwenden, die dies nicht tut, installieren Sie die von dieser Elasticsearch-Version benötigte Java-Version.
  2. Elasticsearch herunterladen: Besorgen Sie sich die Binärverteilung Ihrer gewünschten Elasticsearch-Version von der offiziellen Elastic-Website.
  3. Systemressourcen: Für grundlegende Entwicklungstests sind 2 GB RAM in der Regel ausreichend, obwohl für Mehrknotentests mehr empfohlen wird.

Schritt 1: Herunterladen und Entpacken von Elasticsearch

Nach dem Herunterladen (normalerweise als .zip- oder .tar.gz-Datei) entpacken Sie das Archiv in ein Verzeichnis, in dem Sie Ihre Cluster-Dateien hosten möchten (z. B. ~/elasticsearch-8.12.0). Dieses Verzeichnis wird als Elasticsearch Home-Verzeichnis bezeichnet.

Schritt 2: Konfigurieren eines Einzelknoten-Clusters (Entwicklungsstandard)

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

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

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

# Knoten-Konfiguration
node.name: node-1

# Netzwerkeinstellungen (Verwenden Sie localhost für die Entwicklung)
network.host: 127.0.0.1

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

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

Warnung zur Sicherheit: Das Deaktivieren von xpack.security.enabled ist für das anfängliche Entwicklungssetup üblich, um Tests 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 oft zuerst Setup-Befehle ausführen, um anfängliche Passwörter zu generieren, wenn die Sicherheit aktiviert bleibt.

Starten des Einzelknotens

Navigieren Sie zum Stammverzeichnis Ihres entpackten Verzeichnisses und führen Sie das entsprechende Startskript aus. Unter Linux/macOS:

./bin/elasticsearch

Unter Windows mit PowerShell:

.\bin\elasticsearch.bat

Warten Sie, bis die Logs 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 mit curl gegen den Standard-HTTP-Port (9200) überprüfen.

Überprüfen der Cluster-Gesundheit

Dieser Befehl überprüft die allgemeine Gesundheit 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 einen gesunden Einzelknoten-Cluster anzeigt.

Ü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 Tests der Shard-Zuweisung benötigen Sie mindestens zwei Knoten. Dies erfordert das Ausführen mehrerer separater Instanzen von Elasticsearch, jede mit 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 verlinken Sie sie mit der Hauptinstallation.

Unterschiede in der Knotenkonfiguration

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

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
transport.port: 9300
path.data: node1_data  # Eindeutiger Datenpfad
xpack.security.enabled: false
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
# 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
transport.port: 9301  # Muss einen anderen Transport-Port verwenden
path.data: node2_data  # Eindeutiger Datenpfad
xpack.security.enabled: false
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
# Diese Zeile teilt Knoten 2 mit, wie andere Mitglieder gefunden werden
cluster.initial_master_nodes: ["node-1", "node-2"]

Starten des Mehrknoten-Clusters

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

Überprüfen des Mehrknoten-Clusters

Überprüfen Sie die Knotenanzahl mit der API gegen jeden 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 gebildet.

Best Practices für Entwicklungsumgebungen

  • Verwenden Sie dedizierte Datenpfade: Konfigurieren Sie path.data immer explizit für jeden Knoten, insbesondere in Mehrknoten-Setups, um eine versehentliche Datenkontamination zwischen Instanzen zu vermeiden.
  • Eindeutige Ports: Verwenden Sie eindeutige HTTP-Ports (http.port) und Transport-Ports (transport.port) für jeden lokalen Knoten, damit sie nicht in Konflikt geraten.
  • Speichersperre: Stellen Sie für die Entwicklung sicher, dass Sie nicht auf Heap-Größenbeschränkungen stoßen. Wenn Sie Startfehler im Zusammenhang mit dem Speicher erhalten, müssen Sie möglicherweise die JVM-Heap-Größe in der Datei jvm.options anpassen (obwohl die Standardwerte für grundlegende Tests normalerweise in Ordnung sind).

Nächste Schritte: Daten indizieren

Wenn Ihr Cluster läuft, besteht der nächste logische Schritt darin, einen Index zu erstellen und Mapping-Einstellungen festzulegen. 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 Elasticsearch unter Verwendung von Client-Bibliotheken oder Kibana zu interagieren.