您可以通过Elasticsearch(简称ES)的health API查看集群的健康状态,并根据健康状态排查并规避可能存在的风险。
前提条件
操作步骤
- 登录目标阿里云ES实例的Kibana控制台。
具体操作步骤请参见登录Kibana控制台。
- 在左侧导航栏,单击Dev Tools(开发工具)。
- 在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
表示集群的健康状态,取值为green
、yellow
或red
。集群健康状态 状态 说明 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服务的可靠性和稳定性。
- 索引状态查询命令