如何优化 Elasticsearch 磁盘空间和使用率

解释如何预防和处理磁盘过满(利用率过高)和磁盘容量利用率不足的情况。

刚接触 Elasticsearch 吗?欢迎参加我们的 Elasticsearch 入门网络研讨会。您也可以开始免费云服务试用,或立即在您的计算机上试用 Elastic。

磁盘管理对任何数据库都很重要,Elasticsearch 也不例外。如果没有足够的可用磁盘空间,Elasticsearch 将停止向节点分配分片。这将最终导致您无法向群集写入数据,并有可能导致应用程序中的数据丢失。另一方面,如果磁盘空间过大,则需要为超出需要的资源付费。

水印背景

Elasticsearch 集群上有各种 "水印 "阈值,可帮助您跟踪可用磁盘空间。当节点上的磁盘填满时,第一个越过的阈值就是 "低磁盘水印"。 第二个阈值就是 "高磁盘水印阈值"。 最后,将达到 "磁盘淹没阶段"。一旦过了这个阈值,群集就会阻止写入已通过水印的节点上有一个分片(主分片或副本)的所有索引。 仍可进行读取(搜索)。

如何预防和处理磁盘过满(利用率过高)的情况

有多种方法可以处理 Elasticsearch 磁盘过满的情况:

  1. 删除 旧数据:通常情况下,数据不应无限期保存。防止和解决磁盘过满的方法之一是确保当数据达到一定年限时,对其进行可靠的归档和删除。一种方法是使用ILM
  2. 增加存储容量:如果无法删除数据,可能需要添加更多数据节点或增加磁盘大小,以便在不影响性能的情况下保留所有数据。如果需要为群集增加存储容量,则应考虑是否只需增加存储容量,还是同时按比例增加存储容量以及 RAM 和 CPU 资源(请参阅下文有关磁盘大小、RAM 和 CPU 比例的部分)。

如何为 Elasticsearch 集群增加存储容量

  1. 增加数据节点的数量: 请记住,新节点的大小应与现有节点相同,并使用相同的 Elasticsearch 版本。
  2. 扩大现有节点的规模: 在基于云的环境中,增加现有节点的磁盘大小和内存/CPU 通常很容易。
  3. 只增加磁盘大小: 在基于云的环境中,增加磁盘大小通常相对容易。
  4. 快照 恢复如果您愿意让旧数据根据要求通过自动流程从备份中检索出来,您可以对旧索引进行快照、删除,并根据要求从快照中临时恢复数据。
  5. 减少每个分片的副本数量:减少数据的另一个方法是减少每个分片的副本数量。为了实现高可用性,您希望每个分片有一个副本,但当数据变旧时,您可能不需要副本也能工作。如果数据是持久性的,或者您有备份可以在需要时恢复,那么这种方法通常是可行的。
  6. 创建警报:为了防止磁盘将来被填满并采取主动行动,应根据磁盘使用情况创建警报,以便在磁盘开始填满时发出通知。

如何预防和处理磁盘容量利用不足的情况

如果磁盘容量未得到充分利用,有多种选择可以减少群集的存储容量。

如何减少 Elasticsearch 集群的存储容量

减少群集存储容量的方法有很多种。

1.减少数据节点数量

如果你想减少数据存储,同时按相同比例减少 RAM 和 CPU 资源,那么这是最简单的策略。停用不必要的节点可能会节省最大的成本。

在停止节点运行之前,您应该

  • 确保要停用的节点不需要作为 MASTER 节点。应始终至少有三个节点具有 MASTER 节点角色。
  • 将数据碎片从要退役的节点上移走。

2.用较小的节点取代现有节点

如果无法进一步减少节点数量(通常最低配置为 3 个),则可能需要缩小现有节点的规模。请记住,最好确保所有数据节点的 RAM 内存和磁盘大小相同,因为分片是根据每个节点的分片数量进行平衡的。

过程如下

  • 向群集添加新的、较小的节点
  • 将碎片迁移到远离将要退役的节点的地方
  • 关闭旧节点

3.缩小节点上的磁盘大小

如果只想减少节点上的磁盘大小,而不改变群集的整体 RAM 或 CPU,那么可以减少每个节点的磁盘大小。减少 Elasticsearch 节点上的磁盘大小并非易事。

最简单的方法通常是

  • 从节点迁移碎片
  • 停止节点
  • 在节点上挂载新数据卷,并设置适当大小
  • 将旧磁盘卷中的所有数据复制到新卷中
  • 分离旧卷 A
  • 启动节点并将碎片迁移回节点

这就要求其他节点上有足够的容量,以便在此过程中临时存储节点上的额外碎片。在许多情况下,管理这一流程的成本可能会超过潜在的磁盘使用节余。因此,用具有所需磁盘大小的新节点完全替换该节点可能更简单(请参阅上文 "用较小节点替换现有节点")。

在为不必要的资源付费时,显然可以通过优化资源利用率来降低成本。

磁盘大小、内存和 CPU 之间的关系

集群中磁盘容量与内存的理想比例取决于您的具体使用情况。因此,在考虑更改存储容量时,还应考虑当前的磁盘/内存/CPU 比例是否适当平衡,以及是否需要按相同比例增加/减少内存/CPU。

内存和 CPU 需求取决于索引活动量、查询次数和类型,以及搜索和汇总的数据量。这通常与群集上存储的数据量成正比,因此也应与磁盘大小相关。

磁盘容量和内存之间的比例可根据使用情况进行调整。请看这里的几个例子:

指数活动保留搜索活动磁盘容量内存
企业搜索应用程序适度摄入原木灯光2TB32GB
应用程序监控大量摄入原木灯光1TB32GB
电子商务轻型数据索引无限期重型500GB32GB

请记住,修改节点机器配置时必须小心谨慎,因为这可能会导致节点宕机,而且需要确保分片不会开始迁移到其他已经过度紧张的节点上。

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用