allocation

更新时间:2022-11-24 15:19:36 阅读: 评论:0


2022年11月24日发(作者:全国青联)

分布式搜索elasticarch⾼级配置之(⼀)------分⽚分布规则

设置

分⽚分布是把索引分⽚分布到节点的过程。这个操作会在初次启动集群,副本分配,负载均衡,或增加删除节点时进⾏。

下⾯是⼀些与分⽚分布相关的设置:

_rebalance

设置根据集群中机器的状态来重新分配分⽚,可以设置为always,indices_primaries_active和indices_all_active,默认是设置成

indices_all_active来减少集群初始启动时机器之间的交互。

r_concurrent_rebalance

设置在集群中最⼤允许同时进⾏分⽚分布的个数,默认为2,也就是说整个集群最多有两个分⽚在进⾏重新分布。

_initial_primaries_recoveries

设置指定初始每个节点。由于多数情况下是使⽤local的gateway,这应该会更快,

_concurrent_recoveries

设置在节点中最⼤允许同时进⾏分⽚分布的个数,默认为2

e_allocation

使主要分⽚或副本的分布失效。要知道,如果主分⽚不存在(那个节点挂了)那么其副本仍然会被提升为主分⽚,这个设置只有在动态地使

⽤集群更新设置api调⽤时才⽣效。

e_replica_allocation

使副本分布失效。和上⼀个设置⼀样,只有动态地使⽤集群更新设置api调⽤时才⽣效。

rent_streams

当从⼀个点(peer)恢复分⽚时当前节点最多允许的⽂件读取流的个数,默认为5

⾃定义分⽚分布规则

可以通过设置分⽚的分布规则来⼈为地影响分⽚的分布,下⾯是个例⼦:

假设我们有⼏个机架。当我们启动⼀个节点,我们可以设置⼀个叫rack_id(其它名字也可以)的属性,例如下⾯设置:

_id:rack_one

上⾯这个例⼦设置了⼀个属性叫rack_id,它的值为rack_one。现在,我们要设置rack_id作为分⽚分布规则的⼀个属性(在所有节点都要

设置)。

utes:rack_id

上⾯设置意味着rack_id会⽤来作为分⽚分布的依据。例如:我们启动两个_id设置rack_one的节点,然后建⽴⼀个5个分⽚,⼀

个副本的索引。这个索引就会完全分布在这两个节点上。如果再启动另外两个节点,_id设置成rack_two,分⽚会重新分布,但

是⼀个分⽚和它的副本不会分配到同样rack_id值的节点上。可以为分⽚分布规则设置多个属性,例如:

utes:rack_id,zone

注意:当设置了分⽚分布属性时,如果集群中的节点没有设置其中任何⼀个属性,那么分⽚就不会分布到这个节点中。

强制分布规则

更多的时候,我们不想更多的副本被分布到相同分布规则属性值的⼀群节点上,那么,我们可以强制分⽚规则为⼀个指定的值。

例如,我们有⼀个分⽚规则属性叫zone,并且我们知道有两个zone,zone1和zone2.下⾯是设置:

:zone1,zone2

utes:zone

现在我们启动两个设置成zone1的节点,然后创建⼀个5个分⽚,⼀个副本的索引。索引建⽴完成后只有5个分⽚(没有副

本),只有当我们启动设置成zone2的节点时,副本才会分配到那节点上。

分⽚分布过滤

允许通过include/exclude过滤器来控制分⽚的分布。这些过滤器可以设置在索引级别上或集群级别上。下⾯是个索引级别上的例⼦:

假如我们有四个节点,每个节点都有⼀个叫tag(可以是任何名字)的属性。每个节点都指定⼀个tag的值。如:节点⼀设置成:

value1,节点⼆设置成:value2,如此类推。我们可以创建⼀个索引然后只把它分布到tag值为value1和value2的节点中,可以

通过设置

为value1,value2达到这样的效果,如:

curl-XPUTlocalhost:9200/test/_ttings-d'{

"":"value1,value2"

}'

与此相反,通过设置为value3,我们也可以创建⼀个索引让其分布在除了tag设置为value3的所有节

点中,如:

curl-XPUTlocalhost:9200/test/_ttings-d'{

"":"value3"

}'

include或exclude过滤器的值都会使⽤通配符来匹配,如value*。⼀个特别的属性名是_ip,它可以⽤来匹配节点的ip地址。

显然,⼀个节点可能拥有多个属性值,所有属性的名字和值都在配置⽂件中配置。如,下⾯是多个节点的配置:

1:group1_value1

2:group2_value4

同样的⽅法,include和exclude也可以设置多个值,如:

curl-XPUTlocalhost:9200/test/_ttings-d'{

"1":"xxx"

"2":"yyy",

"3":"zzz",

}'

上⾯的设置可以通过索引更新的api实时更新到索引上,允许实时移动索引分⽚。

集群范围的过滤器也可以定义,可以通过集群更新api实时更新到集群上。这些设置可以⽤来做让⼀些节点退出集群的操作。下⾯是通过ip

地址去掉⼀个节点的操作:

curl-XPUTlocalhost:9200/_cluster/ttings-d'{

"transient":{

"e._ip":"10.0.0.1"

}

}'

本文发布于:2022-11-24 15:19:36,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/12621.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:易听
下一篇:bulge
标签:allocation
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图