ElasticSearch Allocation&Rebalan

2019-11-04  本文已影响0人  白奕新

0、allocator&decider

allocation与rebalance都由allocator与decider来实现。

(1)allocator:尝试寻找最优的节点来分配分片

(2)decider:负责判断并决定是否要进行要分配

allocation与rebalance的决策权由下列有控制的decider决定,只有全返回true,才可allocation/rebalance(如果没控制,默认返回true。例如SameShardAllocationDecider不控制rebalance,则返回true)


decider.png

1、allocation

(1)important parameter

parameter 含义 other
cluster.routing.allocation.enable 是否开启allocation all(default);primaries:只允许主分片;new_primaries:只允许新生成的主分片;none:不允许

(2)allocation的细节

2、rebalance

(1)important parameter

参数 含义 其他
cluster.routing.rebalance.enable 是否可以rebalance all(default),primaries,replicas,none。es2.x+才有的配置,所以1.x如果要禁止rebalance需要把allocation关闭。
cluster.routing.allocation.allow_rebalance 什么情况下才可以触发rebalance always:总是可以;indices_primaries_active:所有主分片都已被分配好;indices_all_active:所有的分片都已被分配好(default)
cluster.routing.allocation.cluster_concurrent_rebalance 多少shard可以同时进行rebalance 默认2

(2)detail

3、关系

allocation与rebalance的关系,在于rebalance需要依赖allocation,所以allocation被关闭以后rebalance也就被禁止了。

4、other

(1)balance

新shard的生成以及rebalance都需要依照这3个参数进行计算,以达到cluster balance

parameter 参数 其他
cluster.routing.allocation.balance.shard allocate每个node上shard总数时计算的权重,提高这个值以后会使node上的shard总数基本趋于一致 默认0.45f。调低
cluster.routing.allocation.balance.index allocate每个index在一个node上shard数时计算的权重,提高这个值会使单个index的shard在集群节点中均衡分布 默认0.55f。调高
cluster.routing.allocation.balance.threshold 根据上面2个参数计算得出集群内部的分布情况,大于这个阈值就会触发迁移 默认1.0f,调高这个参数会使rebalance不那么频繁

(2)disk-based shard allocation

parameter 参数 其他
cluster.routing.allocation.disk.threshold_enabled 是否开启磁盘allocation探测 默认true
cluster.routing.allocation.disk.watermark.low 低水位线阈值 默认85%。在低版本的时候会禁止所有shard被allocation到这台节点上;在5.x的版本上会禁止新shard被allocation到这台;在6.x+的版本会禁止除新primary shard以后的shard被allocation到这台
cluster.routing.allocation.disk.watermark.high 高水位线阈值 默认值90%。大于这个阈值以后,上面的shard就会被迁移到其他node上。
cluster.routing.allocation.disk.watermark.flood_stage 设置index为只读的阈值 默认值95%。磁盘空间大于这个阈值以后,index就会被设置read-only。esv6.x+
上一篇下一篇

猜你喜欢

热点阅读