Elasticsearch

Elasticsearch的shard replicas和nod

2018-10-16  本文已影响82人  alonwang

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

PUT index_name/_settings
{
  "number_of_replicas":x
}

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

假设我们有四个节点 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

上一篇 下一篇

猜你喜欢

热点阅读