重启elasticsearch节点

53 java scala elasticsearch

在elasticsearch中重启节点的正确方法是什么?(最好通过REST API,java API也可以)

DrT*_*ech 66

重启节点的正确方法是使用shutdown API或向TERM进程发送信号(例如with kill $PID)将其关闭.

关闭后,您可以使用您用于运行elasticsearch的任何内容启动新节点,例如服务包装器,或者只是从命令行启动它.

如果您正在使用服务包装器,则可以通过向其传递restart命令来重新启动节点:例如,/etc/init.d/elasticsearch restart但这只是上述的便利包装器.

restart自版本0.11以来,API已被禁用,因为它存在问题.

  • 使用通常的linux服务重启工具重新启动会导致分片重新分配过程(我使用elasticsearch-head插件观察).在我的环境中,我看到分配给重新启动的节点的所有分片都进入UNASSIGNED状态并逐渐重新分配.是否有更简洁的方法来重新启动服务,以便可以减少完整分片重新分配过程的命中? (6认同)

Kim*_*bel 7

有一个类似于shutdown API的重启API.只需将"shutdown"替换为"restart"即可.另请参阅github上问题.

  • @tzofia你是否成功使用_restart API?您是否从服务层运行ES实例?我问这是因为在Windows下,我收到以下错误:`ElasticSearchIllegalStateException [restart is disabled(for now)....]` (2认同)
  • 我在这个问题上添加了评论:https://github.com/elasticsearch/elasticsearch/issues/155#issuecomment-11816367等等,看看Shay的回答.;-) (2认同)

Tia*_*opo 7

每次节点出现故障和/或新节点出现时,集群都会重新分配分片,这在您只需要重新启动节点时可能不需要,因此您可以使用Rolling restart:

  1. 首先禁用分片分配:

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

  2. 重启节点 service elasticsearch restart

  3. 启用分片分配:

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

更多相关内容:这里

  • @direvus这是正常的性能,因为你停止分配,不同节点上的数据不平衡,一些分片可能未分配。如果您想减少重新定位持续时间,请尝试提高恢复速度或增加分配并发度:“indices.recovery.max_bytes_per_sec”和“cluster.routing.allocation.node_concurrent_recoveries”。 (2认同)

Ash*_*ich 5

对于重新启动elasticserch服务,首先检查状态,然后重新启动,这样就可以清楚地看到情况

sudo service elasticsearch.service status -l    
sudo service elasticsearch.service restart
Run Code Online (Sandbox Code Playgroud)

  • 如果您添加一些与您提供的命令相关的上下文,这个答案将会改善很多。 (2认同)