ES問題處理

elasticsearch 節點重啓問題

ElasticSearch集羣的高可用和自平衡方案會在節點掛掉(重啓)後自動在別的結點上覆制該結點的分片,這將導致了大量的IO和網絡開銷。
如果離開的節點重新加入集羣,elasticsearch爲了對數據分片(shard)進行再平衡,會爲重新加入的節點再次分配數據分片(Shard), 當一臺es因爲壓力過大而掛掉以後,其他的es服務會備份本應那臺es保存的數據,造成更大壓力,於是整個集羣會發生雪崩。
生產環境下建議關閉自動平衡。


數據分片與自平衡
關閉自動分片,即使新建index也無法分配數據分片

put  http://localhost:9092/_cluster/settings
   {
        "transient" : {
            "cluster.routing.allocation.enable" : "none"
        }
    }

重啓一個節點

啓動自動分片
put  http://localhost:9092/_cluster/settings
{
    "transient" : {
        "cluster.routing.allocation.enable" : "all"
    }
}

關閉磁盤百分比使用限制

PUT /_cluster/settings
{
    "transient" : {
        "cluster.routing.allocation.disk.threshold_enabled" : false
    }
}

elasticsearch集羣Unassigned Shards 無法reroute的問題

#解決elasticsearch集羣Unassigned Shards 無法reroute的問題
#!/bin/bash
IFS=$'\n'
for line in $(curl -s 'http://10.21.2.215:9200/_cat/shards' | fgrep UNASSIGNED); do
  INDEX=$(echo $line | (awk '{print $1}'))
  SHARD=$(echo $line | (awk '{print $2}'))
  echo $INDEX
  echo  $SHARD
  curl -XPOST 'http://10.21.2.215:9200/_cluster/reroute' -d '{  
     "commands": [  
        {  
            "allocate": {  
                "index": "'$INDEX'",  
                "shard": '$SHARD',  
                "allow_primary": true  
          }  
        }  
    ]  
  }'
done
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章