一直对ElasticSearch集群的重启有疑惑,因为每个结点重启时,ElasticSearch集群的高可用和自平衡方案会自动在别的结点上复制该重启结点的分片,这定然导致了很大的IO和网络开支。重启一次集群相当于对所有的分片重新部署了一次,而且依次重启结点的时间也很长,需等待集群平衡好了,处于green的状态后才能重启下一个结点。
还好ES本身已考虑了这个问题,官方文档中对于集群重启的解决方案如下:
http://www.elastic.co/guide/en/elasticsearch/reference/1.4/cluster-nodes-shutdown.html
简单来说,重启前关闭分片自动分配机制,重启后再打开即可。
重启前:
curl -PUT http://XXX:9200/_cluster/settings -d
{
"transient": {
"cluster.routing.allocation.enable": "none"
}
}
"transient": {
"cluster.routing.allocation.enable": "none"
}
}
重启后:
{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}