美文网首页
ES分片迁移的一些经验

ES分片迁移的一些经验

作者: 气球到处飞 | 来源:发表于2018-10-24 23:36 被阅读0次

在对集群进行扩容或者替换节点的时候,不可避免会有移动分片的操作,可以使用如下的语句进行操作,首先要关闭自动reshard

cluster.routing.allocation.disable_allocation = false

然后可以使用move、cancel以及allocate进行分片的移动、取消分配以及重新分配没有分配的shard到指定节点。

curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
    "commands" : [ {
        "move" :
            {
              "index" : "test", "shard" : 0,
              "from_node" : "node1", "to_node" : "node2"
            }
        },
       "cancel" :
            {
              "index" : "test", "shard" : 0, "node" : "node1"
            }
        },
        {
          "allocate" : {
              "index" : "test", "shard" : 1, "node" : "node3"
          }
        }
    ]
}'

当然,推荐使用kopf插件,对以上操作进行可视化操作,更直观容易。


kopf插件截图

但是以上方式,对于分片很少的情况下是适用的,如果需要转移的节点很多就有些太过于麻烦了。

当然ES默认是开启自动reshard功能的,也就是说设置

cluster.routing.allocation.disable_allocation = true

ES会按照同node不能存相同shard、shard分片分配平均等因素进行重新平衡。如果我们是进行扩容,那么把扩容的节点加进来,然后开启自动reshard功能,我们就可以坐等平衡结束了。

但是如果我们是想要替换掉部分节点,那么如果按照以上操作,会将所有的节点在所有的节点上进行平衡,那么我们要下掉的节点也会平均分布着分片数据。待平衡后,我们想要下掉某个节点,还是需要转移走这部分分片,而且原来的处理方式是手工的。。。很明显,这种方式太原始,而且浪费了之前平衡花费的时间和流量。那么有没有什么配置,让ES平衡节点的时候不向上面分配分片,或者更进一步直接将原有分片“赶出去”呢?

可以尝试使用下面的命令

curl -XPUT 'localhost:9200/_cluster/settings' -d
'{
  "transient": {
    "cluster.routing.allocation.exclude._ip": "192.168.0.1,192.168.0.2"
  }
}'

让ES不再向这两个ip的node进行分片分配。这个配置还可以使用_name以及_host等。可以参考官方文档:

https://www.elastic.co/guide/en/elasticsearch/reference/current/allocation-filtering.html

相关文章

  • ES分片迁移的一些经验

    在对集群进行扩容或者替换节点的时候,不可避免会有移动分片的操作,可以使用如下的语句进行操作,首先要关闭自动resh...

  • 关于Elastic Search的5种分片查询

    分片查询方式 Es查询的时候,默认是随机从一些分片中查询数据,可以通过配置让es从某些分片中查询数据: _prim...

  • elasticsearch迁移

    查询了一些es迁移相关的文章,暂时列到这里,备用ElasticSearch集群迁移和升级总结发布个es迁移工具:e...

  • Redis之前的思考笔记

    预分片(数据迁移的方式基于当前使用爹redis2.0+的版本 3.0+服务端可以自动分片和迁移) 我们已经知道分片...

  • Elasticsearch入门(二)—— 分布式架构原理分析

    本章主要介绍ES的分布式架构,ES的分布式存储主要依赖于分片, 分片又分为主分片和副本分片 Primary Sha...

  • ElasticSearch分片原理与规划

    1、分片内部原理 分片是ES中较难理解的一个概念,它的核心概念和流程如下:一个ES索引中包含很多分片,一个分片是一...

  • 阿里JAVA面经

    ES ES这个组件由哪些关键模块组成?(不知道) 答:集群/索引/分片/复制分片等概念 ES的分布式特性体现在哪里...

  • 第三章 索引、文档与Mapping

    一、核心概念 节点 节点就是一个ES的进程 分片 分片分为主分片与副本分片 主分片负责写入数据 副本分片只负责查询...

  • Elastic job ShardingService 分片服务

    ShardingService 是es job 分片服务类 , 这里重点介绍该类一些重要方法 setReshard...

  • ES:reindex中的坑

    吐槽一个ES-reindex迁移的大坑 在做ES跨集群迁移的时候,用到了ES的reindex进行数据迁移,查了很多...

网友评论

      本文标题:ES分片迁移的一些经验

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