我想用新配置重新啓動一個elasticsearch節點。什麼是正常關閉節點的最佳方式?如何停止/關閉elasticsearch節點?
是否正在終止關閉服務器的最佳方式,或者是否存在一些可用於關閉節點的魔術URL?
我想用新配置重新啓動一個elasticsearch節點。什麼是正常關閉節點的最佳方式?如何停止/關閉elasticsearch節點?
是否正在終止關閉服務器的最佳方式,或者是否存在一些可用於關閉節點的魔術URL?
已更新的答案。
_shutdown
API已在elasticsearch 2.x中刪除。
一些選項:
在你的終端(DEV模式基本上),只需鍵入 「CTRL-C」
如果你開始它作爲一個守護進程(-d
)找到PID,並殺死過程:SIGTERM
將關閉Elasticsearch下來乾淨(kill -15 PID
)
如果作爲服務運行,像service elasticsearch stop
運行的東西:
以前的答案。它現在已經從1.6棄用了。
是的。見admin cluster nodes shutdown documentation
基本上是:
# Shutdown local node
$ curl -XPOST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'
# Shutdown all nodes in the cluster
$ curl -XPOST 'http://localhost:9200/_shutdown'
元首插件Elasticsearch提供Elasticsearch管理一個偉大的基於Web的前端,包括關停節點。它也可以運行任何Elasticsearch命令。
以防萬一你想找到實例的PID,並殺死進程,假設節點偵聽端口9300(默認端口),你可以運行下面的命令:
kill -9 $(netstat -nlpt | grep 9300 | cut -d ' ' -f 58 | cut -d '/' -f 1)
您可能必須使用上述代碼中的數字(例如58和1)
如果您只是想應用新的配置,則不需要關閉它。
$ sudo service elasticsearch restart
但是,如果你想關機也無妨:
$ sudo service elasticsearch stop
問題是關於停止服務,不重新啓動它。 –
doenst需要關閉服務器以應用新的配置。它不是一個答案,它是他的問題的解決方案:) –
如果你不能找到什麼進程正在運行的Windows機器上elasticsearch你可以嘗試在控制檯中運行:
netstat -a -n -o
查找端口elasticsearch正在運行,默認爲9200
。最後一列是使用該端口的進程的PID。您可以使用控制檯中的簡單命令關閉它
taskkill /PID here_goes_PID /F
使用以下命令可知道已在運行的節點的pid。
捲曲-XGET「http://localhost:9200/_nodes/process」
我花了一個小時才找到了殺節點的方式,在終端窗口中使用此命令後,終於可以做到這一點。
這適用於我在OSX上。
pkill -f elasticsearch
內泊塢答案Elasticsearch:
只要停止泊塢窗容器。它似乎停止正常,因爲它記錄:
[INFO ][o.e.n.Node ] [elastic] stopping ...
停止服務,並殺死守護進程確實是正確的方法來關閉一個節點。但是,如果您想取下節點進行維護,則不建議直接執行此操作。事實上,如果你沒有副本,你會丟失數據。
當您直接關閉某個節點時,Elasticsearch將等待1m(默認時間)重新聯機。如果沒有,那麼它將開始將該節點的碎片分配給浪費大量IO的其他節點。
一個典型的方法是通過發出暫時禁用碎片分配:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
現在,當你取下來一個節點,ES不會試圖從該節點分配碎片到其他節點,你可以執行你的維護活動,然後一旦節點已啓動,您可以再次啓用碎片分配:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
來源:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/restart-upgrade.html
如果您沒有所有索引的副本,那麼執行此類活動將在某些索引上發生停機。在這種情況下,一個更清潔的方法是服用節點下來之前將所有碎片到其他節點遷移:
PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}
這將所有碎片擺脫10.0.0.1
到其他節點(需要一定的時間取決於數據)。一切完成後,您可以殺死節點,執行維護並重新聯機。這是一個較慢的操作,如果您有副本,則不需要。
(相反_ip,_id的,_name使用通配符將工作得很好。)
的更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/allocation-filtering.html
其他答案解釋瞭如何殺死一個進程。
因此,從elasticsearch 1.6(根據提供的鏈接)可以看出,shutdown API已被棄用。什麼是推薦的關閉新方法? – Mike
我認爲它已被棄用,因爲您現在可以將其作爲服務安裝並運行服務停止elasticsearch。如果你只是爲了測試而運行它,那麼點擊CTRL + C就完成了。 – dadoonet
「gracefull」=>您可以使用重定向API移動碎片https://www.elastic.co/guide/en/elasticsearch/reference/2.4/cluster-reroute.html –