在通过 /_cluster/state 命令查看es 状态的时候,发现es 处于一个yellow的状态, 这个很奇怪,按照官方的解释,就是所有主分片都是处于可用状态,但是有复制分片不可用。为什么有复制分片不可用呢?
通过/_cat/shards 查看,发现有从分配处于一个未分配的状态,该命令该出的数据奇怪的地方是,我的集群明明有三台机器,但是shareds里面只给出了两台。
data 2 r STARTED 449516 1.6gb 100.73.22.5 22-5
data 2 p STARTED 449516 1.6gb 100.73.22.6 22-6
data 2 r UNASSIGNED
然后通过查阅官方手册,查询UNASSIGNED 的原因,然后发现很多种可能性的,但是官方的api 的case里面,shards 是直接给出了原因的,但是我的es却没有给出原因。怎么办呢?在api文档里面找答案,发现了/_cluster/reroute 的命令,一看就知道是救星,既然状态是UNASSIGNED, 我手动指定 该切片到特定的节点,不就可以了么。
执行命令
curl -XPOST ‘100.73.22.5:6200/_cluster/reroute’ -d ‘{
“commands” : [{
"move" : {
"index" : "data",
"shard" : 0,
"from_node" : "22-6" ,
"to_node": "22-5"
}
}]
}’
然后ES报错,从报错信息里面得到一个信息,就是说磁盘空间已经超过了85%,无法执行,然后果然一看,磁盘已经满了。原来之所以只有两个节点,是因为第三个节点不能用导致的。
so,剩下的就很简单,down掉es 进程,然后把 elasticsearch.yml 中的两项path信息,更新到一个更大的磁盘,然后重启服务,ok了。
/_cat/shards发现 切片的状态,已经变成INITIALIZING了。正在同步数据。df -h 发现大磁盘的使用量 刷刷的上升。