ES磁盤分配不均問題


近es集群磁盤空間告警,日志又沒地方可以遷移,然后申請了新的服務器,一次性加入8台新的服務器

新增了32個新的數據節點,至此,我們的主集群已經到達85個數據節點的規模,整個集群數據已達到PB級別,終於可以跟別人炫耀我是做大數據的了。O(∩_∩)O哈哈~

 

但是隨着集群節點的不斷壯大,問題也隨之而來,剛開始加入新節點后,發現所有數據分片都會在新節點上,但是過幾天后,發現只有少部分在新節點上。

然后,發現新的數據節點磁盤才使用40%,就不再往這些新節點分配分片了。當時覺得很納悶。

后來翻翻es文檔才發現,es自動均衡是按照分片數來分配的,並不是按照磁盤空間使用率來分配的。頓時恍然大悟。

因為我的集群index是定期關閉的,而且es自動均衡是按照打開的index的分片來自動分配的。所以會導致這種情況

 

我后來的解決辦法就是打開所以index,讓集群自動均衡一下,然后磁盤空間就慢慢均衡了。

 

有時候會出現如下圖磁盤水平線報警問題會導致副本unassigned 

可以在kibana調整es磁盤水平線

put _cluster/settings
{
   "transient":{
       "cluster":{
          "routing":{
               "allocation.disk.watermark.high":"95%",
               "allocation.disk.watermark.low":"90%", 
             }
           }
       }  
}

  

es可以根據磁盤使用情況來決定是否繼續分配shard。默認設置是開啟的,也可以通過api關閉:cluster.routing.allocation.disk.threshold_enabled: false

在開啟的情況下,有兩個重要的設置:

cluster.routing.allocation.disk.watermark.low:控制磁盤最小使用率。默認85%.說明es在磁盤使用率達到85%的時候將會停止分配新的shard。也可以設置為一個絕對數值,比如500M.

cluster.routing.allocation.disk.watermark.high:控制磁盤的最大使用率。默認90%.說明在磁盤使用率達到90%的時候es將會relocate shard去其他的節點。同樣也可以設置為一個絕對值。

watermark setting可以通過update-api動態修改,默認es每隔30s會收集各個節點磁盤的使用情況,可以cluster.info.update.interval來設置時間間隔。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM