码迷,mamicode.com
首页 > 其他好文 > 详细

ElasticStack系列之二十 & 数据均衡、迁移、冷热分离以及节点自动发现原理与机制

时间:2018-12-26 01:14:04      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:提前   stack   数据迁移   默认   运行   prim   默认值   总空间   ima   

1. 数据均衡

  某个shard分配到哪个节点上,一般来说,是由 ELasticSearch 自行决定的。以下几种情况会触发分配动作:

  • 新索引的建立
  • 索引的删除
  • 新增副本分片
  • 节点增减引发的数据均衡

  在动态分配的时候有几个默认值需要注意,当然对应的这些默认值都是可以修改的,具体如下:

  1. ElasticSearch 默认要求所有分片都正常启动成功以后,才可以进行数据均衡操作,否则的话,在集群重启阶段,会浪费太多的流量
  2. ElasticSearch 默认可以有 2 个任务同时运行数据均衡。如果有节点增减且集群压力不高的情况下,可以适当增大(可通过 cluster.routing.alloction.cluster_concurrent_rebalance 参数来控制)
  3. ElasticSearch 默认可以有 2 个任务同时运行数据恢复操作,前提是除了主分片重启恢复以外的情况下。所以,节点重启时,可以看到主分片迅速恢复完成,副本分片的恢复却很慢。除了副本分片本身数据要通过网络复制以外,并发线程本身也减少一半(默认同时又4个主分片恢复)。当然这种设置也是有道理的--> 主分片一定是本地恢复,副本分片却需要走网络,带宽是有限的。
  4. ElasticSearch 默认当数据磁盘使用量占当前磁盘总空间的 85% 时,新索引分片就不会再分配到这个节点上了。在达到 90% 时,就会触发该节点现存分片的数据均衡,把数据挪到其他节点上去。

2. reroute 接口应用(数据迁移)

  reroute 接口支持三种指令:allocate、move 和 cancel,我们最常用的就是 allocate 和 move 指令。

  allocate 指令:

    因为负载过高等原因,有时候个别分片可能长期处于 unassigned 状态,我们就可以手动分配到指定节点上。默认情况下不允许手动分配副本分片,所以如果是 主分片 故障,我们需要单独加一个 allow_primary 选项:

  

  注意:

    如果是历史数据的话,需要提前确认一下哪个节点上保留有这个分片的实际目录,且目录大小最大,然后手动分配到这个节点上,以此来减少数据的丢失。

  move 指令:

    因为负载过高,磁盘利用率过高,服务器需要下线,更换磁盘等情况。我们此时需要从该节点一走部分分片数据到其他节点上,那么 move 指令就很有用了:

 

3. 冷热数据读写分离

 

 

4. 节点自动发现原理与机制

 

ElasticStack系列之二十 & 数据均衡、迁移、冷热分离以及节点自动发现原理与机制

标签:提前   stack   数据迁移   默认   运行   prim   默认值   总空间   ima   

原文地址:https://www.cnblogs.com/liang1101/p/10177119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!