2013-06-19 16 views
59

Ich möchte einen Elasticsearch-Knoten mit einer neuen Konfiguration neu starten. Was ist der beste Weg, um einen Knoten elegant herunterzufahren?Wie man einen elastischen Suchknoten stoppt/herunterfährt?

Kill den Prozess die beste Möglichkeit zum Herunterfahren des Servers, oder gibt es eine magische URL, die ich verwenden kann, um den Knoten herunterzufahren?

Antwort

114

Aktualisierte Antwort.

_shutdown API wurde in elasticsearch 2.x entfernt.

Einige Optionen:

  • In Ihrem Terminal (dev-Modus im Grunde), nur "Strg-C" Typ

  • Wenn Sie es als Daemon (-d) finden die PID gestartet und töten der Prozess: SIGTERM wird Elasticsearch herunter sauber nach unten (kill -15 PID)

  • Wenn als Dienst laufen so etwas wie service elasticsearch stop läuft:

vorherige Antwort. Es ist jetzt von 1.6 veraltet.

Ja. Siehe admin cluster nodes shutdown documentation

Grundsätzlich gilt:

# Shutdown local node 
$ curl -XPOST 'http://localhost:9200/_cluster/nodes/_local/_shutdown' 

# Shutdown all nodes in the cluster 
$ curl -XPOST 'http://localhost:9200/_shutdown' 
+2

So scheint es, dass die Shutdown-API ab elasticsearch 1.6 veraltet ist (gemäß dem bereitgestellten Link). Was ist die empfohlene neue Methode zum Herunterfahren? – Mike

+2

Ich denke, es ist veraltet, weil Sie es jetzt als Dienst installieren und Service Stop Elasticsearch ausführen können.Wenn Sie es nur für Tests ausführen, drücken Sie STRG + C und Sie sind fertig. – dadoonet

+0

"gracefull" => Sie können Ihre Shard vorher mit der Umleitung API https://www.elastic.co/guide/en/elasticsearch/reference/2.4/cluster-reroute.html –

3

Der Leiter Plugin für Elasticsearch bietet ein großes Web-basiertes Frontend für Elasticsearch Verwaltung, einschließlich Knoten heruntergefahren. Es kann auch alle Elasticsearch-Befehle ausführen.

1

Nur falls Sie PID der Instanz zu finden und den Prozess zu beenden, unter der Annahme, dass der Knoten auf Port 9300 lauscht (der Standard-Port) können Sie den folgenden Befehl ausführen:

kill -9 $(netstat -nlpt | grep 9300 | cut -d ' ' -f 58 | cut -d '/' -f 1) 

Sie können muss mit den Nummern im oben genannten Code wie 58 und 1 spielen

5

Wenn Sie nur neue Konfiguration anwenden möchten, müssen Sie es nicht herunterfahren.

$ sudo service elasticsearch restart

Aber wenn Sie Herunterfahren es trotzdem:

$ sudo service elasticsearch stop

+0

die Frage ist über das Anhalten des Dienstes, nicht neu starten. –

+0

müssen Sie den Server herunterfahren, um eine neue Konfiguration anzuwenden. es ist keine Antwort, es ist eine Lösung für sein Problem :) –

0

Wenn Sie nicht finden können, welcher Prozess Elasticsearch auf Windows-Rechner läuft, können Sie laufen in der Konsole versuchen:

netstat -a -n -o 

Suchen Sie nach Port elasticsearch wird ausgeführt, Standard ist 9200.Die letzte Spalte ist die PID für den Prozess, der diesen Port verwendet. Sie können es mit einem einfachen Befehl in der Konsole herunterfahren

taskkill /PID here_goes_PID /F 
0

Verwenden Sie den folgenden Befehl, um die PID des bereits ausgeführten Knotens zu kennen

curl -XGET ‚http://localhost:9200/_nodes/process

Es dauerte eine Stunde, um die Art und Weise, um herauszufinden, um den Knoten zu töten und konnte es schließlich nach diesem Befehl im Terminal-Fenster.

0

Dies funktioniert für mich auf OSX.

pkill -f elasticsearch 
0

Antwort für Elasticsearch innen Docker:

einfach den Docker Behälter stoppen. Es scheint, anmutig zu stoppen, weil es protokolliert:

[INFO ][o.e.n.Node    ] [elastic] stopping ... 
1

den Dienst beenden und den Dämon sind in der Tat die richtigen Wege zur Abschaltung eines Knoten zu töten. Es wird jedoch nicht empfohlen, dies direkt zu tun, wenn Sie einen Knoten für die Wartung abbauen möchten. Wenn Sie keine Repliken haben, verlieren Sie Daten.

Wenn Sie einen Knoten direkt herunterfahren, wartet Elasticsearch auf 1 m (Standardzeit), damit es wieder online geht. Wenn dies nicht der Fall ist, wird es beginnen, die Shards von diesem Knoten anderen Knoten zuzuordnen, die viel IO verschwenden.

Ein typischer Ansatz wäre vorübergehend Scherbe Zuordnung zu deaktivieren, indem Sie die Ausgabe:

PUT _cluster/settings 
{ 
    "persistent": { 
    "cluster.routing.allocation.enable": "none" 
    } 
} 

Nun, wenn Sie einen Knoten herunternehmen, ES wird nicht versuchen Scherbe zu anderen Knoten aus diesem Knoten zuweisen und Sie können führen Sie Wartungsarbeiten und dann, sobald der Knoten nach oben ist, können Sie Scherbe Zuordnung wieder aktivieren:

PUT _cluster/settings 
{ 
    "persistent": { 
    "cluster.routing.allocation.enable": "all" 
    } 
} 

Quelle: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/restart-upgrade.html

Wenn Sie keine Replikate für alle Ihre Indizes haben, führt die Ausführung dieser Art von Aktivität bei einigen Indizes zu Ausfallzeiten. Eine sauberere Art und Weise in diesem Fall wäre all die Scherben zu anderen Knoten zu migrieren, bevor Sie den Knoten nach unten nehmen:

PUT _cluster/settings 
{ 
    "transient" : { 
    "cluster.routing.allocation.exclude._ip" : "10.0.0.1" 
    } 
} 

Dadurch wird alle Scherben von 10.0.0.1 zu anderen Knoten verschieben (die Zeit wird in Abhängigkeit von den Daten übernehmen). Sobald alles erledigt ist, können Sie den Knoten beenden, Wartungsarbeiten durchführen und ihn wieder online schalten. Dies ist eine langsamere Operation und ist nicht erforderlich, wenn Sie über Replikate verfügen.

(statt _IP, _id, _name mit Wildcards wird gut funktionieren.)

Weitere Informationen: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/allocation-filtering.html

Andere Antworten haben erklärt, wie ein Prozess zu töten.

Verwandte Themen