如何解决我的 Amazon Elasticsearch Service 域中存储空间不足的问题?

上次更新日期:2021 年 3 月 25 日

我的 Amazon Elasticsearch Service (Amazon ES) 域存储空间已经耗尽,我收到了错误消息。如何解决此问题?

简短描述

您的 Amazon ES 域对处理工作负载有一定的存储空间要求。您的 Amazon ES 域的存储空间不足可能会导致 ClusterBlockException 错误。当您向 Amazon ES 集群节点分配存储空间时,预留空间不要超过该空间的 20% (20GB)。此外,Linux 等操作系统会保留 5% 的文件系统空间,用于支持根用户执行的任何关键进程。有关 Amazon ES 存储空间要求的更多信息,请参阅计算存储要求

要解决存储空间不足问题,请尝试以下操作:

  • 增加域使用的 Amazon Elastic Block Store (Amazon EBS) 卷的大小。您还可以增加 Amazon ES 域的集群节点数量。
  • 更新集群分片策略,以便在所有节点上均匀分布分片。
  • 减少域中存储的数据量。您可以删除不必要的文件、优化旧的索引,或减少域的副本数。请务必首先手动拍摄快照
    注意:减少域的副本数可以降低容错能力。最佳实践是为每个索引至少配置一个副本。
  • 使用 Amazon CloudWatch FreeStorageSpace 指标来监控集群中的可用存储空间量。要在每次存储空间不足时收到通知,请配置 CloudWatch 警报

根据您的数据存储源,您可能需要结合采用其他故障排除技术。

解决方法

更新存储配置设置

重要事项:在更新配置设置之前,请验证可能触发蓝/绿部署的配置更改。此外,请确保您的专用主节点类型是推荐的节点类型。

要查看集群中各个节点的可用存储空间大小,请运行 cat allocation 命令:

curl ES_Endpoint/_cat/allocation?v

要更新 Amazon ES 域配置设置,请执行以下步骤:

1.    登录您的 AWS 管理控制台。

2.    打开 Amazon ES 控制台

3.    选择要为其添加存储空间的 Amazon ES 域。

4.    选择编辑域

5.    更新域设置。

注意:如果您使用 Amazon EBS 卷进行存储,请更新存储配置设置。或者您可以更新数据节点的数量。

6.    选择 Submit(提交)。

如果您的域使用 Amazon EBS 卷进行数据存储

如果域使用 Amazon EBS 卷进行存储,请考虑以下方法:

  • 增加 EBS 卷的大小最大卷大小取决于节点的 Amazon Elastic Compute Cloud (Amazon EC2) 实例类型或 Elasticsearch 版本类型。例如,512GiB 是 Elasticsearch 1.5 版的最大卷大小。
  • 如果您无法增加 EBS 卷的大小,则可以增加节点数量扩展域,并选择新的 EBS 限制。想要了解更多有关 EBS 卷的信息,请参阅 EBS 卷大小限制
  • 在您的 Amazon Simple Storage Service (Amazon S3) 存储桶中创建不需要的索引的备份。然后,从 Elasticsearch 集群中删除索引以释放磁盘空间。或者,您可以使用 Curator 在 Amazon ES 中轮换数据。您还可以使用索引状态管理在 Amazon ES 中轮换索引。
    注意:您必须设置手动快照存储库才能创建任何备份。

如果您的域使用 Amazon Elastic Compute Cloud (Amazon EC2) I3 实例进行数据存储

如果您使用 Amazon EC2 I3 实例进行数据存储,请考虑以下方法:

  • 添加更多的节点到您的 Elasticsearch 集群中。
  • 向上扩展实例类型以获取更多存储空间。
  • 从 Elasticsearch 集群中删除任何不需要的索引。