管理亚马逊 OpenSearch Service 域中的亚马逊 EBS 容量吞吐量限制

在这篇博客文章中,我们讨论了 亚马逊弹性区块存储 (Amazon EBS) 的容量 IOPS 和吞吐量限制对亚马 逊 OpenSearch Serv ice 域的影响,以及如何预防/缓解吞吐量限制情况。

Amazon OpenSearch Service 是一项托管服务,可让您轻松执行网站搜索、交互式日志分析、实时应用程序监控等。基于开源 OpenSearch 套件,亚马逊 OpenSearch Service 允许您搜索、可视化和分析高达 PB 的文本和非结构化数据。

OpenSearch 服务域主要包含具有以下角色集的节点。

  • 集群管理器(专用主节点): 负责管理集群并检查集群中数据节点的运行状况。
  • 数据:负责提供搜索和索引请求并存储索引数据。
  • Ultrawarm :使用亚马逊 S3 作为后备存储以提供低成本存储的节点。

创建 OpenSearch 服务域时,您可以为具有本地 非易失性存储器 (NVMe) 或 Amazon E BS 卷的数据节点选择存储。

如果 OpenSearch 服务数据节点存储由 Amazon EBS 卷支持,则视您的工作负载而定,EBS 吞吐量可能会严重影响 OpenSearch 服务域的性能。EBS 卷性能指标由以下两个关键参数定义。

  • IOPS 定义每秒执行的 IO 操作数。
  • 吞吐 量 是衡量在给定时间内可以传输多少数据的指标。它通常以每秒字节数来衡量。

每当数据节点的 IOPS 或吞吐量超过数据节点的 EBS 容量或 EC2 实例的最大允许限制时,OpenSearch 服务域就会出现 IOPS 或吞吐量限制。这可能导致较高的搜索和索引延迟,在最坏的情况下还会导致节点崩溃。

数据节点允许的最大 IOPS 和吞吐量

OpenSearch 服务域中 IOPS 的最大允许值或数据节点的吞吐量是以下两个值中的最小值。

  • 允许的最大 IOPS 或数据节点 使用的 Amazon EBS 卷 的吞吐量值。
  • 允许的最大 IOPS 或数据节点的 EBS 优化实例 类型的吞吐量值。

吞吐量限制及其对亚马逊 OpenSearch Service 域的影响

当数据节点上的 EBS 总吞吐量超过 OpenSearch Service 域中该数据节点的最大允许吞吐量值时,就会发生吞吐量限制。

可以在亚马逊 CloudWatch 控制台的以下位置查看域或节点的 ThroughputThrottle 指标。

  • 域名: “es/OpenSearchService > 每个域、每个客户端的指标
  • 节点: “es/openSearchService > 客户端 ID、域名、节点 ID

吞吐量限制指标中的值为 1 表示域或节点发生了限制事件。

如果域中的数据节点持续受到吞吐量限制,则可能导致该数据节点出现以下性能下降。

  • EBS 音量性能较慢。
  • 读/写延迟高。

这可能会影响集群管理器或数据节点执行的检查。它可能导致:

  • 数据节点执行的 FS(文件系统)运行状况检查失败。
  • 由于请求延迟过长,集群管理器执行关注者检查失败。

这将导致集群管理器将此类数据节点标记为不正常,从而导致该数据节点从集群中移除。这可能会导致群集状态变为黄色或红色。

吞吐量值计算

数据节点的总吞吐量是每秒读取和写入 EBS 卷的总字节数。以下指标提供了 Amazon Opensearch 服务域中数据节点的读取和写入吞吐量。

  • readThroughputMicroBursting 考虑微突 发时 EBS 卷上读取操作的吞吐量(以字节每秒为单位)
  • writeThroughputMicroBursting 考虑微突 发时 EBS 卷上写入操作的吞吐量(以字节每秒为单位)

OpenSearch 服务域中数据节点的总吞吐量按以下方式计算。

吞吐量 = 读取吞吐量微突发 + 写入吞吐量微突发

要获得数据节点的总吞吐量,请执行以下步骤。

  1. 转到亚马逊 Cloudwatch 指标。
  2. 前往 es/openSearchService > 客户端 ID、域名、节点 ID
  3. 选择 “ 读取吞吐量微爆发” 和 “写入吞吐量微爆发 ” 指标。
  4. 转到 图表化指标 。
  5. 使用 “添加数学运算” 并创建公式来对 readThroughputMicrobursting 和 WriteThroughputMicroBursting

处理吞吐量限制

当 OpenSearch 服务域中的数据节点上突破允许的最大吞吐量限制时,会向 A WS 控制台发送磁盘吞吐量限制 通知。数据节点上的吞吐量限制可能是由于各种原因造成的,例如以下原因。

  • OpenSearch 服务域的数据节点 的 索引速率 或 搜索率 突然增加。
  • 在高峰时段,OpenSearch 服务域上发生的 蓝/绿 事件。
  • OpenSearch 服务域规模不足。

我们建议采取以下措施来防止 OpenSearch 服务域的吞吐量限制。

  • 监控发往 OpenSearch 服务域的流量,并针对发送到 OpenSearch 服务域的搜索和索引流量创建警报。
  • 为 OpenSearch Service 域设置 非高峰时 段 ,以便在需求减少时执行导致 蓝/绿 部署的更新。
  • 监控 OpenSearch 服务域的 吞吐量限制 集群指标。
  • 监控 Open Se arch 服务域 的分片偏度 。分片偏度可能导致数据节点的流量负载分布不均匀,并可能导致集群中的热节点,这些节点可能会遇到高索引和搜索流量,从而导致节流。
  • 如果您达到数据节点的 EBS 卷或 EC2 实例吞吐量限制,则需要扩展 OpenSearch 服务域以避免吞吐量限制。检查数据节点使用的 EBS 卷 Amazon EBS 优化 实例提供的限制,并相应地向上扩展 OpenSearch 集群。

每种情况都需要具体的调查和适当的措施来解决。尽管如此,我们仍建议将以下准则作为处理吞吐量限制的更广泛方法的一部分。

  • 如果大多数时候在一组特定的数据节点上出现高吞吐量,则分片偏度可能会导致节点变热。在这种情况下,解决分片偏度会有所帮助。
  • 如果 OpenSearch Service 域遇到不均衡的流量模式,请检查是否突然出现突发流量导致了限制。在这种情况下,简化流量模式可能会有所帮助。
  • 如果集群中大多数具有一致流量模式的节点都出现吞吐量限制,则应考虑扩展 OpenSearch Service 域。

结论

在这篇文章中,我们介绍了 OpenSearch 服务域中的 Amazon EBS 吞吐量限制、其影响以及监控和处理它的方法。我们提供了可用于处理此类 限制 情况的建议。

相关链接

  • 亚马逊开放搜索
  • 亚马逊云观察
  • 亚马逊 EBS
  • 亚马逊 EC2

作者简介

Pranit Kumar 是一名高级软件开发工程师,在亚马逊网络服务部工作 OpenSearch。他对分布式系统和解决复杂问题感兴趣。

Dhrubajyoti Das 是一名工程经理,在亚马逊网络服务部工作 OpenSearch。他对高可扩展系统和基础设施相关挑战深感兴趣。