美文网首页
【es】Elasticsearch 的 Shard Alloca

【es】Elasticsearch 的 Shard Alloca

作者: Bogon | 来源:发表于2022-10-16 14:09 被阅读0次

    Elasticsearch由一些Elasticsearch进程(Node)组成集群,用来存放索引(Index)。
    为了存放数据量很大的索引,Elasticsearch将Index切分成多个分片(Shard),在这些Shard里存放一个个的文档(document),通过这一批shard组成一个完整的index。

    每个Shard可以设置一定数量的副本(Replica),写入的文档同步给副本Shard,副本Shard可以提供查询功能,分摊系统的读负载。

    在主Shard所在Node(ES进程)挂掉后,可以提升一个副本Shard为主Shard,文档继续写在新的主Shard上,来提升系统的容灾能力。

    Shard Allocation 意思是分片分配, 是一个将分片分配到节点的过程。
    可能发生该操作的过程包括:

    初始恢复(initial recovery)
    副本分配(replica allocation)
    重新平衡(rebalance)
    节点的新增和删除
    

    分片的分配操作, 是由 master 角色的节点来决定什么时候移动分片, 以及移动到哪个节点上, 以达到集群的均衡。
    Allocation 触发条件:

    新增或删除 index 索引
    node 节点的新增或删除
    执行 reroute 命令
    修改 replica 副本数量
    集群重启
    

    Shard Allocation延迟机制

    当某个节点由于突发原因,比如网络中断、人为操作重启等需要暂时离开集群时,集群会立刻新建副本分片以替换丢失的副本, 然后在剩余的所有节点之间进行rebalancing,这样导致在短时间内该突发节点又恢复过来后, 原先的副本就无法再使用, 集群会将刚才新建的副本分片再拷贝回到该节点上,这样就会造成不必要的资源浪费, 以及节点分片rebalancing带来的波动。

    可以使用 index.unassigned.node_left.delayed_timeout 动态设置来延迟由于节点离开而导致未分配的副本分片的分配问题,该配置默认值 1m(60s)。

    PUT _all/_settings
    {
      "settings": {
        "index.unassigned.node_left.delayed_timeout": "5m"
      }
    }
    
    ## 针对单个索引
    curl -XPUT 'http://xx.xx.xx.xx:9200/<INDEX_NAME>/_settings'  -d '
    {
        "settings": {
          "index.unassigned.node_left.delayed_timeout": "2m"
        }
    }'
    
    
    ## 针对所有索引
    curl -XPUT 'http://xx.xx.xx.xx:9200/_all/_settings'  -d '
    {
        "settings": {
          "index.unassigned.node_left.delayed_timeout": "2m"
        }
    }'
    

    修改成以上配置后, 如果在 5m 内,该节点可以恢复重新加入集群,则集群会自动恢复该节点的副本分片分配,恢复速度很快。

    注意:

    此设置不影响将副本分片升级为主分片;
    此设置不影响之前未分配的副本分片;
    在整个集群重新启动后, 该延迟分配不会生效;
    

    参考

    Delaying allocation when a node leaves
    https://www.elastic.co/guide/en/elasticsearch/reference/7.4/delayed-allocation.html

    Elasticsearch 模块 - Shard Allocation 机制
    https://www.cnblogs.com/memento/p/14494010.html

    彻底解决 ES 的 unassigned shards 症状
    https://www.cnblogs.com/lvzhenjiang/p/14196973.html

    相关文章

      网友评论

          本文标题:【es】Elasticsearch 的 Shard Alloca

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