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

1 分钟阅读
0

Amazon OpenSearch Service 域中的磁盘空间在节点间分布不均匀。因此,磁盘使用将发生严重倾斜。

简短描述

磁盘使用可能会因为以下原因发生严重倾斜:

  • 集群中分片大小不均匀。尽管 OpenSearch Service 在节点之间均匀分布分片数量,但不同的分片大小要求不同的磁盘空间量。
  • 节点上的可用磁盘空间。有关更多信息,请参阅 Elasticsearch 网站上的基于磁盘的分片分布
  • 不正确的分片分配策略。有关更多信息,请参阅Demystifying OpenSearch Service 分片分配

要重新平衡 OpenSearch Service 集群中的分片分配,请考虑以下方法:

  • 检查分区分配、分区大小和索引分区策略。
  • 确保索引间的分区大小相等。
  • 将分区大小保持在 10GB 与 50GB 之间,以获得更好的性能。
  • 添加更多的数据节点到您的 OpenSearch Service 集群中。
  • 更新您的分区策略。
  • 删除旧索引或未使用的索引,以释放磁盘空间。

解决方法

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

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

GET _cat/allocation?v

要检查分配给每个节点的分区和每个分区的大小,请使用以下 API:

GET _cat/shards?v

**注意:**此 API 显示,不同索引的分片大小可能会有所不同。

不均匀的索引分片策略可能会导致数据倾斜。在这种情况下,较大索引的分片仅存在于几个节点上。要检查索引分片策略,请使用以下 API:

GET _cat/indices?v

确保索引间的分片大小相等

如果索引大小有很大不同,请使用翻转索引 API 在达到特定索引大小时创建新索引。或者,您可以使用索引状态管理(ISM)为 OpenSearch Service 7.1 版及以上版本创建新索引。有关使用 ISM 滚动别名的更多信息,请参阅 Open Distro 网站上的翻转

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

如果您有一个大型的实例类,请使用 Amazon OpenSearch Service 的 PB 级别来确定分片大小。例如,由于有更多可用资源,具有多个 i3.16xlarge.search 实例的 OpenSearch Service 域最多可以支持 100GB 的分片大小。有关分区策略的更多信息,请参阅选择分片数量

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

如果您的 OpenSearch Service 集群已达到较高的磁盘使用水平,则添加更多数据节点到您的集群中。添加数据节点也会添加更多资源,从而提高集群性能。

**注:**如果缺少可用的存储空间,OpenSearch Service 不会自动重新平衡集群。因此,如果某个数据节点未使用的存储空间用完,集群将阻止任何写入操作。有关磁盘空间管理的详细信息,请参阅如何解决我的 Amazon OpenSearch Service 域中存储空间不足的问题?

更新您的分片策略

默认情况下,Amazon OpenSearch Service 的分片策略为 5:1,其中每个索引被分为五个主分片。在每个索引中,每个主分片还有自己的副本。OpenSearch Service 将主分片和副本分片自动分配到单独的数据节点中,并确保有备份可供发生故障时使用。

要修改 OpenSearch Service 的默认行为,请设计您的索引,以便按大小均匀分布分片:

  • 对于现有索引,请使用 reindex(重新索引)API 更改主分区的数量。_reindex API 可用于将较小的索引合并到较大的索引中,或者可用于拆分较大的索引。将较大的索引拆分为更多主分片时,分片大小减小。
  • 对于新索引,请使用索引模板 API 定义主分片和副本分片的数量。

然后,更新分片的索引设置。有关更多信息,请参阅 Elasticsearch 网站上的更新索引设置 API

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

OpenSearch 服务或 Elasticsearch 版本 6.8 或更新版本支持 ISM。使用 ISM,您可以定义自定义管理策略,以使旧索引或未使用的索引在既定持续时间后删除。


相关信息

计算存储需求

开始使用 Amazon OpenSearch Service:我需要多少分区?

相关视频

AWS 官方
AWS 官方已更新 1 年前