wake-up-neo.net

So fügen Sie meinem Elasticsearch-Cluster einen neuen Knoten hinzu

Mein Cluster verfügt über einen yellow -Zustand, da er nur einen einzelnen Knoten hat. Die Replikate bleiben also nicht zugewiesen, da kein anderer Knoten verfügbar ist, um sie zu enthalten.

Ich möchte also einen weiteren Knoten erstellen/hinzufügen, damit Elasticsearch Replikate zuweisen kann. Ich habe nur eine Maschine und ich leite ES als Dienst .

Ich habe Unmengen von Websites mit einigen Informationen gefunden, aber keine davon gibt mir klar wie kann ich einen weiteren Knoten zu ES hinzufügen?.

Kann mir jemand erklären, welche Dateien ich bearbeiten und welche Befehle ich starten muss, um einen weiteren Knoten in meinem Cluster zu erstellen? Muss ich zwei ES-Instanzen ausführen? Wie kann ich das machen?

Danke im Voraus.

21
Avión

TIPPS ZUM HINZUFÜGEN EINES ANDEREN NODES:

1) VERSIONEN:

Es wird empfohlen, alle Knoten auf den Status zu überprüfen: http: // elastic-node1: 9200 /

Beachten Sie, dass in den meisten Fällen: VERSION MUSS GLEICH SEIN, AUCH MINDESTENS

{
"name" : "node2",
"cluster_name" : "xxxxxxxxxxx",
"cluster_uuid" : "n-xxxxxxxxxxxxxxx",
"version" : {
  "number" : "5.2.2",
  "build_hash" : "xxxx",
  "build_date" : "20-02-24T17:26:45.835Z",
  "build_snapshot" : false,
  "lucene_version" : "6.4.1"
},
"tagline" : "You Know, for Search"
}

Denken Sie daran, dass, wenn Sie eine andere Versionsnummer in Knoten1 sehen, z.

  "number" : "5.2.1"

in diesem Fall müssen Sie Ihren Knoten auf Version 5.2.2 aktualisieren (wie Knoten1).

2) NODES AND REPLICA:

Was ist der Verwendungszweck des Knotens? Für 3 Knoten würde ich dies tun:

curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
  "transient": {
    "discovery.zen.minimum_master_nodes": 3
  }
}
'

Noch besser ist es, die Einstellungen in der Konfigurationsdatei von Elasticsearch zu ändern:

/etc/elasticsearch/elasticsearch.yml 

# need to be changed on each node (has to be unique for each node):
node.name: node1

# need to be the same in all nodes:
cluster.name: my_cluster
discovery.zen.ping.unicast.hosts: ["IP_ADDRESS_OR_HOSTNAME1", "IP_ADDRESS_OR_HOSTNAME2", "IP_ADDRESS_OR_HOSTNAME3"]

Und wenn Sie drei Knoten haben, möchten Sie zwei Repliken und eine primäre?

curl -XPUT 'localhost:9200/_settings?pretty' -H 'Content-Type: application/json' -d'
{
    "index" : {
        "number_of_replicas" : 2
    }
}'

3) STELLEN SIE SICHER, DASS NODES AKTIVIERT SIND

Es gibt eine Möglichkeit, einen Knoten zu treten:

curl -XPUT localhost:9200/_cluster/settings -d '{
  "transient" :{
      "cluster.routing.allocation.exclude._ip" : "NODE_TO_REMOVE_IP_ADDRESS_OR_HOSTNAME"
   }
}';echo

Wenn Sie das getan haben und nun den Knoten wieder hinzufügen möchten: https://www.elastic.co/guide/en/elasticsearch/guide/current/_rolling_restarts.html

sie können dies mit folgender Anfrage tun (bitte lesen Sie den oben genannten Link):

curl -XPUT localhost:9200/_cluster/settings -d '{
  "transient" :{
        "cluster.routing.allocation.enable" : "all"
   }
}';echo

4) NIE VERGESSEN, VERNETZEN:

Firewall, Netzwerk ... Können Sie den neuen Knoten an Port 9200 erreichen? Können Sie es in Ihrem Webbrowser sehen?

Können Sie

curl http://your-elasticsearch-hostname:9200/

?

TIPPS ZUM ENTFERNEN DES NODES VOM CLUSTER:

1) MIT API ENTFERNEN

curl -XPUT 'http://localhost:9200/_cluster/settings?pretty' -d '
{
  "transient" : {
    "cluster.routing.allocation.exclude._name" : "node3"
  }
}'

2) ÜBERPRÜFEN SIE IHRE KONFIGURATIONSDATEI

Überprüfen Sie die Konfigurationsdatei unter: /etc/elasticsearch/elasticsearch.yml

und lassen Sie nur die Knoten, die Sie behalten möchten:

discovery.zen.ping.unicast.hosts:["IP_ADDRESS_OR_HOSTNAME1", "IP_ADDRESS_OR_HOSTNAME2"]

* PRÜFEN SIE IHREN STATUS *

Überprüfen Sie http: // elk-pipeline: 9200/_cat/shards Wie ist Ihr Status? Möglicherweise wird Folgendes angezeigt: INITIALISIERUNG Das bedeutet wahrscheinlich, dass Daten übertragen werden. Wenn Ihre Daten also groß sind (und nicht auf einer SSD), warten Sie.

NICHT VERGESSEN

Sie können sehen, ob sich Ihre Daten gerade bewegen, indem Sie Folgendes eingeben:

