es動態分配分片 ES磁碟分配不均問題

2021-10-13 02:35:19 字數 1182 閱讀 8317

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

es動態分配分片 ES集群分片及副本調整

分片shardses是個分布式的搜尋引擎,所以索引通常都會分解成不同部分,而這些分布在不同節點的資料就是分片.es自動管理和組織分片,並在必要的時候對分片資料進行再平衡分配 副本replicas為了提公升訪問壓力過大是單機無法處理所有請求的問題,elasticsearch集群引入了副本策略repli...

c 動態分配分割槽演算法

include using namespace std const int maxnumber 100 int freepartition maxnumber int processneed maxnumber int n,m int i,j,k,x,y,z int b maxnumber int ...

記一次線上環境 ES 主分片為分配故障

elasticsearch 版本 5.2 集群節點數 5 索引主分片數 5 索引分片副本數 1 線上環境es儲存的資料量很大,當天由於儲存故障,導致一時間 5個節點的 es 集群,同時有兩個節點離線,乙個節點磁碟唯讀 機房小哥不會處理,無奈只有清空資料重新安裝系統 乙個節點重啟後,es集群報個別索引...