美文网首页Elasticsearch
Elasticsearch的shard replicas和nod

Elasticsearch的shard replicas和nod

作者: alonwang | 来源:发表于2018-10-16 14:07 被阅读82次

    开发环境下遇到了这个问题:
    一个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.


    未分配分片问题: https://fashengba.com/post/how-to-resolve-unassigned-shards-in-elasticsearch.html
    基础概念介绍: https://mp.weixin.qq.com/s/GMnQjIVPj98ygvl3eQFWFA
    es的更新同步的实现: https://www.elastic.co/guide/cn/elasticsearch/guide/current/optimistic-concurrency-control.html

    相关文章

      网友评论

        本文标题:Elasticsearch的shard replicas和nod

        本文链接:https://www.haomeiwen.com/subject/hqaczftx.html