您可以通过Elasticsearch(简称ES)的health API查看集群的健康状态,并根据健康状态排查并规避可能存在的风险。

前提条件

已创建阿里云ES实例,详情请参见创建阿里云Elasticsearch实例

操作步骤

  1. 登录目标阿里云ES实例的Kibana控制台。
    登录控制台的具体步骤请参见登录Kibana控制台
  2. 在左侧导航栏,单击Dev Tools(开发工具)。
  3. Console中,执行以下命令查看集群的健康状态。
    GET /_cluster/health
    正常情况下,返回如下结果。
    {
      "cluster_name" : "es-cn-45xxxxxxxxxxxxk1q",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 2,
      "number_of_data_nodes" : 2,
      "active_primary_shards" : 18,
      "active_shards" : 36,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 0,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 100.0
    }
    status表示集群的健康状态,取值为greenyellowred
    集群健康状态 状态 说明
    red 不是所有的主要分片都可用。 表示该集群中存在不可用的主分片。可以理解为某个或者某几个索引存在主分片丢失的情况。
    yellow 所有主要分片可用,但不是所有副本分片都可用。 表示该集群中某个或者某几个索引存在副本分片存在丢失的情况。
    green 所有主要分片和副本分片都可用。 表示集群中所有的索引都很健康,不存在丢失的分片。
    如果您的集群处于yellow状态,此时进行密码修改、集群升配等集群变更操作时周期会比较长。建议修复集群状态为green后,再进行操作。造成yellow状态的原因是索引存在副本分片丢失的情况,需要查找并修复集群中有问题的索引,命令如下:
    • 索引状态查询命令
      curl -u <用户名>:<密码> http://<host>:9200/_cat/indices                   
      通过以上命令,您可以查找有问题的索引名称,即状态为yellow的索引名称。有问题的索引
    • 索引状态修复命令

      当您设置的索引副本数大于当前节点数减1时,会导致集群处于yellow状态。以上代码仅针对此情况的索引的副本数进行调整。例如,您购买的集群节点数为3,但是个别索引副本数也为3,这样集群就会处于yellow状态。此时设置问题索引副本数为2即可。

      curl -XPUT -u <用户名>:<密码> http://<host>:9200/<有问题的索引名称>/_settings -H 'Content-Type: application/json' -d '{"index":{"number_of_replicas":(<当前节点数-1>)}'              
      说明 当您完成实例重启、扩容或其他自定义配置后,请根据阿里云ES实例的节点数量为索引设置合理的副本数,这将有效提高ES服务的可靠性和稳定性。