当集群中个别节点出现故障预警等状况,须要进行退役工做,即让全部位于该退役节点上的分片的数据分配到其余节点上后,再将此节点关闭并从集群中移除。
一、ES提供了让某个节点上全部数据都移走的功能以下:
ElasticSearch集群就会自动把这个节点上的全部分片,都自动转移到其余节点上,等到转移完成,这个空节点就能够毫无影响的下线。html
curl -XPUT 127.0.0.1:9200/_cluster/settings -d '{ "transient" :{ "cluster.routing.allocation.exclude._ip" : "10.0.0.1" } }'
二、当shard都迁移走后,就能够将此机器上的ES进程关闭
三、能够在管理页面上删除此节点的ES服务角色node
退役ElasticSearch server 节点时,在页面上进行删除该节点后,replia不为0的index恢复过来,可是致使副本为0的index未能进行shard的分配,致使集群始终是red状态。
方式一:跟客户确认该未成功分配分片的索引有没有用,没用就直接删除便可。
方式二:
一、查看ES集群的健康情况curl -XGET http://localhost:9200/_cluster/health\?pretty
二、查找未分配的分配curl -s "http://localhost:9200/_cat/shards" | grep UNASSIGNED
json
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{ "commands" : [ { "allocate" : { "index" : "rs_wx_test",#unsigned 的索引 "shard" : 1,#出现unsigned的切片编号 "node" : "AfUyuXmGTESHXpwi4OExxx",#目标节点 "allow_primary" : true } } ] }'
方式三:增长节点数或者减小副本数:
这里选择减小副本数为为例:app
curl -H "Content-Type: application/json" -XPUT 'localhost:9200/employee/_settings?pretty' -d '{ "number_of_replicas": 1 #之前副本数为2的时候出现了shards unsigned,现将副本数设置为1,恢复正常 }'