Elasticsearch之Unassigned shard问题

开发环境下遇到了这个问题: 一个index的主/副shard总数量大于node数量导致部分shard未分配,进而节点报黄 最终通过减少replicas数量解决了问题

PUT index_name/_settings
{
  "number_of_replicas":x
}
复制代码

通过这次排查也理清了es的一些基础概念,下面以数据库作对比,会更容易理解

  • node 节点,等同于mysql实例,不同的是,es天然支持分布式,多个node组成一个集群对外提供服务
  • index 索引,等同于table 都有固定的字段,每个字段都有对应的类型
  • shard 分片,等同于分表, 一个shard存储一部分数据
  • replicas 分片副本,等同于复制表

假设我们有四个节点 NodeA,NodeB,NodeC,NodeD,其中NodeA为master

现有有一个index my_index,有如下设置

{
        "number_of_shards": "2",
        "number_of_replicas": "3"
}
复制代码

my_index分片数为2,它们的编号为0,1,每个分片又有3个副本.以分片0为例,它共有4份(1个主分片,3个复制分片),那么一个合理的分配如下图所示

以笔者遇到的问题为例,如果这里设置了"number_of_replicas": "4",那么一个分片共有5份,但是只有4个节点,es主节点不会将主分片分配给与其副本相同的节点,也不会将同一分片的两个副本分配给同一个节点,那么肯定会有一个副本分片就不会分配给任何节点也就导致了Unassigned Replicas.


未分配分片问题: fashengba.com/post/how-to… 基础概念介绍: mp.weixin.qq.com/s/GMnQjIVPj… es的更新同步的实现: www.elastic.co/guide/cn/el…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值