全部产品
阿里云办公

在线运维

更新时间:2018-04-12 22:09:04

在 Elasticsearch 集群中可以监控统计很多信息,但只有集群健康(cluster health)是最重要的。集群健康有三种状态:RedYellowGreen

集群健康可通过以下命令查看:

curl -u 用户名:密码 http://domain:9200/_cluster/health

集群健康

颜色 状态 备注
Red 不是所有的主要分片都可用 表明该集群中存在不可用的主分片,可以理解为某个或者某几个索引存在主分片 unassigned (丢失)的情况。
Yellow 所有主要分片可用,但不是所有复制分片都可用 表明该集群中某个或者某几个索引副本分片 unassigned (丢失)的情况。
Green 所有主要分片和复制分片都可用 表明集群中所有的索引都很健康不存在 unassigned 的分片。

温馨提示

上述健康状态的描述说明,主要是为了保证您的 Elasticsearch 集群处于 Green 状态,因此需要保证任何时候所有的主要分片副本都可用。

所以建议您的 replica 设置数量永远不要超过 amount_Node - 1 的数量。这样阿里云Elasticsearch 可以保证在您使用 dedicated master 的时候,集群重启时会保持在 Green 状态。

故障处理

集群处于yellow状态

如果您的集群处于 Yellow 状态,此时进行修改密码或者升级会导致升级周期比较长。

建议修复集群成健康状态 Green 后,再进行操作。造成 Yellow 状态的原因是索引存在副本分片 unassigned(丢失)的情况,需要查找集群中有问题的索引。

索引状态查询命令

  1. curl -u 用户名:密码 http://domain:9200/_cat/indices
  2. # 找到有问题的索引名称。如果是因为设置的副本数大于当前节点数减1导致集群处于Yellow状态,
  3. # 需调整有问题的索引的副本个数。

索引状态修复命令

  1. curl -XPUT -u 账号:密码 http://domain:9200/有问题的索引名称/_settings -H 'Content-Type: application/json' -d '{"index":{"number_of_replicas":(当前节点数减1)}'
  2. # 比如申请的实例节点数为3但是个别索引副本数为3,这样集群就会处于yellow的状态。
  3. # 设置问题索引副本数为2即可。

温馨提示

当您完成实例操作(重启/扩容/自定义配置)后,请根据您的实例节点数量设置合理副本数。这将有效提高您的 elasticsearch 服务的可靠性和稳定性。