跳至内容

如果我的 OpenSearch Service 集群中的分片分配不均匀,如何重新平衡?

1 分钟阅读
0

我的 Amazon OpenSearch Service 域中的磁盘空间在节点间分配不均匀。因此,磁盘使用量严重偏差。

简短描述

由于以下原因,磁盘使用量可能会严重偏差:

  • 集群中的分片大小不均匀。OpenSearch Service 将分片数量平均分配到各个节点,但是不同的分片大小需要不同的磁盘空间量。
  • 节点上的可用磁盘空间。有关详细信息,请参阅 Elastic 网站上的 Disk-based shard allocation settings
  • 分片分配策略不正确。

要重新平衡 OpenSearch Service 集群中的分片分配,请完成一种或多种解决方法。

解决方法

检查分片分配、分片大小和索引分片策略

要检查分配给每个节点的分片数量以及每个节点上使用的磁盘空间量,请运行以下 API:

GET _cat/allocation?v

要检查分配给每个节点的分片以及每个分片的大小,请运行以下 API:

GET _cat/shards?v

**注意:**之前的 API 输出显示了分片的大小是否会因不同的索引而变化。

索引的分片策略不均匀会导致数据偏差。要检查索引的分片策略,请运行以下 API:

GET _cat/indices?v

检查各索引的分片大小是否相等

如果索引大小差异很大,则在达到特定索引大小时,使用滚动 API 创建新索引。有关详细信息,请参阅 Elastic 网站上的 Roll over to a new index。或者,您可以使用索引状态管理 (ISM) 为 OpenSearch Service 7.1 及更高版本创建新索引。有关如何使用 ISM 滚动别名的详细信息,请参阅 Open Distro 网站上的 rollover

将分片大小保持在 10 GB 到 50 GB 之间以获得更好的性能

如果您有大量实例类,请使用 OpenSearch Service 的拍字节规模来确定分片大小。例如,具有多个 i3.16xlarge.search 实例的 OpenSearch Service 域可以支持最大为 100 GB 的分片大小,因为有更多可用资源。有关分片策略的详细信息,请参阅选择分片数量

向您的 OpenSearch Service 集群添加更多数据节点

如果您的 OpenSearch Service 集群的磁盘使用率很高,请向集群添加更多数据节点。添加数据节点还会增加更多资源以提高集群性能。

**注意:**当可用存储空间不足时,OpenSearch Service 不会自动重新平衡集群。因此,如果数据节点耗尽了未使用的存储空间,则集群会阻止任何写入。有关存储空间管理的详细信息,请参阅如何解决我的 OpenSearch Service 域的存储空间不足问题?

更新您的分片策略

默认情况下,OpenSearch Service 的分片策略为 5:1,其中每个索引分为五个主分片。在每个索引中,每个主分片也有自己的副本。OpenSearch Service 会自动将主分片和副本分片分配给单独的数据节点,并确保在出现故障时有备份。

要修改 OpenSearch Service 的默认行为,请设计索引,使分片按大小均匀分配。

对于现有索引,使用重新索引 API 更改主分片的数量。有关详细信息,请参阅 Elastic 网站上的重新索引文档。重新索引 API 可以将较小的索引合并为更大的索引,或者拆分较大的索引。当较大的索引被拆分为更多的主分片时,分片大小会减小。

对于新索引,使用索引模板 API 来定义主分片和副本分片的数量。有关详细信息,请参阅 Elastic 网站上的创建或更新索引模板

然后,更新分片的索引设置。有关详细信息,请参阅 Elastic 网站上的更新索引设置

删除旧的或未使用的索引以释放磁盘空间

OpenSearch Service 或 Elasticsearch 版本 6.8 或更高版本支持 ISM。凭借 ISM,您可以定义自定义管理策略,以便在规定的期限之后删除旧的或未使用的索引。

相关信息

计算存储要求

开始使用 Amazon Elasticsearch Service: 我需要多少分片?

AWS 官方已更新 1 年前