Ich möchte einen Elasticsearch-Knoten mit einer neuen Konfiguration neu starten. Was ist der beste Weg, um einen Knoten ordnungsgemäß herunterzufahren?
Ist das Beenden des Prozesses der beste Weg, um den Server herunterzufahren, oder gibt es eine magische URL, mit der ich den Knoten herunterfahren kann?
quelle
Wenn Sie nur eine neue Konfiguration anwenden möchten, müssen Sie diese nicht herunterfahren.
$ sudo service elasticsearch restart
Aber wenn Sie es trotzdem herunterfahren möchten:
$ sudo service elasticsearch stop
ODER
$ sudo systemctl stop elasticsearch.service
$ sudo systemctl restart elasticsearch.service
Docker:
docker restart <elasticsearch-container-name or id>
quelle
Dies funktioniert bei mir unter OSX.
quelle
Das Beenden des Dienstes und das Beenden des Dämons sind in der Tat die richtigen Methoden, um einen Knoten herunterzufahren. Es wird jedoch nicht empfohlen, dies direkt zu tun, wenn Sie einen Knoten zur Wartung herunterfahren möchten. Wenn Sie keine Replikate haben, gehen Daten verloren.
Wenn Sie einen Knoten direkt herunterfahren, wartet Elasticsearch 1 m (Standardzeit), bis er wieder online ist. Wenn dies nicht der Fall ist, werden die Shards von diesem Knoten anderen Knoten zugewiesen, wodurch viel E / A verschwendet wird.
Ein typischer Ansatz wäre, die Shard-Zuweisung vorübergehend zu deaktivieren, indem Folgendes ausgegeben wird:
Wenn Sie jetzt einen Knoten herunterfahren, versucht ES nicht, Shard von diesem Knoten anderen Knoten zuzuweisen, und Sie können Ihre Wartungsaktivität ausführen. Sobald der Knoten aktiv ist, können Sie die Shard-Zuweisung erneut aktivieren:
Quelle: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/restart-upgrade.html
Wenn Sie nicht für alle Ihre Indizes Replikate haben, führt die Ausführung dieser Art von Aktivität bei einigen Indizes zu Ausfallzeiten. In diesem Fall wäre es sauberer, alle Shards auf andere Knoten zu migrieren, bevor der Knoten heruntergefahren wird:
Dadurch werden alle Shards von
10.0.0.1
anderen Knoten verschoben (dies dauert je nach Daten einige Zeit). Sobald alles erledigt ist, können Sie den Knoten beenden, Wartungsarbeiten durchführen und ihn wieder online schalten. Dies ist ein langsamerer Vorgang und nicht erforderlich, wenn Sie über Replikate verfügen.(Anstelle von _ip, _id funktioniert _name mit Platzhaltern einwandfrei.)
Weitere Informationen: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/allocation-filtering.html
Andere Antworten haben erklärt, wie man einen Prozess beendet.
quelle
Das Head-Plugin für Elasticsearch bietet ein großartiges webbasiertes Front-End für die Elasticsearch-Verwaltung, einschließlich des Herunterfahrens von Knoten. Es können auch beliebige Elasticsearch-Befehle ausgeführt werden.
quelle
Verwenden Sie den folgenden Befehl, um die PID des bereits ausgeführten Knotens zu ermitteln.
Ich brauchte eine Stunde, um herauszufinden, wie ich den Knoten töten kann, und konnte es schließlich tun, nachdem ich diesen Befehl im Terminalfenster verwendet hatte.
quelle
Wenn Sie nicht finden können, welcher Prozess elasticsearch auf einem Windows-Computer ausführt, können Sie versuchen, ihn in der Konsole auszuführen:
Suchen Sie nach Port Elasticsearch wird ausgeführt, Standard ist
9200
. Die letzte Spalte enthält die PID für den Prozess, der diesen Port verwendet. Sie können es mit einem einfachen Befehl in der Konsole herunterfahrenquelle
Nur für den Fall, dass Sie die PID der Instanz ermitteln und den Prozess beenden möchten, können Sie den folgenden Befehl ausführen, vorausgesetzt, der Knoten überwacht Port 9300 (den Standardport):
Möglicherweise müssen Sie mit den Zahlen im oben genannten Code wie 58 und 1 spielen
quelle
Antwort für Elasticsearch in Docker:
Stoppen Sie einfach den Docker-Container. Es scheint anmutig anzuhalten, weil es protokolliert:
quelle
Angenommen, Sie haben 3 Knoten.
Bereiten Sie Ihren Cluster vor
Beenden Sie den Elasticsearch-Dienst in jedem Knoten
Cluster erneut starten
Getestet auf Elasticseach 6.5
Quelle:
quelle
Wenn Sie einen Knoten auf localhost ausführen, versuchen Sie ihn zu verwenden
brew service stop elasticsearch
Ich starte elasticsearch auf iOS localhost.
quelle