Elasticsearch yellow 意味着主分片可用,副本不可用

摘自:http://unasm.com/2016/11/644/

在通过 /_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 发现大磁盘的使用量 刷刷的上升。

上一篇:当集群为red或者yellow的时候怎么办


下一篇:[React Native] Disable and Ignore Yellow Box Warnings in React Native