Elasticsearch6.4集群報yellow和red狀態問題
阿新 • • 發佈:2018-11-02
就是 sha 處理 rds rep cat 分片 img 常見 集群非green狀態都是非健康狀態,是需要處理的
處理方法: 過濾查看所有未分配索引的方式, curl -s "http://localhost:9200/_cat/shards" | grep UNASSIGNED結果,第一列表示索引名,第二列表示分片編號,第三列p是主分片,r是副本
集群 red 狀態
原因: 表示所有的主分片都未必健康可用,一般是由於某個索引的主分片為 unassigned 狀態引起的
處理方法: 找出分片為 unassigned 狀態的索引,手工分配即可。
官方文檔的詳細說明請添加鏈接描述
通過curl GET http://{ESIP}:9200/_cluster/health?level=indices 找出是哪個索引狀態為 red ,如果索引重要則修復,如果不重要則delete掉,方法見下面 “修復 red 或 yellow 方法實踐”
集群 yellow 狀態
原因: 表示所有主分片健康可用,但副片都未必可用,最常見的情景是單節點時,主分片和副本不能在同一個節點上,所以副本就是未分配unassigned
`curl -s "http://{ESIP}:9200/_cat/shards" | grep UNASSIGNED
eslog1 3 p UNASSIGNED
eslog1 3 r UNASSIGNED
eslog1 1 p UNASSIGNED
eslog1 1 r UNASSIGNED`
修復 red 或 yellow 方法實踐
知道哪個索引的哪個分片就開始手動修復,通過reroute的allocate分配
curl -XPOST ‘{ESIP}:9200/_cluster/reroute‘ -d ‘{ "commands" : [ { "allocate" : { "index" : "eslog1", --索引名 "shard" : 4, "node" : "es1", --分配的節點名 "allow_primary" : true } } ] }‘
分配副本時必須要帶參數"allow_primary" : true, 不然會報錯
當集群中es版本不同時,如果這個未分配的分片是高版本生成的,不能分配到低版本節點上,反過來低版本的分片可以分配給高版本,如果遇到了,只要升級低版本節點的ES版本即可
Elasticsearch6.4集群報yellow和red狀態問題