参考链接:https://www.elastic.co/guide/en/elasticsearch/guide/current/_rolling_restarts.html
当需要对集群进行顺序安全重启(不暂停业务操作和离线)的时候,把节点依次重启,本文就有可能对你有用。 原因可能有:Elasticsearch升级、操作系统升级或者硬件升级,不管什么原因,我们都需要对集群进行一次重启来完成升级操作; 从本质上讲,Elasticsearch希望你的数据是完整的和均衡的。如果关闭某个节点进行维护,集群将立即检测到该节点的脱离集群, 并开始重新分片数据平衡。这可能是毁灭性的,如果某个节点的维护是短期的,非常大数据的重新平衡可能需要一些时间 (就算是在快速网络条件下,复制1TB的数据,还是很耗费机器和网络资源)。
我们可以设置集群的平衡参数来暂时禁用掉平衡,具体步骤如下:
1.如果可能的话,先暂停掉数据新增和更新操作,这样会提高集群恢复的时间;
2.禁用集群分片平衡操作,直到告诉集群可以恢复平衡操作为止,禁用配置方式:
PUT /_cluster/settings
{
"transient" : {
"cluster.routing.allocation.enable" : "none"
}
}
注意:put操作的时候,如果不是在集群节点上,需要加上完成的路径,如:
curl -XPUT http://192.168.1.2:9200/_cluster/settings -d’
{
“transient” : {
“cluster.routing.allocation.enable” : “none”
}
}’
3.关掉需要维护的节点;
4.执行维护/升级;
5.重启该节点,保证该节点顺利加入到集群中;
6.重启平衡参数配置操作,修改配置方式:
PUT /_cluster/settings
{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}
注意:节点重启完成后,数据的平衡可能需要一段时间,需要等到到集群状态为绿色为止,在进行其他节点的操作;
7.重复步骤2-6完成其他节点的维护操作;
8.如果之前停掉了更新索引的操作,这个时候就可以恢复了。不过要等集群状态健康后,这样能是集群快速恢复健康;