Elasticsearch--集群管理_再平衡&预热
目录
控制集群的再平衡
默认情况下,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属性的值。
- 排除节点的分配

节点需求属性
指定分片必须匹配某种规则才能分配到给定节点上。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地址来指定应该包含排除哪些节点用来做分片和副本的分配。

- 基于磁盘的分片分配
允许基于节点的磁盘使用情况来设置分配规则,因此不会有耗尽磁盘空间或类似的问题。
- 启动基于磁盘的分片分配:基于磁盘的分片分配默认是禁用的。可以设置cluster.routing.allocation.disk.threshold_enabled属性为true来启用。

- 配置基于磁盘的分片分配

第二和第三个属性值也可以是一个绝对值。
集群范围的分配

希望把所有新索引都放置在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端点。
有以下可用的操作:
- 把分片从一个节点移动到另一个节点
- 取消分片的分配
- 强制分片的分配
移动分片

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

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

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

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

上述命令将注册一个名为tags_warming_query的预热查询。一个索引可以有多个预热查询,但是名字唯一。
添加一个预热查询后,Elasticsearch允许一个新段执行搜索之前,会在那个段上执行定义的预热查询。允许elasticsearch和操作系统缓存数据,以此来加快搜索。
获取定义的预热查询



删除一个预热查询

禁用预热功能

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


注意:过多的预热查询,也会影响Elasticsearch的性能
Elasticsearch--集群管理_再平衡&预热的更多相关文章
- Elasticsearch集群 管理
第7章 深入Elasticsearch集群 启动一个Elasticsearch节点时,该节点会开始寻找具有相同集群名字并且可见的主节点.如 果找到主节点,该节点加入一个已经组成了的集群:如果没有找到, ...
- elasticsearch集群管理工具head插件(转)
elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es 插件安装方法1: 1.elasticsearc ...
- Elasticsearch集群管理工具head插件安装
Elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es.或直接下载源码,在本地打开index.html ...
- elasticsearch 集群管理(集群规划、集群搭建、集群管理)
一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...
- Elasticsearch集群管理
ES通过设置[节点的名字]和[集群的名字],就能自动的组织相同集群名字的节点加入到集群中,并使很多的技术对用户透明化. 如果用户想要管理查看集群的状态,可以通过一些REST API来实现. 其他的ES ...
- 大规模Elasticsearch集群管理心得
转载:http://elasticsearch.cn/article/110 ElasticSearch目前在互联网公司主要用于两种应用场景,其一是用于构建业务的搜索功能模块且多是垂直领域的搜索,数据 ...
- Elasticsearch集群管理之添加、删除节点
1.问题抛出 1.1 新增节点问题 我的群集具有黄色运行状况,因为它只有一个节点,因此副本保持未分配状态,我想要添加一个节点,该怎么弄? 1.2 删除节点问题 假设集群中有5个节点,我必须在运行时删除 ...
- elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)
一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...
- 数据源管理 | 搜索引擎框架,ElasticSearch集群模式
本文源码:GitHub·点这里 || GitEE·点这里 一.集群环境搭建 1.环境概览 ES版本6.3.2,集群名称esmaster,虚拟机centos7. 服务群 角色划分 说明 en-maste ...
随机推荐
- 深度学习笔记之基于R-CNN的物体检测
不多说,直接上干货! 基于R-CNN的物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187029 作者:hjimce 一.相关理论 本 ...
- su: /bin/bash: Permission denied带来的疑惑
>客户一个oracle突然当机了,由于业务启动,客户下意识的重启了服务器,系统是起来了,准备切换到oracle用户下启动数据库,可以怎么都无法su切换,真是火上浇油呀,描述如下: 在root用户 ...
- linux driver开发
1 开发linux driver时的调试思路 基本上是打印调试,原因很简单,方便.或者使用工具挂住cpu.
- I.MX6 wpa_cli 使用
/*********************************************************************** * I.MX6 wpa_cli 使用 * 说明: * ...
- 并不对劲的bzoj4827:loj2020:p3723:[AHOI/HNOI2017]礼物
题目大意 有两个长度为\(n\)(\(n\leq5*10^4\))的数列\(x_1,x_2,...,x_n\)和\(y_1,y_2,...,y_n\),两个数列里的数都不超过\(m\)(\(m\leq ...
- BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数
BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数 Description 丢番图是亚历山大时期埃及著名的数学家.他是最早研究整数系数不定方程的数学家之一. 为了纪念他,这些方程一般被称 ...
- python-----用多张图片生成视频
代码如下 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/2/19 16:42 # @Author : xiaodai # - ...
- NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)F题 和谐的比赛(递推 ||卡特兰数(转化成01字符串))
Description 今天西工大举办了一场比赛总共有m+n人,但是有m人比较懒没带电脑,另外的n个人带了电脑.不幸的是,今天机房的电脑全坏了只能用带的电脑,一台电脑最多两人公用,确保n>=m. ...
- PHP小函数集-篇一
一. 验证 /** * 判断用户名是否规范 */ function is_username($username) { if (preg_match("/^[a-zA-Z]{1}([0-9a- ...
- UVa 12712 && UVaLive 6653 Pattern Locker (排列组合)
题意:给定 一个n * n 的宫格,就是图案解锁,然后问你在区间 [l, r] 内的所有的个数进行组合,有多少种. 析:本来以为是数位DP,后来仔细一想是排列组合,因为怎么组合都行,不用考虑实际要考虑 ...