`
m635674608
  • 浏览: 4959517 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

elasticsearch之cluster模块

 
阅读更多

1:shard allocation

分片分配就是将索引的各个分片合理的分布到各个节点上去。这个过程可能发生在以下场景下:

初始化(重启恢复),副本分配,平衡,节点加入,节点移除。

es在这个模块对应的设置有:

cluster.routing.allocation.allow_rebalance: 根据集群状态是否允许平衡操作,什么时机可以平衡。选项有:always, indices_primaries_active, indices_all_active(default).默认值减少集群启动时机器之间的交互。

cluster.routing.allocation.cluster_concurrent_rebalance: 设置集群级别平衡过程中的shard并发度设置,2(default)

cluster.routing.allocation.node_initial_primaries_recoveries: 设置node级别上初始化数据恢复过程中并发的主分片数量,大多情况下是local gateway,这个过程会很快,因此可以在不增加负载的情况下处理更多的主分片。

cluster.routing.allocation.node_concurrent_recoveries: 设置node级别recovery的并发度。2(default)

cluster.routing.allocation.enable: 哪些分片可以参与重新分配。选项有:all(default), primaries(主分片), new_primaries(新增加的主分片), none.

cluster.routing.allocation.same_shard.host: 是否启用对同一分片在同一个主机上出现多个分配实例的检测。默认false。这个选项只有在同一个node上启动多个es实例的情况下才有意义。

indices.recovery.concurrent_stream:设置node级别上从一个分片恢复另一个分片的并发度。

2:shard allocation awareness

集群分配awareness可以跨一般的属性来控制节点上分片和副本的分配。举例说明:

假设我们有多个机架。当我们启动一个节点的时候,配置一个属性rack_id(任何名称都可以,这里只是举例),例如:

node.rack_id : rack_one

以上给一个node设置了rank_id属性,现在我们将rack_id属性设置为一个awareness allocation属性(所有node上都要设置):

cluster.routing.allocation.awareness.attributes: racd_id

以上设置将rack_id属性应用在awareness过程中影响分片和副本的分配。例如:我们启动了2个设置rack_id为rack_one的 节点,部署了一个有5分片1副本的索引,那么索引会部署到所有当前节点中,总共10个分片,每个节点5个。现在如果我们再启动2个节 点,node.rack_id: rack_two。分片就会在当前4个节点中重新分配,但是分片和副本不会同时分配到rack_id相同的节点上。也就是说如果一个分片落在 rack_one上,其副本必定落在rank_two上。

awareness允许多值,例如:

cluster.routing.allocation.awareness.attributes:rank_id, zone。

注意:当应用awareness属性时,分片不会落在没有设置属性值的节点上。

3:forced awareness

有些时候,我们事先就可以知道awareness属性值的数量,并且我们不想让超出需求数量以外的副本分配到特定的具有相同awareness属性值的节点群中,这种情况下我们可以使用强制awareness的功能。举例说明:

假设我们有一个awareness的属性为zone,而且我们知道只存在两个zone的取值:zone1和zone2.因此我们可以配置这样的一个强制awareness属性:

cluster.routing.allocation.awareness.force.zone.values: zone1, zone2

cluster.routing.allocation.awareness.attributes: zone

现在我们启动两个node.zone:zone1的节点,部署一个5分片1副本的索引,则这两个节点启动后,只会分配5个主分片,一个节点2一个节 点3,但是不会有副本(请注意跟2中的区别,2中是有副本的,因为预先es并不知道会有rack_two的存在)。只有我们启动具有node.zone: zone2的节点,副本才会分配。

4:automatic preference when searching/getting

当执行一个查询或者get操作的时候,节点接受到请求后,会优先在相同属性值的分片上处理请求。

5:realtime settings update

这些配置都可以通过update api进行实时的更新

6:shard allocation filtering

支持用include/exclude过滤器来控制分片的分配。过滤器可以设置在索引级别或者是集群级别。索引级别设置举例:

假设有4个节点,每个节点有tag属性,tag有对应取值:节点1为node.tag: value1, 节点2为node.tag: value2。依次类推。

我们创建一个索引,设置index.routing.allocation.include.tag: value1, value2。

这个配置将索引分配限定在tag值为value1和value2的节点上。

另外,我们可以设置索引部署在所有节点,除了tag为value3的节点,

设置index.routing.allocation.exclude.tag: value3.

index.routing.allocation.require.tag可以设置必须满足的一些规则才能分配,是must all的关系,而inclued 是 any的关系。

include,exclude,require可以支持简单的通配符,例如value*。

另外有一个特殊的属性_ip可以匹配节点的ip,_host可以匹配主机名称也可以匹配ip,_name可以匹配node name,_id可以匹配node id。

显然一个节点可以设置多个属性,并且属性名称和属性值可以在setting中指定。比如:

node.group1: group1_value1
node.group2: group2_value4

同样的,include exclude require 也可以有多个属性:

curl -XPUT localhost:9200/test/_settings -d '{
"index.routing.allocation.include.group1" : "xxx"
"index.routing.allocation.include.group2" : "yyy",
"index.routing.allocation.exclude.group3" : "zzz",

"index.routing.allocation.require.group4" : "aaa",
}'

上边设置的意义是:分片分配要符合这样规则----group4必须为aaa,group3必须不能为zzz,group为xxx或者group2为yyy

以上设置可以通过update api实时改变,当然会触发shard的重新分配。

cluste级别的filter同样可以定义,也可以实时更新。这个设置在删除节点时很有用途(即使副本为0)

curl -XPUT localhost:9200/_cluster/settings -d '{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}'

显然10.0.0.1这个节点将要被删除,其上的分片将会重新分配~

 

http://www.aiuxian.com/article/p-1792959.html

http://rockelixir.iteye.com/blog/1890855

分享到:
评论

相关推荐

    elasticsearch-cluster-runner-2.3.5.0.zip

    kafka-end-2-end-encryption.zip,kafka-end-2-end-encryptionde-/serialization用于完成端到端加密的kafka包装器

    spring-data-elasticsearch

    spring-data-elasticsearch api文档

    install-elasticsearch-cluster.sh

    一键安装elasticsearch脚本,Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集...随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够随之无缝增长。

    elasticsearch_node模块

    elasticsearch_node模块,npm下载的模块,没网可以用下

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    Elasticsearch 开发手册

    在数据抽取 ELT 领域,ES 全家桶 ELK(Elasticsearch+Logstash+Kibana)赫赫有名。 Elasticsearch 基本概念: * 倒排索引:Elasticsearch 为什么快,核心设计理念就是采用了倒排索引机制。倒排索引的方式是,根据 ...

    7.17.1系列Elasticsearch的elasticsearch-analysis-ik分词器

    适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...

    es-head Elasticsearch的可视化操作插件

    es-head是一个针对Elasticsearch的可视化操作插件。它提供了一个便捷的操作工具,可以连接Elasticsearch搜索引擎,并提供可视化的操作页面,对Elasticsearch进行各种设置和数据检索功能的管理。 es-head 插件可以在...

    elasticsearch-8.2.3 windows 版本

    elasticsearch-8.2.3 windows 版本。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的...

    elasticsearch-7.17.6及对应版本IK分词

    elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索...随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够随之无缝增长

    最新版本springboot集成elasticsearch

    一、概述 一般来说我们开发Elasticsearch会选择...2、elasticsearch-head (方便查看ES中的索引及数据) 3、Kibana(方便开发通过rest api 调试ES,有代码提示) 4、中文分词elasticsearch-analysis-ik (ik) 1、下载ela

    Elasticsearch总结.doc

    Elasticsearch 简介 简单描述Elasticsearch Elasticsearch的特性 分布式、全文检索、近实时搜索和分析、高可用、模式自由、restful 讲述Elasticsearch的架构和Elasticsearch 的核心 概念 二、索引数据 单词 文档...

    es docker 部署 elasticsearch.yml

    docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...

    spring整合elasticsearch-2.3.5

    本示例程序主要是spring 整合elasticsearch-2.3.5的实践,测试时先将配置文件es.properties中ES服务端es.ip,es.port, es.cluster 配置替换成自己的服务器信息

    Elasticsearch搭建文档.docx

    /home/elk/es/elasticsearch-2.4.5/bin/elasticsearch >>/home/elk/logs/elasticsearch.log & ``` 或 ``` cd /home/elk/es/elasticsearch-7.5.2/bin ./elasticsearch >>/home/elk/es/logs/elasticsearch.log & ```...

    elasticSearch(ES)最新版 ik分词插件7.10 elasticsearch-analysis-ik-7.10.0

    elasticSearch(ES) 最新版ik分词插件7.10 elasticsearch-analysis-ik-7.10.0

    Packt.Monitoring.ElasticSearch.1784397806.pdf

    This is a step-by-step guide with lots of case studies on solving real-world ElasticSearch cluster issues Book Description ElasticSearch is a distributed search server similar to Apache Solr with a ...

    elasticsearch(es)

    Elasticsearch(ES)是搜索和数据分析领域的技术栈中最流行的开源搜索引擎,它提供了实时搜索、数据分析、数据存储等功能。本文将介绍如何使用Docker容器部署Elasticsearch单点集群和Kibana可视化界面,以及安装IK...

    elasticsearch-head_0.1.5_2021-05-20.crx.zip

    熟悉Elasticsearch的朋友肯定都知道Elasticsearch Head,这是一个elasticsearch的很好用的插件之一,以往elasticsearch5.x之前的版本,对应的Elasticsearch Head的安装相对来说还简单一些,5.x之后安装需要依赖于...

Global site tag (gtag.js) - Google Analytics