1. 程式人生 > >Elasticsearch yellow 意味著主分片可用,副本不可用

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

sta stat 通過 init 兩個 nds art ini nasm

在通過 /_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 發現大磁盤的使用量 刷刷的上升。

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