近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來設置時間間隔。