存儲容量預估:
副本數量:副本有利于增加數據的可靠性,但同時會增加存儲成本。默認和建議的副本數量為1。
注意:實例的磁盤容量不等于可使用的數據空間大小
Elasticsearch和OpenSearch通常可以將數據壓縮20~30%。
1GB原始數據-> 1*1.2(Json轉換因子)*0.8(壓縮) -> 0.96壓縮比。
磁盤空間使用率(一般建議為70%)。
索引開銷:可以使用 cat/indices?v API 和 __pri.store.size_ 值計算確切的開銷計算,通常比源數據大 10%
操作系統預留空間:默認操作系統會保留5%的文件系統供您處理關鍵流程、系統恢復以及防止磁盤碎片化問題等
因此
存儲容量 = 源數據 * (1 + 副本數量) * 0.96 / (1 - 磁盤使用率)*(1 *索引開銷)*(1 *預留空間) ≈ 源數據 * 2 * 0.96 / 0.7 *1.1 *1.05 = 源數據*3.168。根據原始數據大小,至少要預留大概3倍以上的空間
節點數量預估:
集群建議最大節點數 = 單節點 CPU * 5
單節點磁盤最大容量:
搜索類場景:單節點磁盤最大容量 = 單節點內存大小(GB)* 10。
日志類等場景:單節點磁盤最大容量 = 單節點內存大小(GB)* 50。
通用類等場景:單節點磁盤最大容量 = 單節點內存大小(GB)* 30。
配置 最大節點數 單節點磁盤最大容量 (查詢) 單節點磁盤最大容量 (日志)
4 核 16G 20 160 GB 800 GB
8 核 32G 40 320 GB 1.5 TB
16 核 64G 80 640 GB 2 TB
分片數量規劃:
適用場景:
日志類,寫入頻繁,查詢較少,單個分片 30G 左右
搜索類,寫入少,查詢頻繁,單個分片不超過 20G
每個 Elasticsearch 索引被分為多個分片,數據按哈希算法打散到不同的分片中。由于索引分片的數量影響讀寫性能和故障恢復速度,建議提前規劃。
分片使用概要:
在單節點上,最大分片數量為 1000
單個分片大小盡量保持在 10-50G 之間為最佳體驗,一般推薦在 30G 左右.
分片過大可能使故障恢復速度變慢
分片過小可能導致非常多的分片,因為每個分片會使用占用一些 CPU 和內存,從而導致讀寫性能和內存不足的問題。
當分片數量超過數據節點數量時,建議分片數量接近數據節點的整數倍,便于將分片均勻的分布到數據節點中。