ES节点连接报错|ES集群状态异常

更新时间:

问题描述

同VPC下的客户端连接ES服务报错No alive nodes found in your cluster

问题原因

1、集群读写QPS较大,各个节点负载较高,load的指标已经超过了当前集群规格的负载能力, 导致集群异常无法连接。

2、集群可以正常连接,但是查询或者写入就报错,可以按照以下方式排查集群自身状况解决:

  • 通过 GET _cat/health?v 查看集群健康状态,是否有出现节点失联、shard未分配等情况。
  • 通过监控查看集群负载,即查看CPU、JVM、磁盘使用率等是否出现瓶颈。具体操作请参见查看集群监控
  • 通过日志查看是否出现熔断、disconnected、节点removed等情况。具体操作请参见查询日志

解决方案

1、如果偶现异常可以考虑优化集群,如果频繁报错,建议升配集群实例规格。

2、查看集群状态不佳的话先尝试恢复集群状态,一般先停止读写,负载降下来之后再观察下,如果无法恢复可以尝试重启集群。

重启的影响:

如果集群整体负载不高且索引存在副本分片,一般情况下重启过程中可对外持续提供服务。但在某些场景下,重启过程中可能会出现访问超时,例如强制重启并发度高、集群负载很高并且已经存在集群访问不可用的情况、没有副本分片、在重启或强制重启过程中存在大量的写入和查询等场景,建议重启前先在客户端设计好重试机制并且在业务低峰期进行操作。

shard未分配或者超过限制请参考shard评估设置分片,配置阿里云上ES单节点分片数量命令如下。

PUT /_cluster/settings
{
     "transient": {
          "cluster": {
               "max_shards_per_node": 2000
          }
     }
}

 

适用范围

检索分析服务Elasticsearch版