Elasticsearch 集群规划之内存、磁盘、节点数、分片数的问题

 这篇文章主要包括以下几个点展开,一个是内存分配的问题,一个是节点数的问题,一个是分片数量的问题,还有就是磁盘的问题。这是我目前遇到的一些最需要考虑的问题,我看了很多文章,进行一些摘录。

 

# # 集群规模和容量规划预估方法

容量规划——预估集群中每个节点的分片数、内存及存储资源。

吞吐量规划——以预期的延迟和吞吐量估算处理预期操作所需的内存,计算和网络资源。

以上的任何一个问题,都会直接成为瓶颈。

 

# # 磁盘相关,容量评估

第一,问自己几个问题:

您每天将索引多少原始数据(GB)?

您将保留数据多少天?

每天增量数据是多少?

您将强制执行多少个副本分片?

您将为每个数据节点分配多少内存?

您的内存:数据比率是多少?

第二,预留存储以备错误。(Elastic 官方推荐经验值)

预留 15%警戒磁盘水位空间。

为错误余量和后台活动预留+ 5%。

保留等效的数据节点以处理故障。

第三,容量预估计算方法如下:

总数据量(GB) = 原始数据量(GB) /每天 X 保留天数 X 净膨胀系数 X (副本 + 1)

磁盘存储(GB) = 总数据量(GB)* ( 1 + 0.15 + 0.05)

数据节点 = 向上取证(磁盘存储(GB)/ 每个数据节点的内存量 / 内存:数据比率)+ 1

Tips:腾讯云 在 2019 4 月的 meetup 分享中建议:磁盘容量大小 = 原始数据大小 * 3.38。

 

# # 分片数的问题

分片预估
第一,问自己几个问题:

您将创建多少索引?

您将配置多少个主和副本分片?

您将在什么时间间隔旋转索引?

您将保留索引多长时间?

您将为每个数据节点分配多少内存?

第二,经验值(Elastic 官方推荐)

每 GB JVM 堆内存支持的分片数不超过 20 个。

每个分片大小不要超过 50GB。推荐阅读:https://www.elastic.co/cn/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster

Tips:

将小的每日索引整合为每周或每月的索引,以减少分片数。

将大型(> 50GB)每日索引分拆分成小时索引或增加主分片的数量。

第三,分片预估方法如下:

总分片数 = 索引个数 X 主分片数 * (副本分片数 +1)X 保留间隔

 

# # 节点数

总数据节点个数 = 向上取整(总分片数 / (20 X 每个节点内存大小))

 

# # 总结 

 对于集群规划,我的理解是从计算数据量开始的,这个时候就要确定硬盘的大小了,加上冷热分备的原理,这里可以考虑使用固态硬盘来做提升,这个问题也是我最关心的。后边会出一个使用固态硬盘的数据对比。

  整体来讲的话是一个倒推的过程:

 确定数据的总量以后,就可以根据分片原则确定分片数量(原则是上限为50G,20~30G为最佳);

  所以(总的预估的数据量 + 预估增长的总量) /  20 = 总分片数 

 再根据每跟个分片都要占有一定大小堆内存的原则,可以确定总的堆内存(原则就是:每 GB JVM 堆内存支持的分片数不超过 20 个)

    所以 : 总的堆内存 = 总分片数 / 20 

 最后根据每个节点堆内存的分配不要超过32G 的原则

 所以 节点数 = 总的堆内存 / 31 

 

PS ~ 待补充

# # 使用固态硬盘对集群带来的提升

 

# #  在预算的基础上,增加节点,带来的提升

 

# #  在预算的基础上,增加堆内存带来的提升

 

参考:https://blog.csdn.net/laoyang360/article/details/103545432

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值