[watch] du /var/lib/elasticsearch/

Das ist erst einmal alles. Ich werde von Zeit zu Zeit versuchen, hier weitere Informationen hinzuzufügen.

Bitte zögern Sie nicht zu ändern/hinzufügen.

13
Nimitack

Vollständige Schritte auf Windows Box sind:

  1. entpacke Gummiband beispielsweise nach C:\ELK\Gummiband\Befehl ausführen bin\service install elastic-search-x64-node01, wodurch ein Dienst mit dem Namen elastic-search-x64-node01 erstellt wird.
  2. bearbeiten Sie die Konfigurationsdatei elasticsearch.yml:

    cluster.name: Animals
    node.name: Snake
    node.master: true
    node.data: true
    path.data: C:\ELK\storage\data
    path.logs: C:\ELK\storage\logs
    http.port: 9200
    discovery.zen.ping.multicast.enabled: false
    discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
    
  3. führen Sie service manager elastic-search-x64-node01 aus, richten Sie Ihre Dienstregeln ein und starten Sie den Dienst

  4. entpacke Gummiband zB nach C:\ELK\Gummiband2\Befehl ausführen bin\service install elastic-search-x64-node02, wodurch ein Dienst mit dem Namen elastic-search-x64-node02 erstellt wird.

  5. bearbeiten Sie die Konfigurationsdatei elasticsearch.yml:

    cluster.name: Animals
    node.name: Baboon
    node.master: false
    node.data: true
    path.data: C:\ELK\storage\data
    path.logs: C:\ELK\storage\logs
    http.port: 9201
    discovery.zen.ping.multicast.enabled: false
    discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
    
  6. führen Sie service manager elastic-search-x64-node02 aus, richten Sie Ihre Dienstregeln ein und starten Sie den Dienst

Zu diesem Zeitpunkt haben Sie 2 separate Knoten (sie speichern Daten im selben Ordner, aber ich bin zu faul, um path.data für den zweiten Knoten zu bearbeiten) als 2 separate Windows-Dienste und GET http://localhost:9200/_cluster/health Zeigt so etwas wie:

{
  "cluster_name": "Animals",
  "status": "green",
  "timed_out": false,
  "number_of_nodes": 2,
  "number_of_data_nodes": 2,
  "active_primary_shards": 4,
  "active_shards": 8,
  "relocating_shards": 0,
  "initializing_shards": 0,
  "unassigned_shards": 0,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 100
}
8
laggerok19

Zunächst können Sie die Replikate entfernen, um in den grünen Zustand zurückzukehren. Dies ist auch möglich, nachdem Sie den Index erstellt und Dokumente hinzugefügt haben.

So setzen Sie die Replikatanzahl auf 0:

curl -XPUT 'localhost:9200/my_index/_settings' -d '
{
    "index" : {
        "number_of_replicas" : 0
    }
}'

Wenn Sie Ihrem Cluster einfach einen weiteren Knoten hinzufügen möchten, müssen Sie das elasticsearch.yml, vorzugsweise auf beiden Knoten mit den folgenden Änderungen:

cluster.name: my-cluster
node.name: node01
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.0.5"]

Stellen Sie die Unicast-Hosts auf jedem Knoten so ein, dass sie auf den anderen verweisen, setzen Sie den Clusternamen auf beide Knoten und geben Sie jedem Knoten einen eindeutigen Namen. Starten Sie dann beide ES-Instanzen neu und Ihr Cluster sollte online sein.

6
Or Weinberger

Mir ist nicht klar, was deine Frage hier ist. Sie haben zwei Möglichkeiten.

1) Sie haben zwei Knoten und möchten, dass sie sich gegenseitig sehen können. Es gibt überall eine Menge Dokumentation dafür. Wenn dies der Fall ist, sollten Sie testen, um sicherzustellen, dass jeder Host mit dem anderen kommunizieren kann, z. B .: ssh in Host A und versuchen, Host B: 9200 zu locken und umgekehrt. Sie sollten auch sicherstellen, dass Ihre Konfigurationen korrekt eingestellt sind.

2) Sie möchten einen "Cluster" auf Ihrem lokalen Computer einrichten. In diesem Fall benötigen Sie zwei separate Konfigurationsdateien und müssen elasticsearch mit einer bestimmten Konfigurationsdatei für Ihren zweiten 'Knoten' starten (sowie die zweite Konfiguration ändern, um verschiedene Ports usw. zu verwenden). Vielleicht möchten Sie diesen Link überprüfen: http://www.concept47.com/austin_web_developer_blog/elasticsearch/how-to-run-multiple-elasticsearch-nodes-on-one-machine/

Aber ja, letztendlich müssen Sie Elasticsearch-Prozesse ausführen, unabhängig davon, ob sich beide auf derselben Maschine oder auf zwei verschiedenen Maschinen befinden

1
sinneduy

Wenn Sie Elasticsearch n local ausführen, rufen Sie einfach ein anderes Terminal auf und führen Sie elasticsearch erneut aus. Auf diese Weise haben Sie zwei Instanzen.

In der neu ausgeführten Instanz wird die folgende Meldung angezeigt:

[Black Widow] detected_master [N'Garai]

Ein Bereits laufende Instanz (master node)

[N'Garai] added {[Black Widow]

Angenommen [N'Garai] und {[Black Widow] um zufällige Knotennamen zu sein.

0
Richa