本系列文章翻譯ES官方8.0版本文檔。本章對應內容地址 Total shards per node
因為水平有限,翻譯內容難免存在錯漏,歡迎大家指出
單節點最大分片數
集群級的分配器會嘗試將索引的分片盡可能分配到更多的不同節點上,但是由於索引和分片的數量以及大小通常很難將分片分配的完全均勻。
ES提供一個可動態配置的參數index.routing.allocation.total_shards_per_node
來限制單個節點上每個索引允許的最大分片數量,默認為無限制。也可以通過參數cluster.routing.allocation.total_shards_per_node指定該節點允許的最大分片總數(所有所有的分片總數),默認為-1無限制。
Elasticsearch在進行分片分配時會讀取並使用這些配置,例如一個有三個節點的集群中cluster.routing.allocation.total_shards_per_node設置為100,三個節點的分片情況如下
- Node A 100個分片
- Node B 98個分片
- Node C 1個分片
如果節點C離線,那么節點C的分片將會分配到節點B,因為節點A已達到分片數上限。