mysql索引再平衡_Elasticsearch--集群管理_再平衡&预热

本文详细介绍了Elasticsearch集群的再平衡过程,包括何时开始再平衡、控制移动分片的数量以及如何显式控制分片和副本的分配。此外,还讨论了预热查询的概念,用于在搜索前优化性能,提高用户体验。
摘要由CSDN通过智能技术生成

[TOC] #控制集群的再平衡 默认情况下,Elasticsearch视图把分片和副本在集群中均衡分布。大多数情况下是好的,但有时候想人为控制此行为。 ##再平衡 再平衡是在集群的不同节点之间移动分片的过程。 ##集群的就绪 索引由分片和副本构成。主分片用于新文档被编入索引以及更新或删除,或者索引发生任何变化时。副本从主分片获取数据。

当主分片都被分配到集群中的节点上,也就达到了黄色状态,集群就已经就绪,可以对外提供服务,此时Elasticsearch会初始化副本。 ##集群再平衡设置 Elasticsearch允许控制再平衡过程,通过设置elasticsearch.yml文件中的几个属性,或使用Elasticsearch REST API。 ###控制再平衡何时开始

cluster.routing.allocation.allow_rebalance

该属性的取值:

always:表名再平衡可以在需要时随时开始

indices_primaries_active:所有主分片都初始化后,再平衡才会开始。

indices_all_active:默认设置,所有分片和副本都初始化后,再平衡才会开始。

###控制同时在节点移动的分片数量

cluster.routing.allocation.cluster_concurrent_rebalance

指定整个集群中同时可以在节点间移动的分片数量。如果集群由很多节点组成,可以提高这个值。默认值2。 ###控制单个节点上同时初始化的分片数量

cluster.routing.allocation.node_concurrent_recoveries

设置Elasticsearch在单个节点上一次可以初始化多少分片。分片还原过程是非常耗I/O的,默认是2. ###控制单个节点上同时初始化的主分片数量

cluster.routing.allocation.node_initial_primaries_recoveries

###控制分配的分片类型

cluster.routing.allocation.enable

控制允许分配哪种类型的分片。取值如下:

all:默认值,所有类型的分片都可以被分配

primaries:只分配主分片,不要分配副本

new_primaries:只分配新创建的主分片

none:完成禁用了分片的分配

###控制单个节点上的并发流数目

indices.recovery.concurrent_streams

允许控制一个节点上一次可以打开多少流,以便从目标分片中恢复一个分片。默认值是3。 #控制分片和副本的分配 ##显式控制分配

指定节点参数 假设希望把更强大的编号为1和2的节点放置在一个叫zone_one的区域,编号3和4的节点资源较少,放在叫zone_two的区域。

配置 在节点1和节点2的elasticsearch.yml配置文件中添加node.zone: zone_one属性。在节点3和节点4的elasticsearch.yml文件中添加类似的node.zone:zone_two。

索引的创建 现在创建shop索引。放在更强的节点:

curl -XPUT 'http://localhost:9200/shop' -d'{ "setting":{ "index":{ "routing.allocation.include.zone":"zone_one" } } }'

意味着希望把shop索引放到node.zone属性等于zone_one的节点。

promotions索引应该放在所有节点,命令如下:

curl -XPOST 'http://localhost:9200/promotions' curl -XPUT 'http://localhost:9200/promotions/_settings' -d'{ "setting":{ "index":{ "routing.allocation.include.zone":"zone_one, zone_two" } } }'

第一个命令创建索引,第二个命令更新index.routing.allocation.include.zone属性的值。

排除节点的分配

f8670ffb5edfbb7591b90e5f293782a2.png

节点需求属性 指定分片必须匹配某种规则才能分配到给定节点上。

index.routing.allocation.require

curl -XPOST 'http://localhost:9200/promotions/_settings' -d'{ "index.routing.allocation.require.size":"big_node", "index.routing.allocation.require.zone":"zone_one" }'

Elasticsearch将只会把promotions索引分片分配到node.size属性等于big_node且node.zone属性等于zone_one的节点上。

使用IP地址分配分片 使用IP地址来指定应该包含排除哪些节点用来做分片和副本的分配。

0c8eccc5d6ea071e325eac606117cc07.png

基于磁盘的分片分配 允许基于节点的磁盘使用情况来设置分配规则,因此不会有耗尽磁盘空间或类似的问题。

启动基于磁盘的分片分配:基于磁盘的分片分配默认是禁用的。可以设置cluster.routing.allocation.disk.threshold_enabled属性为true来启用。

e7633684a0061a8f0c318ef7c3a3c3d1.png

配置基于磁盘的分片分配

aad7b3e91deeffce65ad7f55f286339f.png 第二和第三个属性值也可以是一个绝对值。

##集群范围的分配

3c90f6612015093e65d1da5d81024380.png 希望把所有新索引都放置在IP地址为10.1.2.10和10.1.2.11的节点上。

##每个节点上的分片和副本数量 指定单一节点上为单一索引最多可以放置多少分片

curl -XPOST 'localhost:9200/shop/_settings' -d'{ "index.routing.allocation.total_shards_per_node":1 }'

该属性可以放在配置文件中。

##手动移动分片和副本 使用Elasticsearch的_cluste/reroute REST端点。 有以下可用的操作:

把分片从一个节点移动到另一个节点

取消分片的分配

强制分片的分配

###移动分片

c30ee07c7f59ce6dcf8fe3fa7680c0ba.png move命令允许移动由index属性指定的索引分片和副本。shard属性是要移动的分片的编号。最后,from_node属性指定从哪个节点上移动分片。 ###取消分片分配

712934eaf0d6360a43a62ed671dd78d4.png 上述命令将取消es_node_one节点上shop索引编号为0的分片分配。 ###强制分片的分配 分配一个未分配的分片到指定节点上。

fd29172fb6b208392a89030091bd3fbf.png

#预热 Elasticsearch允许为类型和索引定义预热查询。 ##定义一个新的预热查询 预热查询和其他查询类似,只是它存储在Elasticsearch一个特殊的名为_warmer的索引中。

42b015bdffd1471dc8d2b141e16908aa.png 把上述查询存储为library索引的预热查询,执行以下命令:

230e17cc9461c278d00d2ecb1c7d1d09.png 上述命令将注册一个名为tags_warming_query的预热查询。一个索引可以有多个预热查询,但是名字唯一。

添加一个预热查询后,Elasticsearch允许一个新段执行搜索之前,会在那个段上执行定义的预热查询。允许elasticsearch和操作系统缓存数据,以此来加快搜索。

##获取定义的预热查询

cf26eceafd753aca4c6f75ba56a89f6c.png

b65a0e92c20523649447fe3d1437ba2e.png

5d68e010ae8ec1b7a473a45c2c0f6839.png ##删除一个预热查询

851bbf7f2826c2fbf7791c37905fdb96.png ##禁用预热功能

d22c11ea1ccacb8ec09a55c10ee0cea0.png ##查询的选择 通常选择执行起来昂贵和需要填充缓存的查询需要预热。如:基于索引中的字段做切面和排序,父子查询,常用的过滤器查询。也可以通过日志查找不尽人意的查询。

44275cee207f981a9df4495ae6e6f109.png

76451e74f3318a377bd143a2b1a2b2ad.png 注意:过多的预热查询,也会影响Elasticsearch的性能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值