elk Elasticsearch Unassigned Shards 无法reroute问题处理 — Jevic

elk Elasticsearch Unassigned Shards 无法reroute问题处理

2018/01/23 ELK

问题概述

由于集群节点下线更换操作,导致了部分索引主分片丢失,集群处于red状态;

而且此时集群分片均衡失效,不在均衡数据;

尝试使用reroute API 接口来手动迁移,发现命令执行失败;

接下来就比较尴尬了….均衡不了….手动迁移也失败….

综合以上状况只能做以下操作了…

处理过程

将处于red状态的并且过期不在使用的索引删除(此乃下下策😭) 保留并处理热门数据

1. 重建索引

curl -XPOST es-90:9200/_reindex -d '
{
  "source": {
    "index": "index-name"
  },
  "dest": {
    "index": "index-name.bak"
  }
}'

2. 删除旧索引

curl -XDELETE es-90:9200/index-name

3. 建立别名

curl -XPUT es-90:9200/index-name.bak/_alias/index-name

批量处理


#!/bin/bash
indexs="index1 index2 index3"

back(){
curl -XPOST es-90:9200/_reindex -d '
{
  "source": {
    "index": "'$index'"
  },
  "dest": {
    "index": "'${index}.bak'"
  }
}'
}

for index in $indexs;do
    back
    curl -XDELETE es-90:9200/${index}
    curl -XPUT es-90:9200/${index}.bak/_alias/${index}
done

副本丢失

当索引副本分片丢失 且无法正常均衡时

1. 取消副本

PUT /test/_settings
{
    "index" : {
        "number_of_replicas" : 0
    }
}

2. 恢复副本


PUT /test/_settings
{
    "index" : {
        "number_of_replicas" : 1
    }
}

后记

在扩容下线 更换节点时 务必单个节点逐一操作

节点更新或下线

  1. 关闭均衡
  2. 设置此节点不在运行数据写入
  3. 重启或停用节点
  4. 开启均衡

转载请注明出处,本文采用 CC4.0 协议授权

Search

    Post Directory