为何 OpenSearch 控制面板在我的 Amazon OpenSearch Service 域中处于红色状态?

上次更新日期: 2021 年 7 月 30 日

OpenSearch 控制面板在我的 Amazon OpenSearch Service 域中持续显示为红色状态。为什么会发生这种情况?如何排查此问题?

简短描述

当 OpenSearch Service 集群的每个节点都通过所有运行状况检查时,OpenSearch 控制面板显示绿色状态。如果运行状况检查未通过,则 OpenSearch 控制面板进入红色状态。当 OpenSearch Service 处于红色集群状态时,OpenSearch 控制面板也会显示红色状态。OpenSearch 控制面板的状态可能会因以下原因变为红色:

  • 因 Amazon Elastic Compute Cloud(Amazon EC2)实例或 Amazon Elastic Block Store(Amazon EBS)卷的问题导致的节点故障。有关节点崩溃的更多信息,请参阅为什么我的 OpenSearch Service 节点会崩溃?
  • 您的节点内存不足。
  • 将 OpenSearch Service 升级到更新的版本。
  • OpenSearch 控制面板和 OpenSearch Service 版本之间不兼容。
  • 单一节点集群在重负载下运行,没有专用的主节点。专用主节点也可能无法到达。有关 OpenSearch Service 如何提高集群稳定性的更多信息,请参阅专用主节点

解决方法

使用以下一种或多种方法来解决 OpenSearch Service 域的 OpenSearch 控制面板的红色状态。

注意:如果您的集群显示断路器异常,则首先增加短路器限值。如果您没有断路器异常,则在增加断路器限值之前尝试其他方法。

调整查询

如果您正在运行复杂查询,如重度聚合,则要调整查询以获得最佳性能。堆内存消耗的突然激增可能是由用于聚合查询的字段数据或数据结构引起的。

查看以下 API 调用,以确定激增的原因,从而将 es-endpoint 替换为域终端节点:

$curl os-endpoint/_nodes/stats/breaker?pretty
$curl "os-endpoint/_nodes/stats/indices/fielddata?level=indices&fields=*"

有关管理内存使用的更多信息,请参阅 Elasticsearch 网站上的调整以优化搜索速度

使用专用主节点

最佳实践是为每个 OpenSearch Service 域分配三个专用主节点。有关提高集群稳定性的更多信息,请参阅开始使用 OpenSearch Service:使用专用主实例提高集群稳定性

纵向扩展

要纵向扩展您的域,请增加节点数量或选择拥有更多内存的 Amazon EC2 实例类型。有关扩展的更多信息,请参阅如何纵向扩展或横向扩展我的 OpenSearch Service 域?

检查您的分片分布

检查您的分区正提取到的索引,以确认它们均匀分布在所有的数据节点中。如果您的分区分布不均匀,一个或多个数据节点可能会耗尽存储空间。

使用以下公式来确认分区是否均匀分布:

Total number of shards = shards per node * number of data nodes

例如,如果索引中有 24 个分片且有 8 个数据节点,则每个节点应有 3 个分片。有关所需分区数量的更多信息,请参阅开始使用 OpenSearch Service:我需要多少个分片?

检查您的版本

重要:OpenSearch 控制面板和 OpenSearch Service 版本之间不兼容。

运行以下 API 调用,以确认您的版本兼容,从而将 es-endpoint 替换为您的域终端节点:

$curl os-endpoint/.kibana/config/_search?pretty

注意:如果命令不成功,可能表示 OpenSearch 控制面板与支持的 OpenSearch Service 版本之间存在兼容问题。有关兼容的 OpenSearch 控制面板和 Elasticsearch 版本的更多信息,请参阅 Elasticsearch 网站上的设置

监控资源

设置 Amazon CloudWatch 警报,以在资源使用超过特定阈值时通知您。例如,如果您为 JVM 内存压力设置警报,则可以在压力达到 100% 之前采取措施。有关 CloudWatch 警报的更多信息,请参阅推荐的 CloudWatch 警报使用 CloudWatch 通过自动警报提高 OpenSearch Service 域的运营效率

增加断路器限值

要防止集群耗尽内存,请尝试增加父级或现场数据断路器限值。有关现场数据断路器限值的更多信息,请参阅 Elasticsearch 网站上的断路器设置