ES集群节点宕机导致shard unassigned解决方案

ES集群概况:
1台master节点,4台data节点,9个shards
问题:
一台data节点宕机,导致5个分片处于unassigned状态,集群状态变为red,无法自动rerouting
解决步骤:
1.查看所有节点的日志信息,通过日志,我们发现master节点中出现了警告信息,通知宕机节点的磁盘利用率超过了90%,这也是导致节点宕机,集群出现unassigned的原因。
2.找到原因后,我们开始处理问题,因为es集群已经无法自动完成rerouting操作,所有当务之急是解决磁盘的问题,因为无法动态扩容,所以我们分配了新的大容量机器,将es数据所在目录整个迁移到了新的机器上,同时将原有机器IP绑定到新的机器上,启动新的机器。
3.这时问题任然没有完全解决,我们输入

curl 'http://ip:port/_nodes/process?pretty'

查看es集群中节点的具体信息
同时输入

curl -XGET http://ip:port/_cat/shards|grep UNASSIGNED

来查看处于未分配状态的信息,信息里面分别有索引,id等信息
4.接下来便是强制routing的过程了,通过如下命令便可以完成shard的重新路由分配

curl -XPOST 'ip:port/_cluster/reroute?retry_failed=5&pretty' -d '
{
    "commands" : [ {
        "allocate_stale_primary" : {
            "index" : "error_data",
            "shard" :5,
            "node" : "0Al0NdJZS2ClT6PiLCqGlg",
            "accept_data_loss" : true
        }
    }]
}'

上面的index为未分配的shard的索引,shard为分片id,node为分片的路由目的节点id,通过第一条命令可以查出,注意可能unassigned节点并不全部分布再宕机节点上,需要进行重路由分配,如果分片不在路由目的节点上,日志中会出现异常信息,找不到对应分片的索引文件,在异常信息中会出现分片的名称,这时,到各节点上查找分片信息,路由到对应的节点上。
所有问题解决后,重启es集群可以发现集群变为green状态。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值